{"remainingRequest":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/babel-loader/lib/index.js!/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/cache-loader/dist/cjs.js??ref--1-0!/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/vue-loader/lib/index.js??vue-loader-options!/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/@abi-software/scaffoldvuer/src/components/ScaffoldVuer.vue?vue&type=script&lang=js&","dependencies":[{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/@abi-software/scaffoldvuer/src/components/ScaffoldVuer.vue","mtime":499162500000},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/babel.config.js","mtime":1684261475125},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/babel-loader/lib/index.js","mtime":456789000000},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/vue-loader/lib/index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9UYWJzMiBmcm9tICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay90YWJzLmNzcyI7CmltcG9ydCAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvYmFzZS5jc3MiOwppbXBvcnQgX1RhYnMgZnJvbSAiZWxlbWVudC11aS9saWIvdGFicyI7CmltcG9ydCBfVGFiUGFuZTIgZnJvbSAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvdGFiLXBhbmUuY3NzIjsKaW1wb3J0ICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9iYXNlLmNzcyI7CmltcG9ydCBfVGFiUGFuZSBmcm9tICJlbGVtZW50LXVpL2xpYi90YWItcGFuZSI7CmltcG9ydCBfU2xpZGVyMiBmcm9tICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9zbGlkZXIuY3NzIjsKaW1wb3J0ICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9iYXNlLmNzcyI7CmltcG9ydCBfU2xpZGVyIGZyb20gImVsZW1lbnQtdWkvbGliL3NsaWRlciI7CmltcG9ydCBfU2VsZWN0MiBmcm9tICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9zZWxlY3QuY3NzIjsKaW1wb3J0ICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9iYXNlLmNzcyI7CmltcG9ydCBfU2VsZWN0IGZyb20gImVsZW1lbnQtdWkvbGliL3NlbGVjdCI7CmltcG9ydCBfUm93MiBmcm9tICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9yb3cuY3NzIjsKaW1wb3J0ICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9iYXNlLmNzcyI7CmltcG9ydCBfUm93IGZyb20gImVsZW1lbnQtdWkvbGliL3JvdyI7CmltcG9ydCBfUG9wb3ZlcjIgZnJvbSAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvcG9wb3Zlci5jc3MiOwppbXBvcnQgImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2Jhc2UuY3NzIjsKaW1wb3J0IF9Qb3BvdmVyIGZyb20gImVsZW1lbnQtdWkvbGliL3BvcG92ZXIiOwppbXBvcnQgX09wdGlvbjIgZnJvbSAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvb3B0aW9uLmNzcyI7CmltcG9ydCAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvYmFzZS5jc3MiOwppbXBvcnQgX09wdGlvbiBmcm9tICJlbGVtZW50LXVpL2xpYi9vcHRpb24iOwppbXBvcnQgX0xvYWRpbmcyIGZyb20gImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2xvYWRpbmcuY3NzIjsKaW1wb3J0ICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9iYXNlLmNzcyI7CmltcG9ydCBfTG9hZGluZyBmcm9tICJlbGVtZW50LXVpL2xpYi9sb2FkaW5nIjsKaW1wb3J0IF9Db2wyIGZyb20gImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2NvbC5jc3MiOwppbXBvcnQgImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2Jhc2UuY3NzIjsKaW1wb3J0IF9Db2wgZnJvbSAiZWxlbWVudC11aS9saWIvY29sIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMubnVtYmVyLnRvLWZpeGVkLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5pdGVyYXRvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuaXRlcmF0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIudXJsLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5mb3ItZWFjaC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnB1c2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZXhlYy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5zZWFyY2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qcyI7Ci8qIGVzbGludC1kaXNhYmxlIG5vLWFsZXJ0LCBuby1jb25zb2xlICovCmltcG9ydCBWdWUgZnJvbSAidnVlIjsKaW1wb3J0IE9wYWNpdHlDb250cm9scyBmcm9tICIuL09wYWNpdHlDb250cm9scyI7CmltcG9ydCBTY2FmZm9sZFRvb2x0aXAgZnJvbSAiLi9TY2FmZm9sZFRvb2x0aXAiOwppbXBvcnQgVHJlZUNvbnRyb2xzIGZyb20gIi4vVHJlZUNvbnRyb2xzIjsKaW1wb3J0IHsgTWFwU3ZnSWNvbiwgTWFwU3ZnU3ByaXRlQ29sb3IgfSBmcm9tICJAYWJpLXNvZnR3YXJlL3N2Zy1zcHJpdGUiOwppbXBvcnQgeyBmaW5kT2JqZWN0c1dpdGhOYW1lcywgZ2V0QWxsT2JqZWN0cyB9IGZyb20gIi4uL3NjcmlwdHMvdXRpbGl0aWVzLmpzIjsKaW1wb3J0IHsgU2VhcmNoSW5kZXggfSBmcm9tICIuLi9zY3JpcHRzL3NlYXJjaC5qcyI7CmltcG9ydCBsYW5nIGZyb20gImVsZW1lbnQtdWkvbGliL2xvY2FsZS9sYW5nL2VuIjsKaW1wb3J0IGxvY2FsZSBmcm9tICJlbGVtZW50LXVpL2xpYi9sb2NhbGUiOwpsb2NhbGUudXNlKGxhbmcpOwpWdWUudXNlKF9Db2wpOwpWdWUudXNlKF9Mb2FkaW5nLmRpcmVjdGl2ZSk7ClZ1ZS51c2UoX09wdGlvbik7ClZ1ZS51c2UoX1BvcG92ZXIpOwpWdWUudXNlKF9Sb3cpOwpWdWUudXNlKF9TZWxlY3QpOwpWdWUudXNlKF9TbGlkZXIpOwpWdWUudXNlKF9UYWJQYW5lKTsKVnVlLnVzZShfVGFicyk7CnZhciBPcmdhbnNWaWV3ZXIgPSByZXF1aXJlKCIuLi9zY3JpcHRzL29yZ2Fuc1JlbmRlcmVyIikuT3JnYW5zVmlld2VyOwp2YXIgRXZlbnROb3RpZmllciA9IHJlcXVpcmUoIi4uL3NjcmlwdHMvZXZlbnROb3RpZmllciIpLkV2ZW50Tm90aWZpZXI7CgovKioKICogQSB2dWUgY29tcG9uZW50IG9mIHRoZSBzY2FmZm9sZCB2aWV3ZXIuCiAqCiAqIEByZXF1aXJlcyAuL09wYWNpdHlDb250cm9scy52dWUKICogQHJlcXVpcmVzIC4vVHJlZUNvbnRyb2xzLnZ1ZQogKi8KZXhwb3J0IGRlZmF1bHQgewogIG5hbWU6ICJTY2FmZm9sZFZ1ZXIiLAogIGNvbXBvbmVudHM6IHsKICAgIE1hcFN2Z0ljb246IE1hcFN2Z0ljb24sCiAgICBNYXBTdmdTcHJpdGVDb2xvcjogTWFwU3ZnU3ByaXRlQ29sb3IsCiAgICBPcGFjaXR5Q29udHJvbHM6IE9wYWNpdHlDb250cm9scywKICAgIFNjYWZmb2xkVG9vbHRpcDogU2NhZmZvbGRUb29sdGlwLAogICAgVHJlZUNvbnRyb2xzOiBUcmVlQ29udHJvbHMKICB9LAogIHByb3BzOiB7CiAgICAvKioKICAgICAqIFVSTCBvZiB0aGUgemluY2pzIG1ldGFkYXRhLiBUaGlzIHZhbHVlIHdpbGwgYmUgaWdub3JlZCBpZiBhIHZhbGlkCiAgICAgKiBzdGF0ZSBwcm9wIGlzIGFsc28gcHJvdmlkZWQuCiAgICAgKiBJZiB0aGUgdXJsIG5lZWRzIHRvIGJlIHVwZGF0ZWQgd2l0aCBzdGF0ZSBwcmVzZW50LCBwbGVhc2UgdXNlCiAgICAgKiB0aGUgc2V0VVJMIG1ldGhvZC4KICAgICAqLwogICAgdXJsOiB7CiAgICAgIHR5cGU6IFN0cmluZywKICAgICAgZGVmYXVsdDogIiIKICAgIH0sCiAgICAvKioKICAgICAqIFNob3cgdGhlIGNvbG91ciBjb250cm9sIG9mIHNldCB0byB0cnVlLgogICAgICovCiAgICBzaG93Q29sb3VyUGlja2VyOiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IGZhbHNlCiAgICB9LAogICAgLyoqCiAgICAgKiBGbGFnIHRvIHNob3cvaGlkZSB0aGUgVUkuCiAgICAgKi8KICAgIGRpc3BsYXlVSTogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiB0cnVlCiAgICB9LAogICAgLyoqCiAgICAgKiBEaXNwbGF5IGFsbCBncmFwaGljcyBhdCBzdGFydC4KICAgICAqCiAgICAgKiBUaGlzIHNldHRpbmcgb25seSB3b3JrcyB3aGVuIHRyYWRpdGlvbmFsIGlzIHNldCB0byBmYWxzZS4KICAgICAqLwogICAgZGlzcGxheUF0U3RhcnRVcDogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiB0cnVlCiAgICB9LAogICAgLyoqCiAgICAgKiBVc2UgZm9yIHRvZ2dsaW5nIHRoZSBoZWxwIHRvb2x0aXBzLgogICAgICovCiAgICBoZWxwTW9kZTogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiBmYWxzZQogICAgfSwKICAgIC8qKgogICAgICogVXNlIGZvciBzaG93L2Rpc3BsYXkgYmV0YSB3YXJuaW5nIGljb24uCiAgICAgKi8KICAgIGRpc3BsYXlXYXJuaW5nOiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IHRydWUKICAgIH0sCiAgICAvKioKICAgICAqIFdhcm5pbmcgbWVzc2FnZSBmb3IgdGhlIGhvdmVyZWQgb3ZlciB0ZXh0CiAgICAgKiBvbiB0aGUgd2FybmluZyBpY29uLgogICAgICovCiAgICB3YXJuaW5nTWVzc2FnZTogewogICAgICB0eXBlOiBTdHJpbmcsCiAgICAgIGRlZmF1bHQ6ICJCZXRhIGZlYXR1cmUgLSB1bmRlciBhY3RpdmUgZGV2ZWxvcG1lbnQiCiAgICB9LAogICAgZGlzcGxheUxhdGVzdENoYW5nZXM6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogZmFsc2UKICAgIH0sCiAgICBsYXRlc3RDaGFuZ2VzTWVzc2FnZTogewogICAgICB0eXBlOiBTdHJpbmcsCiAgICAgIGRlZmF1bHQ6ICJOZXcgZmVhdHVyZSAtIExvY2FsIHNlYXJjaCBpcyBub3cgYXZhaWxhYmxlIgogICAgfSwKICAgIC8qKgogICAgICogU2hvdy9oaWRlIHBpY2thYmxlIG1hcmtlcnMgZm9yIHJlZ2lvbnMuCiAgICAgKi8KICAgIGRpc3BsYXlNYXJrZXJzOiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IGZhbHNlCiAgICB9LAogICAgLyoqCiAgICAgKiBTaG93L2hpZGUgbWluaW1hcC4KICAgICAqLwogICAgZGlzcGxheU1pbmltYXA6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogZmFsc2UKICAgIH0sCiAgICAvKioKICAgICAqIEZvcm1hdCBvZiB0aGUgaW5wdXQgVVJMCiAgICAgKi8KICAgIGZvcm1hdDogewogICAgICB0eXBlOiBTdHJpbmcsCiAgICAgIGRlZmF1bHQ6ICJtZXRhZGF0YSIKICAgIH0sCiAgICAvKioKICAgICAqIFNldHRpbmdzIGZvciBtaW5pbWFwIHBvc2l0aW9uLCBzaXplIGFuZCBhbGlnbm1lbnQuCiAgICAgKi8KICAgIG1pbmltYXBTZXR0aW5nczogewogICAgICB0eXBlOiBPYmplY3QsCiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICB4X29mZnNldDogMTYsCiAgICAgICAgICB5X29mZnNldDogMTYsCiAgICAgICAgICB3aWR0aDogMTI4LAogICAgICAgICAgaGVpZ2h0OiAxMjgsCiAgICAgICAgICBhbGlnbjogInRvcC1yaWdodCIKICAgICAgICB9OwogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBTdGF0ZSBjb250YWluaW5nIHN0YXRlIG9mIHRoZSBzY2FmZm9sZC4KICAgICAqLwogICAgc3RhdGU6IHsKICAgICAgdHlwZTogT2JqZWN0LAogICAgICBkZWZhdWx0OiB1bmRlZmluZWQKICAgIH0sCiAgICAvKioKICAgICAqIE9wdGlvbmFsIHByb3AgZm9yIHRoZSBuYW1lIG9mIHRoZSByZWdpb24gdG8gZm9jdXMgb24sCiAgICAgKiB0aGlzIG9wdGlvbiBpcyBpZ25vcmVkIGlmIHN0YXRlIG9yIHZpZXdVUkwgaXMgYWxzbyBwcm92aWRlZC4KICAgICAqLwogICAgcmVnaW9uOiB7CiAgICAgIHR5cGU6IFN0cmluZywKICAgICAgZGVmYXVsdDogIiIKICAgIH0sCiAgICAvKioKICAgICAqIE9wdGlvbmFsIHByb3AgZm9yIGFuIFVSTCBvZiBjb250YWluaW5nIGluZm9ybWF0aW9uIG9mIGEgdmlld3BvcnQuCiAgICAgKiBUaGlzIG9wdGlvbiBpcyBpZ25vcmVkIGlmIHN0YXRlIGlzIGFsc28gcHJvdmlkZWQuCiAgICAgKiBJdCB3aWxsIHVzZSB0aGUgcHJvdmlkZWQgVVJMIGFzIGJhc2UgaWYgYSByZWxhdGl2ZSBwYXJ0aCBpcyBwcm92aWRlZC4KICAgICAqLwogICAgdmlld1VSTDogewogICAgICB0eXBlOiBTdHJpbmcsCiAgICAgIGRlZmF1bHQ6ICIiCiAgICB9LAogICAgLyoqCiAgICAgKiBTZXR0aW5ncyBmb3IgdHVybmluZyBvbi9vZmYgcmVuZGVyaW5nCiAgICAgKi8KICAgIHJlbmRlcjogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiB0cnVlCiAgICB9CiAgfSwKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgcmV0dXJuIHsKICAgICAgc2NlbmVEYXRhOiB0aGlzLiRtb2R1bGUuc2NlbmVEYXRhLAogICAgICBpc1BsYXlpbmc6IGZhbHNlLAogICAgICAvKioKICAgICAgICogVGhpcyBpcyBzZXQgd2hlbiBzY2VuZSBpcyB0cmFuc2l0aW9uaW5nLgogICAgICAgKi8KICAgICAgaXNUcmFuc2l0aW9uaW5nOiBmYWxzZSwKICAgICAgdG9vbHRpcEFwcGVuZFRvQm9keTogZmFsc2UsCiAgICAgIGhvdmVyVmlzaWJpbGl0aWVzOiBbewogICAgICAgIHZhbHVlOiBmYWxzZQogICAgICB9LCB7CiAgICAgICAgdmFsdWU6IGZhbHNlCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogZmFsc2UKICAgICAgfSwgewogICAgICAgIHZhbHVlOiBmYWxzZQogICAgICB9LCB7CiAgICAgICAgdmFsdWU6IGZhbHNlCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogZmFsc2UKICAgICAgfSwgewogICAgICAgIHZhbHVlOiBmYWxzZQogICAgICB9LCB7CiAgICAgICAgdmFsdWU6IGZhbHNlCiAgICAgIH1dLAogICAgICBpbkhlbHA6IGZhbHNlLAogICAgICBsb2FkaW5nOiBmYWxzZSwKICAgICAgZHVyYXRpb246IDMwMDAsCiAgICAgIGRyYXdlck9wZW46IHRydWUsCiAgICAgIGN1cnJlbnRCYWNrZ3JvdW5kOiAid2hpdGUiLAogICAgICBhdmFpbGFibGVCYWNrZ3JvdW5kOiBbIndoaXRlIiwgImxpZ2h0c2t5Ymx1ZSIsICJibGFjayJdLAogICAgICBtaW5pbWlzZWRTbGlkZXI6IGZhbHNlLAogICAgICBzbGlkZXJQb3NpdGlvbjogIiIsCiAgICAgIHRpbWVNYXg6IDEwMCwKICAgICAgb3JnaW5hbER1cmF0aW9uOiAiIiwKICAgICAgYW5pbWF0ZUR1cmF0aW9uOiAiNnNlY3MiLAogICAgICBwbGF5U3BlZWQ6IFt7CiAgICAgICAgdmFsdWU6IDAuMSwKICAgICAgICBsYWJlbDogIjAuMXgiCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogMC41LAogICAgICAgIGxhYmVsOiAiMC41eCIKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAxLAogICAgICAgIGxhYmVsOiAiMXgiCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogMiwKICAgICAgICBsYWJlbDogIjJ4IgogICAgICB9LCB7CiAgICAgICAgdmFsdWU6IDUsCiAgICAgICAgbGFiZWw6ICI1eCIKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAxMCwKICAgICAgICBsYWJlbDogIjEweCIKICAgICAgfV0sCiAgICAgIGN1cnJlbnRTcGVlZDogMSwKICAgICAgdGltZVN0YW1wczoge30sCiAgICAgIGRlZmF1bHRDaGVja2VkS2V5czogW10sCiAgICAgIHREYXRhOiB7CiAgICAgICAgbGFiZWw6ICIiLAogICAgICAgIHJlZ2lvbjogIiIsCiAgICAgICAgdmlzaWJsZTogZmFsc2UsCiAgICAgICAgeDogMjAwLAogICAgICAgIHk6IDIwMAogICAgICB9LAogICAgICBmaWxlRm9ybWF0OiAibWV0YWRhdGEiCiAgICB9OwogIH0sCiAgd2F0Y2g6IHsKICAgIGZvcm1hdDogewogICAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKHZhbHVlKSB7CiAgICAgICAgdGhpcy5maWxlRm9ybWF0ID0gdmFsdWU7CiAgICAgIH0sCiAgICAgIGltbWVkaWF0ZTogdHJ1ZQogICAgfSwKICAgIHVybDogewogICAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKG5ld1ZhbHVlKSB7CiAgICAgICAgaWYgKHRoaXMuc3RhdGUgPT09IHVuZGVmaW5lZCB8fCB0aGlzLnN0YXRlLnVybCA9PT0gdW5kZWZpbmVkKSB0aGlzLnNldFVSTChuZXdWYWx1ZSk7CiAgICAgIH0sCiAgICAgIGltbWVkaWF0ZTogdHJ1ZQogICAgfSwKICAgIHJlZ2lvbjogewogICAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKHJlZ2lvbikgewogICAgICAgIGlmICghKHRoaXMuc3RhdGUgfHwgdGhpcy52aWV3VVJMKSkgdGhpcy5zZXRGb2N1c2VkUmVnaW9uKHJlZ2lvbik7CiAgICAgIH0sCiAgICAgIGltbWVkaWF0ZTogdHJ1ZQogICAgfSwKICAgIHN0YXRlOiB7CiAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoc3RhdGUpIHsKICAgICAgICB0aGlzLnNldFN0YXRlKHN0YXRlKTsKICAgICAgfSwKICAgICAgaW1tZWRpYXRlOiB0cnVlLAogICAgICBkZWVwOiB0cnVlCiAgICB9LAogICAgdmlld1VSTDogewogICAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKHZpZXdVUkwpIHsKICAgICAgICB0aGlzLnVwZGF0ZVZpZXdVUkwodmlld1VSTCk7CiAgICAgIH0sCiAgICAgIGltbWVkaWF0ZTogdHJ1ZQogICAgfSwKICAgIGhlbHBNb2RlOiBmdW5jdGlvbiBoZWxwTW9kZSh2YWwpIHsKICAgICAgdGhpcy5zZXRIZWxwTW9kZSh2YWwpOwogICAgfSwKICAgIGRpc3BsYXlNYXJrZXJzOiBmdW5jdGlvbiBkaXNwbGF5TWFya2Vycyh2YWwpIHsKICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLmRpc3BsYXlNYXJrZXJzID0gdmFsOwogICAgICAvL1VwZGF0ZSBwaWNrYWJsZSBvYmplY3RzCiAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5mb3JjZVBpY2thYmxlT2JqZWN0c1VwZGF0ZSA9IHRydWU7CiAgICB9LAogICAgZGlzcGxheU1pbmltYXA6IGZ1bmN0aW9uIGRpc3BsYXlNaW5pbWFwKHZhbCkgewogICAgICB0aGlzLiRtb2R1bGUuc2NlbmUuZGlzcGxheU1pbmltYXAgPSB2YWw7CiAgICB9LAogICAgInNjZW5lRGF0YS5jdXJyZW50VGltZSI6IGZ1bmN0aW9uIHNjZW5lRGF0YUN1cnJlbnRUaW1lKCkgewogICAgICAvKioKICAgICAgICogVHJpZ2dlcnMgd2hlbiBzY2VuZSB0aW1lIGNoYW5nZXMuCiAgICAgICAqCiAgICAgICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB0aW1lIEN1cnJlbnQgYnVpbGQtaW4gdGltZSBvZiBzY2VuZS4KICAgICAgICogb2Ygc2VsZWN0ZWQgb2JqZWN0LgogICAgICAgKi8KICAgICAgdGhpcy4kZW1pdCgidGltZUNoYW5nZWQiLCB0aGlzLnNjZW5lRGF0YS5jdXJyZW50VGltZSk7CiAgICB9LAogICAgZHVyYXRpb246IGZ1bmN0aW9uIGR1cmF0aW9uKCkgewogICAgICB0aGlzLiRtb2R1bGUuc2NlbmUuc2V0RHVyYXRpb24odGhpcy5kdXJhdGlvbik7CiAgICB9LAogICAgbWluaW1hcFNldHRpbmdzOiB7CiAgICAgIGRlZXA6IHRydWUsCiAgICAgIGhhbmRsZXI6ICJ1cGRhdGVNaW5pbWFwU2Npc3NvciIKICAgIH0sCiAgICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcih2YWwpIHsKICAgICAgdGhpcy50b2dnbGVSZW5kZXJpbmcodmFsKTsKICAgIH0KICB9LAogIGJlZm9yZUNyZWF0ZTogZnVuY3Rpb24gYmVmb3JlQ3JlYXRlKCkgewogICAgdGhpcy4kbW9kdWxlID0gbmV3IE9yZ2Fuc1ZpZXdlcigpOwogICAgdGhpcy5pc1JlYWR5ID0gZmFsc2U7CiAgICB0aGlzLnNlbGVjdGVkT2JqZWN0cyA9IFtdOwogICAgdGhpcy5ob3ZlcmVkT2JqZWN0cyA9IFtdOwogICAgdGhpcy5jdXJyZW50QmFja2dyb3VuZCA9ICJ3aGl0ZSI7CiAgICB0aGlzLl9jdXJyZW50VVJMID0gdW5kZWZpbmVkOwogICAgdGhpcy5hdmFpbGFibGVCYWNrZ3JvdW5kID0gWyJ3aGl0ZSIsICJibGFjayIsICJsaWdodHNreWJsdWUiXTsKICAgIHRoaXMuJF9zZWFyY2hJbmRleCA9IG5ldyBTZWFyY2hJbmRleCgpOwogICAgOwogICAgdGhpcy4kX3RlbXBJZCA9IDE7CiAgfSwKICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkgewogICAgdGhpcy4kcmVmcy50cmVlQ29udHJvbHMuc2V0TW9kdWxlKHRoaXMuJG1vZHVsZSk7CiAgICB2YXIgZXZlbnROb3RpZmllciA9IG5ldyBFdmVudE5vdGlmaWVyKCk7CiAgICBldmVudE5vdGlmaWVyLnN1YnNjcmliZSh0aGlzLCB0aGlzLmV2ZW50Tm90aWZpZXJDYWxsYmFjayk7CiAgICB0aGlzLiRtb2R1bGUuYWRkTm90aWZpZXIoZXZlbnROb3RpZmllcik7CiAgICB0aGlzLiRtb2R1bGUuYWRkT3JnYW5QYXJ0QWRkZWRDYWxsYmFjayh0aGlzLnppbmNPYmplY3RBZGRlZCk7CiAgICB0aGlzLiRtb2R1bGUuaW5pdGlhbGlzZVJlbmRlcmVyKHRoaXMuJHJlZnMuZGlzcGxheSk7CiAgICB0aGlzLnRvZ2dsZVJlbmRlcmluZyh0aGlzLnJlbmRlcik7CiAgICB0aGlzLnJvID0gbmV3IFJlc2l6ZU9ic2VydmVyKHRoaXMuYWRqdXN0TGF5b3V0KS5vYnNlcnZlKHRoaXMuJHJlZnMuc2NhZmZvbGRDb250YWluZXIpOwogICAgdGhpcy5kZWZhdWx0UmF0ZSA9IHRoaXMuJG1vZHVsZS5nZXRQbGF5UmF0ZSgpOwogIH0sCiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSgpIHsKICAgIGlmICh0aGlzLnJvKSB0aGlzLnJvLmRpc2Nvbm5lY3QoKTsKICAgIHRoaXMuJG1vZHVsZS5kZXN0cm95KCk7CiAgICB0aGlzLiRtb2R1bGUgPSB1bmRlZmluZWQ7CiAgfSwKICBtZXRob2RzOiB7CiAgICAvKioKICAgICAqIFRoaXMgaXMgY2FsbGVkIHdoZW4gYSBuZXcgemluYyBvYmplY3QgaXMgcmVhZCBpbnRvIHRoZSBzY2VuZS4KICAgICAqLwogICAgemluY09iamVjdEFkZGVkOiBmdW5jdGlvbiB6aW5jT2JqZWN0QWRkZWQoemluY09iamVjdCkgewogICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTsKICAgICAgemluY09iamVjdC5zZWFyY2hJbmRleElkID0gKyt0aGlzLiRfdGVtcElkOwogICAgICB0aGlzLiRfc2VhcmNoSW5kZXguYWRkWmluY09iamVjdCh6aW5jT2JqZWN0LCB6aW5jT2JqZWN0LnNlYXJjaEluZGV4SWQpOwogICAgICB0aGlzLiRlbWl0KCJ6aW5jLW9iamVjdC1hZGRlZCIsIHppbmNPYmplY3QpOwogICAgfSwKICAgIC8qKgogICAgICogVGhpcyBpcyBjYWxsZWQgd2hlbiBDaGFuZ2UgYmFja2dzcGVlZHJvdW5kIGNvbG91ciBidXR0b24KICAgICAqIGlzIHByZXNzZWQgYW4gY2F1c2VzIHRoZSBiYWNrZ3JvdUNvbG9ybmQgY29sb3VyIHRvIGJlIGNoYW5nZWQKICAgICAqIHRvIG9uZSBvZiB0aGUgdGhyZWUgcHJlc2V0IGNvbG91cjogd2hpdGUsIGJsYWNrIGFuZAogICAgICogbGlnaHRza3libHVlLgogICAgICovCiAgICBiYWNrZ3JvdW5kQ2hhbmdlQ2FsbGJhY2s6IGZ1bmN0aW9uIGJhY2tncm91bmRDaGFuZ2VDYWxsYmFjayhjb2xvdXIpIHsKICAgICAgdGhpcy5jdXJyZW50QmFja2dyb3VuZCA9IGNvbG91cjsKICAgICAgdGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlci5nZXRUaHJlZUpTUmVuZGVyZXIoKS5zZXRDbGVhckNvbG9yKHRoaXMuY3VycmVudEJhY2tncm91bmQsIDEpOwogICAgfSwKICAgIC8qKgogICAgICogVGhpcyBpcyBjYWxsZWQgYnkgY2FwdHVlZVNjcmVlbnNob3QgYW5kIGFmdGVyIHRoZSBsYXN0IHJlbmRlcgogICAgICogbG9vcCwgaXQgZG93bmxvYWQgYSBzY3JlZW5zaG90IG9mIHRoZSBjdXJyZW50IHNjZW5lIHdpdGggbm8gVUkuCiAgICAgKi8KICAgIGNhcHR1cmVTY3JlZW5zaG90Q2FsbGJhY2s6IGZ1bmN0aW9uIGNhcHR1cmVTY3JlZW5zaG90Q2FsbGJhY2soKSB7CiAgICAgIC8vUmVtb3ZlIHRoZSBjYWxsYmFjaywgb25seSBuZWVkcyB0byBoYXBwZW4gb25jZQogICAgICB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyLnJlbW92ZVBvc3RSZW5kZXJDYWxsYmFja0Z1bmN0aW9uKHRoaXMuY2FwdHVyZUlEKTsKICAgICAgdmFyIHNjcmVlbnNob3QgPSB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyLmdldFRocmVlSlNSZW5kZXJlcigpLmRvbUVsZW1lbnQudG9EYXRhVVJMKCJpbWFnZS9wbmciKTsKICAgICAgdmFyIGhyZWZFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpOwogICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZChocmVmRWxlbWVudCk7CiAgICAgIGlmICghdGhpcy5jYXB0dXJlRmlsZW5hbWUpIGhyZWZFbGVtZW50LmRvd25sb2FkID0gInNjcmVlbnNob3QucG5nIjtlbHNlIGhyZWZFbGVtZW50LmRvd25sb2FkID0gdGhpcy5jYXB0dXJlRmlsZW5hbWU7CiAgICAgIGhyZWZFbGVtZW50LmhyZWYgPSBzY3JlZW5zaG90OwogICAgICBocmVmRWxlbWVudC5jbGljaygpOwogICAgICBocmVmRWxlbWVudC5yZW1vdmUoKTsKICAgIH0sCiAgICAvKioKICAgICAqIEZ1bmN0aW9uIGZvciBjYXB0dXJpbmcgYSBzY3JlZW5zaG90IG9mIHRoZSBjdXJyZW50IHJlbmRlcmluZy4KICAgICAqCiAgICAgKiBAcGFyYW0ge1N0cmluZ30gZmlsZW5hbWUgZmlsZW5hbWUgZ2l2ZW4gdG8gdGhlIHNjcmVlbnNob3QuCiAgICAgKgogICAgICogQHB1YmxpYwogICAgICovCiAgICBjYXB0dXJlU2NyZWVuc2hvdDogZnVuY3Rpb24gY2FwdHVyZVNjcmVlbnNob3QoZmlsZW5hbWUpIHsKICAgICAgdGhpcy5jYXB0dXJlRmlsZW5hbWUgPSBmaWxlbmFtZTsKICAgICAgdGhpcy5jYXB0dXJlSUQgPSB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyLmFkZFBvc3RSZW5kZXJDYWxsYmFja0Z1bmN0aW9uKHRoaXMuY2FwdHVyZVNjcmVlbnNob3RDYWxsYmFjayk7CiAgICB9LAogICAgZm9ybWF0VG9vbHRpcDogZnVuY3Rpb24gZm9ybWF0VG9vbHRpcCh2YWwpIHsKICAgICAgaWYgKHRoaXMudGltZU1heCA+PSAxMDAwKSB7CiAgICAgICAgaWYgKHZhbCkgewogICAgICAgICAgdmFyIHNlYyA9ICh2YWwgJSA2MDAwMCAvIDEwMDApLnRvRml4ZWQoMikgKyAicyI7CiAgICAgICAgICB2YXIgbWluID0gdmFsID4gNjAwMDAgPyAodmFsIC8gNjAwMDApLnRvRml4ZWQoMCkgKyAibSAiIDogIiI7CiAgICAgICAgICByZXR1cm4gbWluICsgc2VjOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gdmFsID8gdmFsLnRvRml4ZWQoMikgKyAiIG1zIiA6ICIwIG1zIjsKICAgIH0sCiAgICAvKioKICAgICAqIEZ1bmN0aW9uIHRvIHJlc2V0IHRoZSB2aWV3IHRvIGRlZmF1bHQuCiAgICAgKiBBbHNvIGNhbGxlZCB3aGVuIHRoZSBhc3NvY2lhdGVkIGJ1dHRvbiBpcyBwcmVzc2VkLgogICAgICoKICAgICAqIEBwdWJsaWMKICAgICAqLwogICAgZml0V2luZG93OiBmdW5jdGlvbiBmaXRXaW5kb3coKSB7CiAgICAgIGlmICh0aGlzLiRtb2R1bGUuc2NlbmUpIHsKICAgICAgICB0aGlzLiRtb2R1bGUuc2NlbmUudmlld0FsbCgpOwogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBGdW5jdGlvbiB0byB6b29tIGluLgogICAgICogQWxzbyBjYWxsZWQgd2hlbiB0aGUgYXNzb2NpYXRlZCBidXR0b24gaXMgcHJlc3NlZC4KICAgICAqCiAgICAgKiBAcHVibGljCiAgICAgKi8KICAgIHpvb21JbjogZnVuY3Rpb24gem9vbUluKCkgewogICAgICBpZiAodGhpcy4kbW9kdWxlLnNjZW5lKSB7CiAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLmNoYW5nZVpvb21CeVNjcm9sbFJhdGVVbml0KC0xKTsKICAgICAgfQogICAgfSwKICAgIC8qKgogICAgICogRnVuY3Rpb24gdG8gem9vbSBvdXQuCiAgICAgKiBBbHNvIGNhbGxlZCB3aGVuIHRoZSBhc3NvY2lhdGVkIGJ1dHRvbiBpcyBwcmVzc2VkLgogICAgICoKICAgICAqIEBwdWJsaWMKICAgICAqLwogICAgem9vbU91dDogZnVuY3Rpb24gem9vbU91dCgpIHsKICAgICAgaWYgKHRoaXMuJG1vZHVsZS5zY2VuZSkgewogICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5jaGFuZ2Vab29tQnlTY3JvbGxSYXRlVW5pdCgxKTsKICAgICAgfQogICAgfSwKICAgIC8qKgogICAgICogRnVuY3Rpb24gdG8gY2hhbmdlIHRoZSBjdXJyZW50IHBsYXkgc3BlZWQuCiAgICAgKgogICAgICogQHB1YmxpYwogICAgICovCiAgICBzcGVlZENoYW5nZWQ6IGZ1bmN0aW9uIHNwZWVkQ2hhbmdlZChzcGVlZCkgewogICAgICB0aGlzLmN1cnJlbnRTcGVlZCA9IHNwZWVkOwogICAgICB0aGlzLiRtb2R1bGUuc2V0UGxheVJhdGUodGhpcy5kZWZhdWx0UmF0ZSAqIHRoaXMuY3VycmVudFNwZWVkKTsKICAgIH0sCiAgICAvKioKICAgICAqIEZ1bmN0aW9uIHVzZWQgdG8gc3RvcCB0aGUgZnJlZSBzcGluCiAgICAgKgogICAgICogQHB1YmxpYwogICAgICovCiAgICBzdG9wRnJlZVNwaW46IGZ1bmN0aW9uIHN0b3BGcmVlU3BpbigpIHsKICAgICAgdmFyIGNhbWVyYWNvbnRyb2wgPSB0aGlzLiRtb2R1bGUuc2NlbmUuZ2V0WmluY0NhbWVyYUNvbnRyb2xzKCk7CiAgICAgIGNhbWVyYWNvbnRyb2wuc3RvcEF1dG9UdW1ibGUoKTsKICAgICAgdGhpcy5pc1RyYW5zaXRpb25pbmcgPSBmYWxzZTsKICAgIH0sCiAgICBmaW5kT2JqZWN0c1dpdGhHcm91cE5hbWU6IGZ1bmN0aW9uIGZpbmRPYmplY3RzV2l0aEdyb3VwTmFtZShuYW1lKSB7CiAgICAgIHZhciBvYmplY3RzID0gW107CiAgICAgIGlmIChuYW1lICYmIG5hbWUgIT0gIiIgJiYgdGhpcy4kbW9kdWxlLnNjZW5lKSB7CiAgICAgICAgb2JqZWN0cyA9IHRoaXMuJG1vZHVsZS5zY2VuZS5maW5kT2JqZWN0c1dpdGhHcm91cE5hbWUobmFtZSk7CiAgICAgIH0KICAgICAgcmV0dXJuIG9iamVjdHM7CiAgICB9LAogICAgLyoqCiAgICAgKiBGb2N1cyBvbiBuYW1lZCByZWdpb24KICAgICAqLwogICAgdmlld1JlZ2lvbjogZnVuY3Rpb24gdmlld1JlZ2lvbihuYW1lcykgewogICAgICB2YXIgcm9vdFJlZ2lvbiA9IHRoaXMuJG1vZHVsZS5zY2VuZS5nZXRSb290UmVnaW9uKCk7CiAgICAgIHZhciBncm91cHMgPSBBcnJheS5pc0FycmF5KG5hbWVzKSA/IG5hbWVzIDogW25hbWVzXTsKICAgICAgdmFyIG9iamVjdHMgPSBmaW5kT2JqZWN0c1dpdGhOYW1lcyhyb290UmVnaW9uLCBncm91cHMsICIiLCB0cnVlKTsKICAgICAgdmFyIGJveCA9IHRoaXMuJG1vZHVsZS5zY2VuZS5nZXRCb3VuZGluZ0JveE9mWmluY09iamVjdHMob2JqZWN0cyk7CiAgICAgIGlmIChib3gpIHsKICAgICAgICBpZiAodGhpcy4kbW9kdWxlLmlzU3luY0NvbnRyb2woKSkgewogICAgICAgICAgdGhpcy4kbW9kdWxlLnNldFN5bmNDb250cm9sWm9vbVRvQm94KGJveCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHZhciBkaXN0ID0gdGhpcy4kbW9kdWxlLnNjZW5lLmNhbWVyYS5mYXIgLSB0aGlzLiRtb2R1bGUuc2NlbmUuY2FtZXJhLm5lYXI7CiAgICAgICAgICB0aGlzLiRtb2R1bGUuc2NlbmUudmlld0FsbFdpdGhCb3VuZGluZ0JveChib3gpOwogICAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLmNhbWVyYS5mYXIgPSB0aGlzLiRtb2R1bGUuc2NlbmUuY2FtZXJhLm5lYXIgKyBkaXN0OwogICAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLmNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0cnVlOwogICAgICB9CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0sCiAgICBzZXRGb2N1c2VkUmVnaW9uOiBmdW5jdGlvbiBzZXRGb2N1c2VkUmVnaW9uKG5hbWUpIHsKICAgICAgaWYgKG5hbWUpIHsKICAgICAgICBpZiAodGhpcy5pc1JlYWR5KSB7CiAgICAgICAgICB0aGlzLnZpZXdSZWdpb24obmFtZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuJG1vZHVsZS5zZXRGaW5pc2hEb3dubG9hZENhbGxiYWNrKHRoaXMuc2V0VVJMRmluaXNoQ2FsbGJhY2soewogICAgICAgICAgICByZWdpb246IG5hbWUKICAgICAgICAgIH0pKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICB1cGRhdGVWaWV3VVJMOiBmdW5jdGlvbiB1cGRhdGVWaWV3VVJMKHZpZXdVUkwpIHsKICAgICAgaWYgKHZpZXdVUkwpIHsKICAgICAgICBpZiAodGhpcy5pc1JlYWR5KSB7CiAgICAgICAgICB2YXIgdXJsID0gbmV3IFVSTCh2aWV3VVJMLCB0aGlzLnVybCk7CiAgICAgICAgICB0aGlzLiRtb2R1bGUuc2NlbmUubG9hZFZpZXdVUkwodXJsKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhpcy4kbW9kdWxlLnNldEZpbmlzaERvd25sb2FkQ2FsbGJhY2sodGhpcy5zZXRVUkxGaW5pc2hDYWxsYmFjayh7CiAgICAgICAgICAgIHZpZXdVUkw6IHZpZXdVUkwKICAgICAgICAgIH0pKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICBnZXRSZW5kZXJlckluZm86IGZ1bmN0aW9uIGdldFJlbmRlcmVySW5mbygpIHsKICAgICAgaWYgKHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIpIHsKICAgICAgICByZXR1cm4gdGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlci5nZXRUaHJlZUpTUmVuZGVyZXIoKS5pbmZvOwogICAgICB9CiAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICB9LAogICAgLyoqCiAgICAgKiBGdW5jdGlvbiB1c2VkIHRvIHJvdGF0ZSB0aGUgc2NlbmUuCiAgICAgKiBBbHNvIGNhbGxlZCB3aGVuIHRoZSBhc3NvY2lhdGVkIGJ1dHRvbiBpcyBwcmVzc2VkLgogICAgICoKICAgICAqIEBwdWJsaWMKICAgICAqLwogICAgZnJlZVNwaW46IGZ1bmN0aW9uIGZyZWVTcGluKCkgewogICAgICBpZiAodGhpcy4kbW9kdWxlLnNjZW5lKSB7CiAgICAgICAgdmFyIGNhbWVyYWNvbnRyb2wgPSB0aGlzLiRtb2R1bGUuc2NlbmUuZ2V0WmluY0NhbWVyYUNvbnRyb2xzKCk7CiAgICAgICAgdGhpcy5pc1RyYW5zaXRpb25pbmcgPSB0cnVlOwogICAgICAgIGNhbWVyYWNvbnRyb2wuZW5hYmxlQXV0b1R1bWJsZSgpOwogICAgICAgIGNhbWVyYWNvbnRyb2wuYXV0b1R1bWJsZShbMS4wLCAwLjBdLCBNYXRoLlBJLCB0cnVlKTsKICAgICAgICBzZXRUaW1lb3V0KHRoaXMuc3RvcEZyZWVTcGluLCA0MDAwKTsKICAgICAgfQogICAgfSwKICAgIC8qKgogICAgICogQ2FsbGJhY2sgd2hlbiBhIHJlZ2lvbiBpcyBzZWxlY3RlZC9oaWdobGlnaHRlZC4KICAgICAqIEl0IHdpbGwgYWxzbyB1cGRhdGUgb3RoZXIgY29udHJvbHMuCiAgICAgKiAKICAgICAqLwogICAgZXZlbnROb3RpZmllckNhbGxiYWNrOiBmdW5jdGlvbiBldmVudE5vdGlmaWVyQ2FsbGJhY2soZXZlbnQpIHsKICAgICAgdmFyIG5hbWVzID0gW107CiAgICAgIHZhciB6aW5jT2JqZWN0cyA9IFtdOwogICAgICB2YXIgcmVnaW9uID0gdW5kZWZpbmVkOwogICAgICBpZiAoZXZlbnQuZXZlbnRUeXBlID09IDEgfHwgZXZlbnQuZXZlbnRUeXBlID09IDIpIHsKICAgICAgICBldmVudC5pZGVudGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChpZGVudGlmaWVyKSB7CiAgICAgICAgICBpZiAoaWRlbnRpZmllcikgewogICAgICAgICAgICB2YXIgaWQgPSBpZGVudGlmaWVyLmRhdGEuaWQgPyBpZGVudGlmaWVyLmRhdGEuaWQgOiBpZGVudGlmaWVyLmRhdGEuZ3JvdXA7CiAgICAgICAgICAgIG5hbWVzLnB1c2goaWQpOwogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIHppbmNPYmplY3RzID0gZXZlbnQuemluY09iamVjdHM7CiAgICAgIH0KICAgICAgLyoKICAgICAgICogRXZlbnQgVHlwZSAxOiBTZWxlY3RlZAogICAgICAgKiBFdmVudCBUeXBlIDI6IEhpZ2hsaWdodGVkCiAgICAgICAqIEV2ZW50IFR5cGUgMTogTW92ZQogICAgICAgKi8KICAgICAgaWYgKGV2ZW50LmV2ZW50VHlwZSA9PSAxKSB7CiAgICAgICAgaWYgKHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzKSB7CiAgICAgICAgICBpZiAobmFtZXMubGVuZ3RoID4gMCkgewogICAgICAgICAgICAvL3RoaXMuJHJlZnMudHJlZUNvbnRyb2xzLmNoYW5nZUFjdGl2ZUJ5TmFtZXMobmFtZXMsIHJlZ2lvbiwgZmFsc2UpOwogICAgICAgICAgICB0aGlzLiRyZWZzLnRyZWVDb250cm9scy51cGRhdGVBY3RpdmVVSSh6aW5jT2JqZWN0cyk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aGlzLmhpZGVSZWdpb25Ub29sdGlwKCk7CiAgICAgICAgICAgIHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLnJlbW92ZUFjdGl2ZSh0cnVlKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLy8gVHJpZ2dlcnMgd2hlbiBhbiBvYmplY3QgaGFzIGJlZW4gc2VsZWN0ZWQKICAgICAgICB0aGlzLiRlbWl0KCJzY2FmZm9sZC1zZWxlY3RlZCIsIGV2ZW50LmlkZW50aWZpZXJzKTsKICAgICAgfSBlbHNlIGlmIChldmVudC5ldmVudFR5cGUgPT0gMikgewogICAgICAgIGlmICh0aGlzLnNlbGVjdGVkT2JqZWN0cy5sZW5ndGggPT09IDApIHsKICAgICAgICAgIHRoaXMuaGlkZVJlZ2lvblRvb2x0aXAoKTsKICAgICAgICAgIC8vIGNvbnN0IG9mZnNldHMgPSB0aGlzLiRyZWZzLnNjYWZmb2xkQ29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICAgaWYgKHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzKSB7CiAgICAgICAgICAgIGlmIChuYW1lcy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgLy90aGlzLiRyZWZzLnRyZWVDb250cm9scy5jaGFuZ2VIb3ZlckJ5TmFtZXMobmFtZXMsIHJlZ2lvbiwgZmFsc2UpOwogICAgICAgICAgICAgIHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLnVwZGF0ZUhvdmVyVUkoemluY09iamVjdHMpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLnJlbW92ZUhvdmVyKHRydWUpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoZXZlbnQuaWRlbnRpZmllcnMubGVuZ3RoID4gMCAmJiBldmVudC5pZGVudGlmaWVyc1swXSkgewogICAgICAgICAgICB2YXIgaWQgPSBldmVudC5pZGVudGlmaWVyc1swXS5kYXRhLmlkID8gZXZlbnQuaWRlbnRpZmllcnNbMF0uZGF0YS5pZCA6IGV2ZW50LmlkZW50aWZpZXJzWzBdLmRhdGEuZ3JvdXA7CiAgICAgICAgICAgIGlmIChldmVudC5pZGVudGlmaWVyc1swXS5jb29yZHMpIHsKICAgICAgICAgICAgICB0aGlzLnREYXRhLnZpc2libGUgPSB0cnVlOwogICAgICAgICAgICAgIHRoaXMudERhdGEubGFiZWwgPSBpZDsKICAgICAgICAgICAgICBpZiAoZXZlbnQuaWRlbnRpZmllcnNbMF0uZGF0YS5yZWdpb24pIHRoaXMudERhdGEucmVnaW9uID0gZXZlbnQuaWRlbnRpZmllcnNbMF0uZGF0YS5yZWdpb247ZWxzZSB0aGlzLnREYXRhLnJlZ2lvbiA9ICJSb290IjsKICAgICAgICAgICAgICB0aGlzLnREYXRhLnggPSBldmVudC5pZGVudGlmaWVyc1swXS5jb29yZHMueDsKICAgICAgICAgICAgICB0aGlzLnREYXRhLnkgPSBldmVudC5pZGVudGlmaWVyc1swXS5jb29yZHMueTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgLy8gVHJpZ2dlcnMgd2hlbiBhbiBvYmplY3QgaGFzIGJlZW4gaGlnaGxpZ2h0ZWQKICAgICAgICAgIHRoaXMuJGVtaXQoInNjYWZmb2xkLWhpZ2hsaWdodGVkIiwgZXZlbnQuaWRlbnRpZmllcnMpOwogICAgICAgIH0KICAgICAgfSBlbHNlIGlmIChldmVudC5ldmVudFR5cGUgPT0gMykgewogICAgICAgIC8vTU9WRQogICAgICAgIGlmIChldmVudC5pZGVudGlmaWVycy5sZW5ndGggPiAwICYmIGV2ZW50LmlkZW50aWZpZXJzWzBdKSB7CiAgICAgICAgICBpZiAoZXZlbnQuaWRlbnRpZmllcnNbMF0uY29vcmRzKSB7CiAgICAgICAgICAgIHZhciBvZmZzZXRzID0gdGhpcy4kcmVmcy5zY2FmZm9sZENvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICAgICAgdGhpcy50RGF0YS54ID0gZXZlbnQuaWRlbnRpZmllcnNbMF0uY29vcmRzLnggLSBvZmZzZXRzLmxlZnQ7CiAgICAgICAgICAgIHRoaXMudERhdGEueSA9IGV2ZW50LmlkZW50aWZpZXJzWzBdLmNvb3Jkcy55IC0gb2Zmc2V0cy50b3A7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBHZXQgdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBjdXJyZW50IHNlbGVjdGVkIHJlZ2lvbi4KICAgICAqCiAgICAgKiBAcHVibGljCiAgICAgKi8KICAgIGdldENvb3JkaW5hdGVzT2ZTZWxlY3RlZDogZnVuY3Rpb24gZ2V0Q29vcmRpbmF0ZXNPZlNlbGVjdGVkKCkgewogICAgICBpZiAodGhpcy5zZWxlY3RlZE9iamVjdHMgJiYgdGhpcy5zZWxlY3RlZE9iamVjdHMubGVuZ3RoID4gMCkgewogICAgICAgIHJldHVybiB0aGlzLiRtb2R1bGUuc2NlbmUuZ2V0T2JqZWN0c1NjcmVlblhZKHRoaXMuc2VsZWN0ZWRPYmplY3RzKTsKICAgICAgfQogICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgfSwKICAgIC8qKgogICAgICogUmV0dXJuIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSB3aW5kb3cgY29vcmRpbmF0ZXMgb2YgdGhlCiAgICAgKiBjdXJyZW50IHNlbGVjdGVkIHJlZ2lvbiB3aGljaCB3aWxsIGJlIHVwZGF0ZWQgYWZ0ZXIgZWFjaCByZW5kZXIKICAgICAqIGxvb3AuCiAgICAgKgogICAgICogQHB1YmxpYwogICAgICovCiAgICBnZXREeW5hbWljU2VsZWN0ZWRDb29yZGluYXRlczogZnVuY3Rpb24gZ2V0RHluYW1pY1NlbGVjdGVkQ29vcmRpbmF0ZXMoKSB7CiAgICAgIHJldHVybiB0aGlzLiRtb2R1bGUuc2VsZWN0ZWRTY3JlZW5Db29yZGluYXRlczsKICAgIH0sCiAgICAvKioKICAgICAqIENhbGxiYWNrIHdoZW4gdGltZSBpcyBjaGFuZ2VkIHRocm91Z2ggdGhlIFVJLgogICAgICovCiAgICB0aW1lQ2hhbmdlOiBmdW5jdGlvbiB0aW1lQ2hhbmdlKGV2ZW50KSB7CiAgICAgIHZhciBub3JtYWxpemVkVGltZSA9IGV2ZW50IC8gdGhpcy50aW1lTWF4ICogMTAwOwogICAgICBpZiAobm9ybWFsaXplZFRpbWUgIT0gdGhpcy5zY2VuZURhdGEuY3VycmVudFRpbWUpIHRoaXMuJG1vZHVsZS51cGRhdGVUaW1lKG5vcm1hbGl6ZWRUaW1lKTsKICAgIH0sCiAgICAvKioKICAgICAqIEEgY2FsbGJhY2sgdXNlZCBieSBjaGlsZHJlbiBjb21wb25lbnRzLiBTZXQgdGhlIHNlbGVjdGVkIHppbmMgb2JqZWN0CiAgICAgKgogICAgICogQHBhcmFtIHtvYmplY3R9IG9iamVjdCBaaW5jIG9iamVjdAogICAgICovCiAgICBvYmplY3RTZWxlY3RlZDogZnVuY3Rpb24gb2JqZWN0U2VsZWN0ZWQob2JqZWN0cywgcHJvcGFnYXRlKSB7CiAgICAgIHRoaXMuc2VsZWN0ZWRPYmplY3RzID0gb2JqZWN0czsKICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRPYmplY3RzICYmIHRoaXMuc2VsZWN0ZWRPYmplY3RzLmxlbmd0aCA+IDApIHRoaXMuJHJlZnMub3BhY2l0eUNvbnRyb2wuc2V0T2JqZWN0KHRoaXMuc2VsZWN0ZWRPYmplY3RzWzBdKTsKICAgICAgdGhpcy4kbW9kdWxlLnNldFNlbGVjdGVkQnlaaW5jT2JqZWN0cyhvYmplY3RzLCB1bmRlZmluZWQsIHByb3BhZ2F0ZSk7CiAgICB9LAogICAgLyoqCiAgICAgKiBBIGNhbGxiYWNrIHVzZWQgYnkgY2hpbGRyZW4gY29tcG9uZW50cy4gU2V0IHRoZSBoaWdobGlnaHRlZCB6aW5jIG9iamVjdAogICAgICoKICAgICAqIEBwYXJhbSB7b2JqZWN0fSBvYmplY3QgWmluYyBvYmplY3QKICAgICAqLwogICAgb2JqZWN0SG92ZXJlZDogZnVuY3Rpb24gb2JqZWN0SG92ZXJlZChvYmplY3RzLCBwcm9wYWdhdGUpIHsKICAgICAgdGhpcy5ob3ZlcmVkT2JqZWN0cyA9IG9iamVjdHM7CiAgICAgIHRoaXMuJG1vZHVsZS5zZXRIaWdobGlnaHRlZEJ5WmluY09iamVjdHMob2JqZWN0cywgdW5kZWZpbmVkLCBwcm9wYWdhdGUpOwogICAgfSwKICAgIC8qKgogICAgICogU2V0IHRoZSBzZWxlY3RlZCBieSBuYW1lLgogICAgICoKICAgICAqIEBwYXJhbSB7fSBuYW1lIE5hbWUgb2YgdGhlIGdyb3VwCiAgICAgKi8KICAgIGNoYW5nZUFjdGl2ZUJ5TmFtZTogZnVuY3Rpb24gY2hhbmdlQWN0aXZlQnlOYW1lKG5hbWVzLCByZWdpb24sIHByb3BhZ2F0ZSkgewogICAgICB2YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkobmFtZXMpOwogICAgICBpZiAobmFtZXMgPT09IHVuZGVmaW5lZCB8fCBpc0FycmF5ICYmIG5hbWVzLmxlbmd0aCA9PT0gMCkgewogICAgICAgIHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLnJlbW92ZUFjdGl2ZShwcm9wYWdhdGUpOwogICAgICB9IGVsc2UgewogICAgICAgIHZhciBhcnJheSA9IG5hbWVzOwogICAgICAgIGlmICghaXNBcnJheSkgYXJyYXkgPSBbYXJyYXldOwogICAgICAgIHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLmNoYW5nZUFjdGl2ZUJ5TmFtZXMoYXJyYXksIHJlZ2lvbiwgcHJvcGFnYXRlKTsKICAgICAgfQogICAgfSwKICAgIC8qKgogICAgICogU2V0IHRoZSBoaWdobGlnaHRlZCBieSBuYW1lLgogICAgICoKICAgICAqIEBwYXJhbSB7bmFtZX0gbmFtZSBOYW1lIG9mIHRoZSBncm91cAogICAgICovCiAgICBjaGFuZ2VIaWdobGlnaHRlZEJ5TmFtZTogZnVuY3Rpb24gY2hhbmdlSGlnaGxpZ2h0ZWRCeU5hbWUobmFtZXMsIHJlZ2lvbiwgcHJvcGFnYXRlKSB7CiAgICAgIHZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheShuYW1lcyk7CiAgICAgIGlmIChuYW1lcyA9PT0gdW5kZWZpbmVkIHx8IGlzQXJyYXkgJiYgbmFtZXMubGVuZ3RoID09PSAwKSB7CiAgICAgICAgdGhpcy4kcmVmcy50cmVlQ29udHJvbHMucmVtb3ZlSG92ZXIocHJvcGFnYXRlKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB2YXIgYXJyYXkgPSBuYW1lczsKICAgICAgICBpZiAoIWlzQXJyYXkpIGFycmF5ID0gW2FycmF5XTsKICAgICAgICB0aGlzLiRyZWZzLnRyZWVDb250cm9scy5jaGFuZ2VIb3ZlckJ5TmFtZXMoYXJyYXksIHJlZ2lvbiwgcHJvcGFnYXRlKTsKICAgICAgfQogICAgfSwKICAgIC8qKgogICAgICogU3RhcnQgdGhlIGFuaW1hdGlvbi4KICAgICAqCiAgICAgKiBAcGFyYW0ge29iamVjdH0gb2JqZWN0IFppbmMgb2JqZWN0CiAgICAgKi8KICAgIHBsYXk6IGZ1bmN0aW9uIHBsYXkoZmxhZykgewogICAgICB0aGlzLiRtb2R1bGUucGxheUFuaW1hdGlvbihmbGFnKTsKICAgICAgdGhpcy5pc1BsYXlpbmcgPSBmbGFnOwogICAgICAvL0hpZGUgdG9vbHRpcCBhcyBsb2NhdGlvbiBtYXkKICAgICAgLy90aGlzLmhpZGVSZWdpb25Ub29sdGlwKCk7CiAgICB9LAoKICAgIC8qKgogICAgICogRnVuY3Rpb24gdG8gdG9nZ2xlIG9uL29mZiBvdmVybGF5IGhlbHAuCiAgICAgKi8KICAgIHNldEhlbHBNb2RlOiBmdW5jdGlvbiBzZXRIZWxwTW9kZShoZWxwTW9kZSkgewogICAgICBpZiAoaGVscE1vZGUpIHsKICAgICAgICB0aGlzLmluSGVscCA9IHRydWU7CiAgICAgICAgdGhpcy5ob3ZlclZpc2liaWxpdGllcy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICBpdGVtLnZhbHVlID0gdHJ1ZTsKICAgICAgICB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLmluSGVscCA9IGZhbHNlOwogICAgICAgIHRoaXMuaG92ZXJWaXNpYmlsaXRpZXMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgaXRlbS52YWx1ZSA9IGZhbHNlOwogICAgICAgIH0pOwogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBDYWxsYmFjayBmdW5jdGlvbiB1c2VkIGJ5IHNob3dSZWdpb25Ub29sdGlwIGluIHRoZSBjYXNlIHdoZW4gdGhlIHRvb2x0aXAKICAgICAqIGlzIG91dCBvZiB2aWV3LgogICAgICovCiAgICBkaXNwbGF5VG9vbHRpcE9mT2JqZWN0c0NhbGxiYWNrOiBmdW5jdGlvbiBkaXNwbGF5VG9vbHRpcE9mT2JqZWN0c0NhbGxiYWNrKG5hbWUsIG9iamVjdHMsIHJlc2V0VmlldywgbGl2ZVVwZGF0ZXMpIHsKICAgICAgdmFyIGluc3RhbmNlID0gdGhpczsKICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKICAgICAgICBpbnN0YW5jZS4kbW9kdWxlLnppbmNSZW5kZXJlci5yZW1vdmVQb3N0UmVuZGVyQ2FsbGJhY2tGdW5jdGlvbihpbnN0YW5jZS4kX3JlZ2lvblRvb2x0aXBDYWxsYmFjayk7CiAgICAgICAgaW5zdGFuY2UuJF9yZWdpb25Ub29sdGlwQ2FsbGJhY2sgPSB1bmRlZmluZWQ7CiAgICAgICAgaW5zdGFuY2UuZGlzcGxheVRvb2x0aXBPZk9iamVjdHMobmFtZSwgb2JqZWN0cywgcmVzZXRWaWV3LCBsaXZlVXBkYXRlcyk7CiAgICAgIH07CiAgICB9LAogICAgbGl2ZVVwZGF0ZVRvb2x0aXBQb3NpdGlvbjogZnVuY3Rpb24gbGl2ZVVwZGF0ZVRvb2x0aXBQb3NpdGlvbigpIHsKICAgICAgaWYgKHRoaXMuJG1vZHVsZS5zZWxlY3RlZENlbnRlcikgewogICAgICAgIHRoaXMudERhdGEueCA9IHRoaXMuJG1vZHVsZS5zZWxlY3RlZFNjcmVlbkNvb3JkaW5hdGVzLng7CiAgICAgICAgdGhpcy50RGF0YS55ID0gdGhpcy4kbW9kdWxlLnNlbGVjdGVkU2NyZWVuQ29vcmRpbmF0ZXMueTsKICAgICAgfQogICAgfSwKICAgIGRpc3BsYXlUb29sdGlwT2ZPYmplY3RzOiBmdW5jdGlvbiBkaXNwbGF5VG9vbHRpcE9mT2JqZWN0cyhuYW1lLCBvYmplY3RzLCByZXNldFZpZXcsIGxpdmVVcGRhdGVzKSB7CiAgICAgIGlmIChvYmplY3RzLmxlbmd0aCA+IDApIHsKICAgICAgICB2YXIgY29vcmRzID0gb2JqZWN0c1swXS5nZXRDbG9zZXN0VmVydGV4RE9NRWxlbWVudENvb3Jkcyh0aGlzLiRtb2R1bGUuc2NlbmUpOwogICAgICAgIGlmIChjb29yZHMpIHsKICAgICAgICAgIC8vVGhlIGNvb3JkcyBpcyBub3QgaW4gdmlldywgdmlldyBhbGwgaWYgcmVzZXRWaWV3IGZsYWcgaXMgdHJ1ZQogICAgICAgICAgaWYgKCFjb29yZHMuaW5WaWV3KSB7CiAgICAgICAgICAgIHRoaXMuaGlkZVJlZ2lvblRvb2x0aXAoKTsKICAgICAgICAgICAgaWYgKHJlc2V0VmlldykgewogICAgICAgICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS52aWV3QWxsKCk7CiAgICAgICAgICAgICAgLy9Vc2UgdGhlIHBvc3QgcmVuZGVyIGNhbGxiYWNrIHRvIG1ha2Ugc3VyZSB0aGUgc2NlbmUgaGFzIGJlZW4gdXBkYXRlZAogICAgICAgICAgICAgIC8vYmVmb3JlIGdldHRpbmcgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b29sdGlwLgogICAgICAgICAgICAgIGlmICh0aGlzLiRfcmVnaW9uVG9vbHRpcENhbGxiYWNrKSB7CiAgICAgICAgICAgICAgICB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyLnJlbW92ZVBvc3RSZW5kZXJDYWxsYmFja0Z1bmN0aW9uKHRoaXMuJF9yZWdpb25Ub29sdGlwQ2FsbGJhY2spOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB0aGlzLiRfcmVnaW9uVG9vbHRpcENhbGxiYWNrID0gdGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlci5hZGRQb3N0UmVuZGVyQ2FsbGJhY2tGdW5jdGlvbih0aGlzLmRpc3BsYXlUb29sdGlwT2ZPYmplY3RzQ2FsbGJhY2sobmFtZSwgb2JqZWN0cywgcmVzZXRWaWV3LCBsaXZlVXBkYXRlcykpOwogICAgICAgICAgICB9CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aGlzLnREYXRhLnZpc2libGUgPSB0cnVlOwogICAgICAgICAgICB0aGlzLnREYXRhLmxhYmVsID0gbmFtZTsKICAgICAgICAgICAgdGhpcy50RGF0YS54ID0gY29vcmRzLnBvc2l0aW9uLng7CiAgICAgICAgICAgIHRoaXMudERhdGEueSA9IGNvb3Jkcy5wb3NpdGlvbi55OwogICAgICAgICAgICB2YXIgcmVnaW9uUGF0aCA9IG9iamVjdHNbMF0uZ2V0UmVnaW9uKCkuZ2V0RnVsbFBhdGgoKTsKICAgICAgICAgICAgaWYgKHJlZ2lvblBhdGgpIHRoaXMudERhdGEucmVnaW9uID0gcmVnaW9uUGF0aDtlbHNlIHRoaXMudERhdGEucmVnaW9uID0gIlJvb3QiOwogICAgICAgICAgICBpZiAobGl2ZVVwZGF0ZXMpIHsKICAgICAgICAgICAgICB0aGlzLiRtb2R1bGUuc2V0dXBMaXZlQ29vcmRpbmF0ZXMob2JqZWN0cyk7CiAgICAgICAgICAgICAgaWYgKHRoaXMuJF9saXZlQ29vcmRpbmF0ZXNVcGRhdGVkKSB7CiAgICAgICAgICAgICAgICB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyLnJlbW92ZVBvc3RSZW5kZXJDYWxsYmFja0Z1bmN0aW9uKHRoaXMuJF9saXZlQ29vcmRpbmF0ZXNVcGRhdGVkKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgdGhpcy4kX2xpdmVDb29yZGluYXRlc1VwZGF0ZWQgPSB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyLmFkZFBvc3RSZW5kZXJDYWxsYmFja0Z1bmN0aW9uKHRoaXMubGl2ZVVwZGF0ZVRvb2x0aXBQb3NpdGlvbik7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgfQogICAgICB0aGlzLmhpZGVSZWdpb25Ub29sdGlwKCk7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0sCiAgICAvKioKICAgICAqIERpc3BsYXkgdGhlIHRvb2x0aXAuIFdoZW4gcmVzZXRWaWV3IGlzIHNldCB0byB0cnVlLCBpdCB3aWxsIAogICAgICogcmVzZXQgdmlldyBpZiB0aGUgdG9vbHRpcCBpcyBub3QgaW4gdmlldy4KICAgICAqIFNldHRpbmcgbGl2ZVVwZGF0ZXMgdG8gdHJ1ZSB3aWxsIHVwZGF0ZSB0aGUgdG9vbHRpcCBsb2NhdGlvbiAKICAgICAqIGF0IGV2ZXJ5IHJlbmRlcmluZyBsb29wLgogICAgICovCiAgICBzaG93UmVnaW9uVG9vbHRpcDogZnVuY3Rpb24gc2hvd1JlZ2lvblRvb2x0aXAobmFtZSwgcmVzZXRWaWV3LCBsaXZlVXBkYXRlcykgewogICAgICBpZiAobmFtZSAmJiB0aGlzLiRtb2R1bGUuc2NlbmUpIHsKICAgICAgICB2YXIgcm9vdFJlZ2lvbiA9IHRoaXMuJG1vZHVsZS5zY2VuZS5nZXRSb290UmVnaW9uKCk7CiAgICAgICAgdmFyIGdyb3VwcyA9IFtuYW1lXTsKICAgICAgICB2YXIgb2JqZWN0cyA9IGZpbmRPYmplY3RzV2l0aE5hbWVzKHJvb3RSZWdpb24sIGdyb3VwcywgIiIsIHRydWUpOwogICAgICAgIHJldHVybiB0aGlzLmRpc3BsYXlUb29sdGlwT2ZPYmplY3RzKG5hbWUsIG9iamVjdHMsIHJlc2V0VmlldywgbGl2ZVVwZGF0ZXMpOwogICAgICB9CiAgICAgIHRoaXMuaGlkZVJlZ2lvblRvb2x0aXAoKTsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSwKICAgIGhpZGVSZWdpb25Ub29sdGlwOiBmdW5jdGlvbiBoaWRlUmVnaW9uVG9vbHRpcCgpIHsKICAgICAgaWYgKHRoaXMuJF9saXZlQ29vcmRpbmF0ZXNVcGRhdGVkKSB7CiAgICAgICAgdGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlci5yZW1vdmVQb3N0UmVuZGVyQ2FsbGJhY2tGdW5jdGlvbih0aGlzLiRfbGl2ZUNvb3JkaW5hdGVzVXBkYXRlZCk7CiAgICAgICAgLy9VbnNldCB0aGUgdHJhY2tpbmcKICAgICAgICB0aGlzLiRtb2R1bGUuc2V0dXBMaXZlQ29vcmRpbmF0ZXModW5kZWZpbmVkKTsKICAgICAgfQogICAgICB0aGlzLnREYXRhLnZpc2libGUgPSBmYWxzZTsKICAgICAgdGhpcy50RGF0YS5yZWdpb24gPSAiUm9vdCI7CiAgICB9LAogICAgLyoqCiAgICAgKiBUaGlzIGlzIGNhbGxlZCB3aGVuIG1vdXNlIGN1cnNvciBlbnRlcnMgc3VwcG9ydGVkIGVsZW1lbnRzCiAgICAgKiB3aXRoIGhlbHAgdG9vdGx0aXBzLgogICAgICovCiAgICBzaG93SGVscFRleHQ6IGZ1bmN0aW9uIHNob3dIZWxwVGV4dChoZWxwVGV4dE51bWJlcikgewogICAgICB2YXIgX3RoaXMgPSB0aGlzOwogICAgICBpZiAoIXRoaXMuaW5IZWxwKSB7CiAgICAgICAgdGhpcy5oZWxwVGV4dFdhaXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgIF90aGlzLmhvdmVyVmlzaWJpbGl0aWVzW2hlbHBUZXh0TnVtYmVyXS52YWx1ZSA9IHRydWU7CiAgICAgICAgfSwgNTAwKTsKICAgICAgfQogICAgfSwKICAgIC8qKgogICAgICogVGhpcyBpcyBjYWxsZWQgd2hlbiBtb3VzZSBjdXJzb3IgZXhpdHMgc3VwcG9ydGVkIGVsZW1lbnQuLgogICAgICovCiAgICBoaWRlSGVscFRleHQ6IGZ1bmN0aW9uIGhpZGVIZWxwVGV4dChoZWxwVGV4dE51bWJlcikgewogICAgICBpZiAoIXRoaXMuaW5IZWxwKSB7CiAgICAgICAgdGhpcy5ob3ZlclZpc2liaWxpdGllc1toZWxwVGV4dE51bWJlcl0udmFsdWUgPSBmYWxzZTsKICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5oZWxwVGV4dFdhaXQpOwogICAgICB9CiAgICB9LAogICAgc2VhcmNoOiBmdW5jdGlvbiBzZWFyY2godGV4dCwgZGlzcGxheUxhYmVsKSB7CiAgICAgIGlmICh0aGlzLiRfc2VhcmNoSW5kZXgpIHsKICAgICAgICBpZiAodGV4dCA9PT0gdW5kZWZpbmVkIHx8IHRleHQgPT09ICIiKSB7CiAgICAgICAgICB0aGlzLm9iamVjdFNlbGVjdGVkKFtdLCB0cnVlKTsKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdmFyIHppbmNPYmplY3RSZXN1bHRzID0gdGhpcy4kX3NlYXJjaEluZGV4LnNlYXJjaCh0ZXh0KTsKICAgICAgICAgIGlmICh6aW5jT2JqZWN0UmVzdWx0cy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIHRoaXMub2JqZWN0U2VsZWN0ZWQoemluY09iamVjdFJlc3VsdHMsIHRydWUpOwogICAgICAgICAgICBpZiAoZGlzcGxheUxhYmVsKSB7CiAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB6aW5jT2JqZWN0UmVzdWx0cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgaWYgKHppbmNPYmplY3RSZXN1bHRzW2ldICYmIHppbmNPYmplY3RSZXN1bHRzW2ldLmdyb3VwTmFtZSkgewogICAgICAgICAgICAgICAgICB0aGlzLnNob3dSZWdpb25Ub29sdGlwKHppbmNPYmplY3RSZXN1bHRzW2ldLmdyb3VwTmFtZSwgdHJ1ZSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhpcy5vYmplY3RTZWxlY3RlZChbXSwgdHJ1ZSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0sCiAgICAvKioKICAgICAqIEdldCB0aGUgbGlzdCBvZiBzdWdnZXN0ZWQgdGVybXMKICAgICAqLwogICAgZmV0Y2hTdWdnZXN0aW9uczogZnVuY3Rpb24gZmV0Y2hTdWdnZXN0aW9ucyh0ZXJtKSB7CiAgICAgIGlmICh0aGlzLiRfc2VhcmNoSW5kZXggPT09IHVuZGVmaW5lZCkgcmV0dXJuIFtdOwogICAgICByZXR1cm4gdGhpcy4kX3NlYXJjaEluZGV4LmF1dG9fc3VnZ2VzdCh0ZXJtKTsKICAgIH0sCiAgICAvKioKICAgICAqIENhbGxlZCB3aGVuIG1pbmltYXAgc2V0dGluZ3MgaGFzIGNoYW5nZWQuIFBhc3MgdGhlCiAgICAgKiBwYXJhbWV0ZXJzIHRvIFppbmNKUyBhbmQgbWFya2VkIGl0IGZvciB1cGRhdGUuCiAgICAgKi8KICAgIHVwZGF0ZU1pbmltYXBTY2lzc29yOiBmdW5jdGlvbiB1cGRhdGVNaW5pbWFwU2Npc3NvcigpIHsKICAgICAgdmFyIF90aGlzMiA9IHRoaXM7CiAgICAgIE9iamVjdC5rZXlzKHRoaXMubWluaW1hcFNldHRpbmdzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsKICAgICAgICBfdGhpczIuJG1vZHVsZS5zY2VuZS5taW5pbWFwU2Npc3NvcltrZXldID0gX3RoaXMyLm1pbmltYXBTZXR0aW5nc1trZXldOwogICAgICB9KTsKICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLm1pbmltYXBTY2lzc29yLnVwZGF0ZVJlcXVpcmVkID0gdHJ1ZTsKICAgIH0sCiAgICB1cGRhdGVTZXR0aW5nc2Zyb21TY2VuZTogZnVuY3Rpb24gdXBkYXRlU2V0dGluZ3Nmcm9tU2NlbmUoKSB7CiAgICAgIHRoaXMuY3VycmVudFNwZWVkID0gMTsKICAgICAgdGhpcy4kbW9kdWxlLnNldFBsYXlSYXRlKHRoaXMuZGVmYXVsdFJhdGUpOwogICAgICB0aGlzLm9yZ2luYWxEdXJhdGlvbiA9IHRoaXMuJG1vZHVsZS5zY2VuZS5nZXRNZXRhZGF0YVRhZygiT3JpZ2luYWxEdXJhdGlvbiIpOwogICAgICB0aGlzLmFuaW1hdGVEdXJhdGlvbiA9IHRoaXMuJG1vZHVsZS5zY2VuZS5nZXRNZXRhZGF0YVRhZygiRHVyYXRpb24iKTsKICAgICAgdmFyIHRpbWVTdGFtcHMgPSB0aGlzLiRtb2R1bGUuc2NlbmUuZ2V0TWV0YWRhdGFUYWcoIlRpbWVTdGFtcHMiKTsKICAgICAgdGhpcy50aW1lU3RhbXBzID0ge307CiAgICAgIGZvciAodmFyIGtleSBpbiB0aW1lU3RhbXBzKSB7CiAgICAgICAgdGhpcy50aW1lU3RhbXBzW3RpbWVTdGFtcHNba2V5XV0gPSBrZXk7CiAgICAgIH0KICAgICAgdGhpcy50aW1lTWF4ID0gdGhpcy4kbW9kdWxlLnNjZW5lLmdldER1cmF0aW9uKCk7CiAgICB9LAogICAgc2V0VVJMRmluaXNoQ2FsbGJhY2s6IGZ1bmN0aW9uIHNldFVSTEZpbmlzaENhbGxiYWNrKG9wdGlvbnMpIHsKICAgICAgdmFyIF90aGlzMyA9IHRoaXM7CiAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CiAgICAgICAgaWYgKG9wdGlvbnMpIHsKICAgICAgICAgIGlmIChvcHRpb25zLnZpZXdwb3J0KSB7CiAgICAgICAgICAgIF90aGlzMy4kbW9kdWxlLnNjZW5lLmdldFppbmNDYW1lcmFDb250cm9scygpLnNldEN1cnJlbnRDYW1lcmFTZXR0aW5ncyhvcHRpb25zLnZpZXdwb3J0KTsKICAgICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy52aWV3VVJMICYmIG9wdGlvbnMudmlld1VSTCAhPT0gIiIpIHsKICAgICAgICAgICAgdmFyIHVybCA9IG5ldyBVUkwob3B0aW9ucy52aWV3VVJMLCBfdGhpczMudXJsKTsKICAgICAgICAgICAgX3RoaXMzLiRtb2R1bGUuc2NlbmUubG9hZFZpZXdVUkwodXJsKTsKICAgICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5yZWdpb24gJiYgb3B0aW9ucy5yZWdpb24gIT09ICIiKSB7CiAgICAgICAgICAgIF90aGlzMy52aWV3UmVnaW9uKG9wdGlvbnMucmVnaW9uKTsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChvcHRpb25zLnZpc2liaWxpdHkpIHsKICAgICAgICAgICAgLy8gU29tZSBVSXMgbWF5IG5vdCBiZSByZWFkeSBhdCB0aGlzIHRpbWUuCiAgICAgICAgICAgIF90aGlzMy4kbmV4dFRpY2soZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgIF90aGlzMy4kcmVmcy50cmVlQ29udHJvbHMuc2V0U3RhdGUob3B0aW9ucy52aXNpYmlsaXR5KTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIF90aGlzMy51cGRhdGVTZXR0aW5nc2Zyb21TY2VuZSgpOwogICAgICAgIF90aGlzMy4kbW9kdWxlLnVwZGF0ZVRpbWUoMC4wMSk7CiAgICAgICAgX3RoaXMzLiRtb2R1bGUudXBkYXRlVGltZSgwKTsKICAgICAgICBfdGhpczMuJG1vZHVsZS51bnNldEZpbmlzaERvd25sb2FkQ2FsbGJhY2soKTsKICAgICAgICBfdGhpczMuJGVtaXQoIm9uLXJlYWR5Iik7CiAgICAgICAgX3RoaXMzLmlzUmVhZHkgPSB0cnVlOwogICAgICB9OwogICAgfSwKICAgIC8qKgogICAgICogRnVuY3Rpb24gdXNlZCBmb3IgZ2V0dGluZyB0aGUgY3VycmVudCBzdGF0ZXMgb2YgdGhlIHNjZW5lLiBUaGlzIGV4cG9ydGVkIHN0YXRlcwogICAgICogY2FuIGJlIGltcG9ydGVkIHVzaW5nIHRoZSBpbXBvcnRTdGF0ZXMgbWV0aG9kLgogICAgICoKICAgICAqIEBwdWJsaWMKICAgICAqLwogICAgZ2V0U3RhdGU6IGZ1bmN0aW9uIGdldFN0YXRlKCkgewogICAgICB2YXIgc3RhdGUgPSB7CiAgICAgICAgZm9ybWF0OiB0aGlzLmZpbGVGb3JtYXQsCiAgICAgICAgdXJsOiB0aGlzLl9jdXJyZW50VVJMLAogICAgICAgIHZpZXdwb3J0OiB1bmRlZmluZWQsCiAgICAgICAgdmlzaWJpbGl0eTogdW5kZWZpbmVkCiAgICAgIH07CiAgICAgIGlmICh0aGlzLiRyZWZzLnRyZWVDb250cm9scykgc3RhdGUudmlzaWJpbGl0eSA9IHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLmdldFN0YXRlKCk7CiAgICAgIGlmICh0aGlzLiRtb2R1bGUuc2NlbmUpIHsKICAgICAgICB2YXIgemluY0NhbWVyYUNvbnRyb2xzID0gdGhpcy4kbW9kdWxlLnNjZW5lLmdldFppbmNDYW1lcmFDb250cm9scygpOwogICAgICAgIHN0YXRlLnZpZXdwb3J0ID0gemluY0NhbWVyYUNvbnRyb2xzLmdldEN1cnJlbnRWaWV3cG9ydCgpOwogICAgICB9CiAgICAgIHJldHVybiBzdGF0ZTsKICAgIH0sCiAgICAvKioKICAgICAqIEZ1bmN0aW9uIHVzZWQgZm9yIGltcG9ydGluZyB0aGUgc3RhdGVzIG9mIHRoZSBzY2VuZS4gVGhpcyBleHBvcnRlZCBzdGF0ZXMKICAgICAqIGNhbiBiZSBpbXBvcnRlZCB1c2luZyB0aGUgcmVhZCBzdGF0ZXMgbWV0aG9kLgogICAgICoKICAgICAqIEBwdWJsaWMKICAgICAqLwogICAgc2V0U3RhdGU6IGZ1bmN0aW9uIHNldFN0YXRlKHN0YXRlKSB7CiAgICAgIGlmIChzdGF0ZSkgewogICAgICAgIGlmIChzdGF0ZS51cmwgJiYgc3RhdGUudXJsICE9PSB0aGlzLl9jdXJyZW50VVJMKSB7CiAgICAgICAgICB0aGlzLnNldFVSTEFuZFN0YXRlKHN0YXRlLnVybCwgewogICAgICAgICAgICBmaWxlRm9ybWF0OiBzdGF0ZS5maWxlRm9ybWF0LAogICAgICAgICAgICB2aWV3cG9ydDogc3RhdGUudmlld3BvcnQsCiAgICAgICAgICAgIHZpc2liaWxpdHk6IHN0YXRlLnZpc2liaWxpdHkKICAgICAgICAgIH0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBpZiAoc3RhdGUudmlld3BvcnQgfHwgc3RhdGUudmlzaWJpbGl0eSkgewogICAgICAgICAgICBpZiAodGhpcy5pc1JlYWR5ICYmIHRoaXMuJG1vZHVsZS5zY2VuZSkgewogICAgICAgICAgICAgIGlmIChzdGF0ZS52aWV3cG9ydCkgdGhpcy4kbW9kdWxlLnNjZW5lLmdldFppbmNDYW1lcmFDb250cm9scygpLnNldEN1cnJlbnRDYW1lcmFTZXR0aW5ncyhzdGF0ZS52aWV3cG9ydCk7CiAgICAgICAgICAgICAgaWYgKHN0YXRlLnZpc2liaWxpdHkpIHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLnNldFN0YXRlKHN0YXRlLnZpc2liaWxpdHkpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHRoaXMuJG1vZHVsZS5zZXRGaW5pc2hEb3dubG9hZENhbGxiYWNrKHRoaXMuc2V0VVJMRmluaXNoQ2FsbGJhY2soewogICAgICAgICAgICAgICAgdmlld3BvcnQ6IHN0YXRlLnZpZXdwb3J0LAogICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogc3RhdGUudmlzaWJpbGl0eQogICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgIGV4cG9ydEdMVEY6IGZ1bmN0aW9uIGV4cG9ydEdMVEYoYmluYXJ5KSB7CiAgICAgIHJldHVybiB0aGlzLiRtb2R1bGUuc2NlbmUuZXhwb3J0R0xURihiaW5hcnkpOwogICAgfSwKICAgIC8qKgogICAgICogRnVuY3Rpb24gdXNlZCBmb3IgcmVhZGluZyBpbiBuZXcgc2NhZmZvbGQgbWV0YWRhdGEgYW5kIGEgY3VzdG9tCiAgICAgKiB2aWV3cG9ydC4gVGhpcyBmdW5jdGlvbiB3aWxsIGlnbm9yZSB0aGUgc3RhdGUgcHJvcCBhbmQKICAgICAqIHJlYWQgaW4gdGhlIG5ldyB1cmwuCiAgICAgKgogICAgICogQHB1YmxpYwogICAgICovCiAgICBzZXRVUkxBbmRTdGF0ZTogZnVuY3Rpb24gc2V0VVJMQW5kU3RhdGUobmV3VmFsdWUsIHN0YXRlKSB7CiAgICAgIGlmIChuZXdWYWx1ZSAhPSB0aGlzLl9jdXJyZW50VVJMKSB7CiAgICAgICAgaWYgKHN0YXRlICYmIHN0YXRlLmZvcm1hdCkgdGhpcy5maWxlRm9ybWF0ID0gc3RhdGUuZm9ybWF0OwogICAgICAgIHZhciB2aWV3cG9ydCA9IHN0YXRlICYmIHN0YXRlLnZpZXdwb3J0ID8gc3RhdGUudmlld3BvcnQgOiB1bmRlZmluZWQ7CiAgICAgICAgdmFyIHZpc2liaWxpdHkgPSBzdGF0ZSAmJiBzdGF0ZS52aXNpYmlsaXR5ID8gc3RhdGUudmlzaWJpbGl0eSA6IHVuZGVmaW5lZDsKICAgICAgICB0aGlzLl9jdXJyZW50VVJMID0gbmV3VmFsdWU7CiAgICAgICAgaWYgKHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzKSB0aGlzLiRyZWZzLnRyZWVDb250cm9scy5jbGVhcigpOwogICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7CiAgICAgICAgdGhpcy5pc1JlYWR5ID0gZmFsc2U7CiAgICAgICAgdGhpcy4kbW9kdWxlLnNldEZpbmlzaERvd25sb2FkQ2FsbGJhY2sodGhpcy5zZXRVUkxGaW5pc2hDYWxsYmFjayh7CiAgICAgICAgICB2aWV3cG9ydDogdmlld3BvcnQsCiAgICAgICAgICByZWdpb246IHRoaXMucmVnaW9uLAogICAgICAgICAgdmlld1VSTDogdGhpcy52aWV3VVJMLAogICAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJpbGl0eQogICAgICAgIH0pKTsKICAgICAgICBpZiAodGhpcy5maWxlRm9ybWF0ID09PSAiZ2x0ZiIpIHsKICAgICAgICAgIHRoaXMuJG1vZHVsZS5sb2FkR0xURkZyb21VUkwobmV3VmFsdWUsICJzY2VuZSIsIHRydWUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aGlzLiRtb2R1bGUubG9hZE9yZ2Fuc0Zyb21VUkwobmV3VmFsdWUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCAic2NlbmUiLCB1bmRlZmluZWQsIHRydWUpOwogICAgICAgIH0KICAgICAgICB0aGlzLiRfc2VhcmNoSW5kZXgucmVtb3ZlQWxsKCk7CiAgICAgICAgdGhpcy4kX3RlbXBJZCA9IDE7CiAgICAgICAgdGhpcy5oaWRlUmVnaW9uVG9vbHRpcCgpOwogICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5kaXNwbGF5TWFya2VycyA9IHRoaXMuZGlzcGxheU1hcmtlcnM7CiAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLmZvcmNlUGlja2FibGVPYmplY3RzVXBkYXRlID0gdHJ1ZTsKICAgICAgICB0aGlzLiRtb2R1bGUuc2NlbmUuZGlzcGxheU1pbmltYXAgPSB0aGlzLmRpc3BsYXlNaW5pbWFwOwogICAgICAgIHRoaXMudXBkYXRlTWluaW1hcFNjaXNzb3IoKTsKICAgICAgfQogICAgfSwKICAgIC8qKgogICAgICogRnVuY3Rpb24gdXNlZCBmb3IgcmVhZGluZyBpbiBuZXcgc2NhZmZvbGQgbWV0YWRhdGEuIFRoaXMgZnVuY3Rpb24gd2lsbCBpZ25vcmUKICAgICAqIHRoZSBzdGF0ZSBwcm9wIGFuZCByZWFkIGluIHRoZSBuZXcgdXJsLgogICAgICoKICAgICAqIEBwdWJsaWMKICAgICAqLwogICAgc2V0VVJMOiBmdW5jdGlvbiBzZXRVUkwobmV3VmFsdWUpIHsKICAgICAgdGhpcy5zZXRVUkxBbmRTdGF0ZShuZXdWYWx1ZSwgdW5kZWZpbmVkKTsKICAgIH0sCiAgICAvKioKICAgICAqIENhbGxiYWNrIHdoZW4gZHJhd2VyIGlzIHRvZ2dsZWQuCiAgICAgKi8KICAgIGRyYXdlclRvZ2dsZWQ6IGZ1bmN0aW9uIGRyYXdlclRvZ2dsZWQoZmxhZykgewogICAgICB0aGlzLmRyYXdlck9wZW4gPSBmbGFnOwogICAgICB0aGlzLmFkanVzdExheW91dCgpOwogICAgfSwKICAgIC8qKgogICAgICogQ2FsbGJhY2sgdXNpbmcgUmVzaXplT2JzZXJ2ZXIuCiAgICAgKi8KICAgIGFkanVzdExheW91dDogZnVuY3Rpb24gYWRqdXN0TGF5b3V0KCkgewogICAgICB2YXIgd2lkdGggPSB0aGlzLiRyZWZzLnNjYWZmb2xkQ29udGFpbmVyLmNsaWVudFdpZHRoOwogICAgICB0aGlzLm1pbmltaXNlZFNsaWRlciA9IHdpZHRoIDwgODEyOwogICAgICBpZiAodGhpcy5taW5pbWlzZWRTbGlkZXIpIHsKICAgICAgICB0aGlzLnNsaWRlclBvc2l0aW9uID0gdGhpcy5kcmF3ZXJPcGVuID8gInJpZ2h0IiA6ICJsZWZ0IjsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLnNsaWRlclBvc2l0aW9uID0gIiI7CiAgICAgIH0KICAgIH0sCiAgICB0b2dnbGVSZW5kZXJpbmc6IGZ1bmN0aW9uIHRvZ2dsZVJlbmRlcmluZyhmbGFnKSB7CiAgICAgIGlmICh0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyKSB7CiAgICAgICAgaWYgKGZsYWcpIHsKICAgICAgICAgIHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIuYW5pbWF0ZSgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyLnN0b3BBbmltYXRlKCk7CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgZm9yY2VSZXNpemU6IGZ1bmN0aW9uIGZvcmNlUmVzaXplKCkgewogICAgICBpZiAodGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlcikgewogICAgICAgIHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIub25XaW5kb3dSZXNpemUoKTsKICAgICAgfQogICAgfSwKICAgIHN5bmNDb250cm9sQ2FsbGJhY2s6IGZ1bmN0aW9uIHN5bmNDb250cm9sQ2FsbGJhY2soKSB7CiAgICAgIHZhciBwYXlsb2FkID0gdGhpcy4kbW9kdWxlLk5EQ0NhbWVyYUNvbnRyb2wuZ2V0UGFuWm9vbSgpOwogICAgICBpZiAodGhpcy50RGF0YS52aXNpYmxlKSB7CiAgICAgICAgdGhpcy5zaG93UmVnaW9uVG9vbHRpcCh0aGlzLnREYXRhLmxhYmVsKTsKICAgICAgfQogICAgICB0aGlzLiRlbWl0KCJzY2FmZm9sZC1uYXZpZ2F0ZWQiLCBwYXlsb2FkKTsKICAgIH0sCiAgICAvKiogCiAgICAgKiBSb3RhdGUgbW9kZSAtICJub25lIiwgImhvcml6b250YWwiLCAidmVydGljYWwiLCAiZnJlZSIgYnV0CiAgICAgKiBpdCB3aWxsIGJlIGlnbm9yZWQgaWYgZmxhZyBpcyBzZXQgdG8gZmFsc2UuCiAgICAgKi8KICAgIHRvZ2dsZVN5bmNDb250cm9sOiBmdW5jdGlvbiB0b2dnbGVTeW5jQ29udHJvbChmbGFnLCByb3RhdGVNb2RlKSB7CiAgICAgIHRoaXMuJG1vZHVsZS50b2dnbGVTeW5jQ29udHJvbChmbGFnLCByb3RhdGVNb2RlKTsKICAgICAgdGhpcy4kbW9kdWxlLnNldFN5bmNDb250cm9sQ2FsbGJhY2sodGhpcy5zeW5jQ29udHJvbENhbGxiYWNrKTsKICAgIH0KICB9Cn07"},{"version":3,"names":["Vue","OpacityControls","ScaffoldTooltip","TreeControls","MapSvgIcon","MapSvgSpriteColor","findObjectsWithNames","getAllObjects","SearchIndex","lang","locale","use","_Col","_Loading","directive","_Option","_Popover","_Row","_Select","_Slider","_TabPane","_Tabs","OrgansViewer","require","EventNotifier","name","components","props","url","type","String","default","showColourPicker","Boolean","displayUI","displayAtStartUp","helpMode","displayWarning","warningMessage","displayLatestChanges","latestChangesMessage","displayMarkers","displayMinimap","format","minimapSettings","Object","_default","x_offset","y_offset","width","height","align","state","undefined","region","viewURL","render","data","sceneData","$module","isPlaying","isTransitioning","tooltipAppendToBody","hoverVisibilities","value","inHelp","loading","duration","drawerOpen","currentBackground","availableBackground","minimisedSlider","sliderPosition","timeMax","orginalDuration","animateDuration","playSpeed","label","currentSpeed","timeStamps","defaultCheckedKeys","tData","visible","x","y","fileFormat","watch","handler","immediate","newValue","setURL","setFocusedRegion","setState","deep","updateViewURL","val","setHelpMode","scene","forcePickableObjectsUpdate","sceneDataCurrentTime","$emit","currentTime","setDuration","toggleRendering","beforeCreate","isReady","selectedObjects","hoveredObjects","_currentURL","$_searchIndex","$_tempId","mounted","$refs","treeControls","setModule","eventNotifier","subscribe","eventNotifierCallback","addNotifier","addOrganPartAddedCallback","zincObjectAdded","initialiseRenderer","display","ro","ResizeObserver","adjustLayout","observe","scaffoldContainer","defaultRate","getPlayRate","beforeDestroy","disconnect","destroy","methods","zincObject","searchIndexId","addZincObject","backgroundChangeCallback","colour","zincRenderer","getThreeJSRenderer","setClearColor","captureScreenshotCallback","removePostRenderCallbackFunction","captureID","screenshot","domElement","toDataURL","hrefElement","document","createElement","body","append","captureFilename","download","href","click","remove","captureScreenshot","filename","addPostRenderCallbackFunction","formatTooltip","sec","toFixed","min","fitWindow","viewAll","zoomIn","changeZoomByScrollRateUnit","zoomOut","speedChanged","speed","setPlayRate","stopFreeSpin","cameracontrol","getZincCameraControls","stopAutoTumble","findObjectsWithGroupName","objects","viewRegion","names","rootRegion","getRootRegion","groups","Array","isArray","box","getBoundingBoxOfZincObjects","isSyncControl","setSyncControlZoomToBox","dist","camera","far","near","viewAllWithBoundingBox","updateProjectionMatrix","setFinishDownloadCallback","setURLFinishCallback","URL","loadViewURL","getRendererInfo","info","freeSpin","enableAutoTumble","autoTumble","Math","PI","setTimeout","event","zincObjects","eventType","identifiers","forEach","identifier","id","group","push","length","updateActiveUI","hideRegionTooltip","removeActive","updateHoverUI","removeHover","coords","offsets","getBoundingClientRect","left","top","getCoordinatesOfSelected","getObjectsScreenXY","getDynamicSelectedCoordinates","selectedScreenCoordinates","timeChange","normalizedTime","updateTime","objectSelected","propagate","opacityControl","setObject","setSelectedByZincObjects","objectHovered","setHighlightedByZincObjects","changeActiveByName","array","changeActiveByNames","changeHighlightedByName","changeHoverByNames","play","flag","playAnimation","item","displayTooltipOfObjectsCallback","resetView","liveUpdates","instance","$_regionTooltipCallback","displayTooltipOfObjects","liveUpdateTooltipPosition","selectedCenter","getClosestVertexDOMElementCoords","inView","position","regionPath","getRegion","getFullPath","setupLiveCoordinates","$_liveCoordinatesUpdated","showRegionTooltip","showHelpText","helpTextNumber","_this","helpTextWait","hideHelpText","clearTimeout","search","text","displayLabel","zincObjectResults","i","groupName","fetchSuggestions","term","auto_suggest","updateMinimapScissor","_this2","keys","key","minimapScissor","updateRequired","updateSettingsfromScene","getMetadataTag","getDuration","options","_this3","viewport","setCurrentCameraSettings","visibility","$nextTick","unsetFinishDownloadCallback","getState","zincCameraControls","getCurrentViewport","setURLAndState","exportGLTF","binary","clear","loadGLTFFromURL","loadOrgansFromURL","removeAll","drawerToggled","clientWidth","animate","stopAnimate","forceResize","onWindowResize","syncControlCallback","payload","NDCCameraControl","getPanZoom","toggleSyncControl","rotateMode","setSyncControlCallback"],"sources":["node_modules/@abi-software/scaffoldvuer/src/components/ScaffoldVuer.vue"],"sourcesContent":["\n \n \n \n \n \n \n \n Beta\n \n \n \n What's new?\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Original duration:\n \n {{ orginalDuration }}\n \n \n \n Animation duration:\n \n {{ animateDuration }}\n \n \n \n Playback speed\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Fit to\n \n window\n \n \n \n \n \n \n Change background\n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwQA;AACA,OAAAA,GAAA;AACA,OAAAC,eAAA;AACA,OAAAC,eAAA;AACA,OAAAC,YAAA;AACA,SAAAC,UAAA,EAAAC,iBAAA;AACA,SAAAC,oBAAA,EAAAC,aAAA;AACA,SAAAC,WAAA;AAYA,OAAAC,IAAA;AACA,OAAAC,MAAA;AAEAA,MAAA,CAAAC,GAAA,CAAAF,IAAA;AACAT,GAAA,CAAAW,GAAA,CAAAC,IAAA;AACAZ,GAAA,CAAAW,GAAA,CAAAE,QAAA,CAAAC,SAAA;AACAd,GAAA,CAAAW,GAAA,CAAAI,OAAA;AACAf,GAAA,CAAAW,GAAA,CAAAK,QAAA;AACAhB,GAAA,CAAAW,GAAA,CAAAM,IAAA;AACAjB,GAAA,CAAAW,GAAA,CAAAO,OAAA;AACAlB,GAAA,CAAAW,GAAA,CAAAQ,OAAA;AACAnB,GAAA,CAAAW,GAAA,CAAAS,QAAA;AACApB,GAAA,CAAAW,GAAA,CAAAU,KAAA;AAEA,IAAAC,YAAA,GAAAC,OAAA,8BAAAD,YAAA;AACA,IAAAE,aAAA,GAAAD,OAAA,6BAAAC,aAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACAC,IAAA;EACAC,UAAA;IACAtB,UAAA,EAAAA,UAAA;IACAC,iBAAA,EAAAA,iBAAA;IACAJ,eAAA,EAAAA,eAAA;IACAC,eAAA,EAAAA,eAAA;IACAC,YAAA,EAAAA;EACA;EACAwB,KAAA;IACA;AACA;AACA;AACA;AACA;AACA;IACAC,GAAA;MACAC,IAAA,EAAAC,MAAA;MACAC,OAAA;IACA;IACA;AACA;AACA;IACAC,gBAAA;MACAH,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;IACA;AACA;AACA;IACAG,SAAA;MACAL,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;IACA;AACA;AACA;AACA;AACA;IACAI,gBAAA;MACAN,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;IACA;AACA;AACA;IACAK,QAAA;MACAP,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;IACA;AACA;AACA;IACAM,cAAA;MACAR,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;IACA;AACA;AACA;AACA;IACAO,cAAA;MACAT,IAAA,EAAAC,MAAA;MACAC,OAAA;IACA;IACAQ,oBAAA;MACAV,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;IACAS,oBAAA;MACAX,IAAA,EAAAC,MAAA;MACAC,OAAA;IACA;IACA;AACA;AACA;IACAU,cAAA;MACAZ,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;IACA;AACA;AACA;IACAW,cAAA;MACAb,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;IACA;AACA;AACA;IACAY,MAAA;MACAd,IAAA,EAAAC,MAAA;MACAC,OAAA;IACA;IACA;AACA;AACA;IACAa,eAAA;MACAf,IAAA,EAAAgB,MAAA;MACAd,OAAA,WAAAe,SAAA;QACA;UACAC,QAAA;UACAC,QAAA;UACAC,KAAA;UACAC,MAAA;UACAC,KAAA;QACA;MACA;IACA;IACA;AACA;AACA;IACAC,KAAA;MACAvB,IAAA,EAAAgB,MAAA;MACAd,OAAA,EAAAsB;IACA;IACA;AACA;AACA;AACA;IACAC,MAAA;MACAzB,IAAA,EAAAC,MAAA;MACAC,OAAA;IACA;IACA;AACA;AACA;AACA;AACA;IACAwB,OAAA;MACA1B,IAAA,EAAAC,MAAA;MACAC,OAAA;IACA;IACA;AACA;AACA;IACAyB,MAAA;MACA3B,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;EACA;EACA0B,IAAA,WAAAA,KAAA;IACA;MACAC,SAAA,OAAAC,OAAA,CAAAD,SAAA;MACAE,SAAA;MACA;AACA;AACA;MACAC,eAAA;MACAC,mBAAA;MACAC,iBAAA,GACA;QAAAC,KAAA;MAAA,GACA;QAAAA,KAAA;MAAA,GACA;QAAAA,KAAA;MAAA,GACA;QAAAA,KAAA;MAAA,GACA;QAAAA,KAAA;MAAA,GACA;QAAAA,KAAA;MAAA,GACA;QAAAA,KAAA;MAAA,GACA;QAAAA,KAAA;MAAA,EACA;MACAC,MAAA;MACAC,OAAA;MACAC,QAAA;MACAC,UAAA;MACAC,iBAAA;MACAC,mBAAA;MACAC,eAAA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"}]}