{"remainingRequest":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js!D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\babel-loader\\lib\\index.js!D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\dataShare-fvue\\src\\components\\eipControl\\EipTreeselect.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\src\\components\\eipControl\\EipTreeselect.vue","mtime":1733309211938},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\babel.config.js","mtime":1733906004399},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UvZGF0YVNoYXJlLWZ2dWUvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3JlZ2VuZXJhdG9yUnVudGltZS5qcyI7CmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS9kYXRhU2hhcmUtZnZ1ZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyI7CmltcG9ydCBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS9kYXRhU2hhcmUtZnZ1ZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZpbHRlci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmluY2x1ZGVzLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuam9pbi5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnB1c2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5uYW1lLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuanNvbi5zdHJpbmdpZnkuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuY29uc3RydWN0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZG90LWFsbC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5leGVjLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLnN0aWNreS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC50by1zdHJpbmcuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuaW5jbHVkZXMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcucmVwbGFjZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5zZWFyY2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3IuY29uc3RydWN0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3IuZmlsdGVyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXNuZXh0Lml0ZXJhdG9yLmZvci1lYWNoLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5mb3ItZWFjaC5qcyI7Ci8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCgppbXBvcnQgdXRpbHMgZnJvbSAiQC91dGlscy5qcyI7CmltcG9ydCBob3RlbnRVdGlscyBmcm9tICJAL2hvdGVudC11aS11dGlsLmpzIjsKaW1wb3J0IHN1Yl9waW9fbWl4aW4gZnJvbSAiQC9zdWItcGVybWlzc2lvbi1taXhpbi5qcyI7CmltcG9ydCByZXEgZnJvbSAiQC9yZXF1ZXN0LmpzIjsKZXhwb3J0IGRlZmF1bHQgewogIG5hbWU6ICJlaXAtdHJlZXNlbGVjdCIsCiAgcHJvcHM6IFsidmFsaWRhdGUiLCAidmFsdWUiLCAibmFtZSIsICJwZXJtaXNzaW9uIiwgIm11bHRpcGxlIiwgInNlbGVjdGxpc3QiLCAiZ2FuZ2VkIiwgImZpbHRlcmFibGUiLCAiYWxsb3dDcmVhdGUiLCAic3R5bGVzIiwgImN1c3RvbVF1ZXJ5Il0sCiAgbWl4aW5zOiBbc3ViX3Bpb19taXhpbl0sCiAgLy/mt7flhaXmlrnlvI/lvJXlhaXooajljZXnu4Tku7bkuK3lhazlhbHlsZ7mgKfvvIzlpITnkIblrZDooajjgIHlrZnooajooYzlhoXogZTliqjvvIjliIfpnaLkv67mlLlwZXJtaXNzaW9uX3N1Yl9zdWLvvIkKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgcmV0dXJuIHsKICAgICAgY29uZmlnOiB7fSwKICAgICAgdG90YWw6IDEwLAogICAgICBwYWdlU2l6ZTogNSwKICAgICAgY3VycmVudFBhZ2U6IDEsCiAgICAgIG9wdGlvbnM6IFtdLAogICAgICB0ZW1wb3B0aW9uczogW10sCiAgICAgIHZhbHVlRGVzYzogIiIsCiAgICAgIHRhZ0Zvcm1hdFZhbHVlOiBbXSwKICAgICAgZGVmYXVsdFByb3BzOiB7CiAgICAgICAgY2hpbGRyZW46ICJjaGlsZHJlbiIsCiAgICAgICAgbGFiZWw6ICJ2YWx1ZSIKICAgICAgfSwKICAgICAgbmV3VmFsaWRhdGU6IG51bGwsCiAgICAgIGN1clN1YkluZGV4OiBudWxsCiAgICB9OwogIH0sCiAgd2F0Y2g6IHsKICAgIHZhbHVlRGVzYzogZnVuY3Rpb24gdmFsdWVEZXNjKG5ld1ZhbCwgb2xkVmFsKSB7CiAgICAgIGlmIChuZXdWYWwgJiYgbmV3VmFsICE9IG9sZFZhbCkgewogICAgICAgIHRoaXMudGFnRm9ybWF0VmFsdWUgPSBuZXdWYWwuc3BsaXQoIiwiKTsKICAgICAgfQogICAgfQogIH0sCiAgY29tcHV0ZWQ6IHsKICAgIGlucHV0VmFsOiB7CiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7CiAgICAgICAgICBpZiAodGhpcy52YWx1ZSkgewogICAgICAgICAgICBpZiAodGhpcy4kcmVmcy50cmVlc2VsZWN0RWxUcmVlKSB7CiAgICAgICAgICAgICAgdmFyIGNoZWNrZWROb2RlcyA9IHRoaXMuJHJlZnMudHJlZXNlbGVjdEVsVHJlZS5nZXRDaGVja2VkTm9kZXMoKTsKICAgICAgICAgICAgICB2YXIgX2l0ZXJhdG9yID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIoY2hlY2tlZE5vZGVzKSwKICAgICAgICAgICAgICAgIF9zdGVwOwogICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBmb3IgKF9pdGVyYXRvci5zKCk7ICEoX3N0ZXAgPSBfaXRlcmF0b3IubigpKS5kb25lOykgewogICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IF9zdGVwLnZhbHVlOwogICAgICAgICAgICAgICAgICBpZiAoIXRoaXMudmFsdWUuc3BsaXQoIiwiKS5pbmNsdWRlcyhkYXRhLmtleSkpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLiRyZWZzLnRyZWVzZWxlY3RFbFRyZWUuc2V0Q2hlY2tlZChkYXRhLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgICAgICAgICAgIF9pdGVyYXRvci5lKGVycik7CiAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICAgIF9pdGVyYXRvci5mKCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlLnNwbGl0KCIsIik7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAodGhpcy4kcmVmcy50cmVlc2VsZWN0RWxUcmVlKSB7CiAgICAgICAgICAgICAgdmFyIF9jaGVja2VkTm9kZXMgPSB0aGlzLiRyZWZzLnRyZWVzZWxlY3RFbFRyZWUuZ2V0Q2hlY2tlZE5vZGVzKCk7CiAgICAgICAgICAgICAgdmFyIF9pdGVyYXRvcjIgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihfY2hlY2tlZE5vZGVzKSwKICAgICAgICAgICAgICAgIF9zdGVwMjsKICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgZm9yIChfaXRlcmF0b3IyLnMoKTsgIShfc3RlcDIgPSBfaXRlcmF0b3IyLm4oKSkuZG9uZTspIHsKICAgICAgICAgICAgICAgICAgdmFyIF9kYXRhID0gX3N0ZXAyLnZhbHVlOwogICAgICAgICAgICAgICAgICB0aGlzLiRyZWZzLnRyZWVzZWxlY3RFbFRyZWUuc2V0Q2hlY2tlZChfZGF0YSwgZmFsc2UpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikgewogICAgICAgICAgICAgICAgX2l0ZXJhdG9yMi5lKGVycik7CiAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICAgIF9pdGVyYXRvcjIuZigpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gW107CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZhbHVlIHx8IHRoaXMudmFsdWUgPT09IDApIHsKICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlICsgIiI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlOwogICAgICAgIH0KICAgICAgfSwKICAgICAgc2V0OiBmdW5jdGlvbiBzZXQodmFsKSB7CiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHsKICAgICAgICAgIHRoaXMuJGVtaXQoImlucHV0IiwgdmFsLmpvaW4oIiwiKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuJGVtaXQoImlucHV0IiwgdmFsKTsKICAgICAgICAgIGlmICghdGhpcy5tdWx0aXBsZSAmJiB2YWwpIHsKICAgICAgICAgICAgLy/liKTmlq3lr7nor53moYbmmK/lkKbnu5HlrprkuoblhbPogZTmn6Xor6IKICAgICAgICAgICAgaWYgKHRoaXMuY3VzdG9tUXVlcnkgJiYgdGhpcy5jdXN0b21RdWVyeS5jdXN0UXVlcnlKc29uICYmIHRoaXMuY3VzdG9tUXVlcnkuY3VzdFF1ZXJ5SnNvbi5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgdmFyIGN1c3RRdWVyeUpzb24gPSB0aGlzLmN1c3RvbVF1ZXJ5LmN1c3RRdWVyeUpzb247CiAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjdXN0UXVlcnlKc29uLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBpZiAoY3VzdFF1ZXJ5SnNvbltpXS5jb25kaXRpb25maWVsZC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgIHRoaXMuZG9RdWVyeShjdXN0UXVlcnlKc29uW2ldKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlsiICsgY3VzdFF1ZXJ5SnNvbltpXS5jb21tZW50ICsgIl3lhbPogZTmn6Xor6Llj5blgLzlj4LmlbDmnKrnu5HlrprooajljZXlrZfmrrUiKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICBpbnB1dFdyaXRlYWJsZTogZnVuY3Rpb24gaW5wdXRXcml0ZWFibGUoKSB7CiAgICAgIHJldHVybiB1dGlscy5nZXRXcml0ZWFibGUodGhpcy5wZXJtaXNzaW9uX3N1Yik7CiAgICB9LAogICAgaW5wdXRWYWxpZGF0ZTogZnVuY3Rpb24gaW5wdXRWYWxpZGF0ZSgpIHsKICAgICAgaWYgKHRoaXMubmV3VmFsaWRhdGUpIHsKICAgICAgICByZXR1cm4gdGhpcy5uZXdWYWxpZGF0ZTsKICAgICAgfQogICAgICB2YXIgdmFsaWRhdGVPYmogPSB0aGlzLiRzdG9yZS5zdGF0ZS5pbmRleC52YWxpZGF0ZTsKICAgICAgcmV0dXJuIHV0aWxzLmFkZFJlcXVpcmVkT3JOb3QodGhpcy5wZXJtaXNzaW9uX3N1YiwgdGhpcy52YWxpZGF0ZSwgdmFsaWRhdGVPYmosIHRoaXMpOwogICAgfSwKICAgIGlucHV0TmFtZTogZnVuY3Rpb24gaW5wdXROYW1lKCkgewogICAgICB2YXIgbGFiZWxkZXNjID0gIiI7CiAgICAgIGlmICh0aGlzLiRzbG90cyAmJiB0aGlzLiRzbG90cy5sYWJlbGRlc2MgJiYgdGhpcy4kc2xvdHMubGFiZWxkZXNjWzBdLmNoaWxkcmVuICYmIHRoaXMuJHNsb3RzLmxhYmVsZGVzY1swXS5jaGlsZHJlblswXS50ZXh0KSB7CiAgICAgICAgbGFiZWxkZXNjID0gdGhpcy4kc2xvdHMubGFiZWxkZXNjWzBdLmNoaWxkcmVuWzBdLnRleHQ7CiAgICAgICAgcmV0dXJuIHRoaXMubmFtZSA/IHRoaXMubmFtZSA6IHV0aWxzLmdldE5hbWUoKSArICItIiArIGxhYmVsZGVzYzsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gdGhpcy5uYW1lID8gdGhpcy5uYW1lIDogdXRpbHMuZ2V0TmFtZSgpOwogICAgICB9CiAgICB9CiAgfSwKICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkgewogICAgdGhpcy5vcHRpb25zID0gdGhpcy5zZWxlY3RsaXN0ID8gdGhpcy5zZWxlY3RsaXN0IDogW107CiAgICB2YXIgX21lID0gdGhpczsKICAgIHZhciBfaG90ZW50VXRpbHMkZ2V0U3ViU2MgPSBob3RlbnRVdGlscy5nZXRTdWJTY29wZUVsQW5kSW5kZXgoX21lLiRlbCksCiAgICAgIHN1YlNjb3BlRWwgPSBfaG90ZW50VXRpbHMkZ2V0U3ViU2Muc3ViU2NvcGVFbDsKICAgIGlmIChzdWJTY29wZUVsKSB7CiAgICAgIHRoaXMuY3VyU3ViSW5kZXggPSBzdWJTY29wZUVsLmRhdGFzZXRbImluZGV4Il07CiAgICB9CiAgICB2YXIgZ2FuZ2VkID0gdGhpcy5nYW5nZWQ7CiAgICAvL+WIpOaWreaYr+WQpuacieWPguaVsOe7keWumgogICAgaWYgKGdhbmdlZCAmJiBnYW5nZWQuYmluZCAmJiBKU09OLnN0cmluZ2lmeShnYW5nZWQuYmluZCkgIT0gInt9IiAmJiB0aGlzLmNvbmZpZykgewogICAgICB2YXIgYmluZCA9IGdhbmdlZC5iaW5kOwogICAgICB2YXIgZm9ybVZtID0gdXRpbHMuZ2V0T25saW5lRm9ybUluc3RhbmNlKF9tZSk7CiAgICAgIGZvciAodmFyIGtleSBpbiBiaW5kKSB7CiAgICAgICAgdmFyIHBhcmFtRG9tID0gbnVsbDsKICAgICAgICBpZiAodGhpcy5jdXJTdWJJbmRleCA9PSBudWxsKSB7CiAgICAgICAgICBwYXJhbURvbSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1ttb2RlbC1uYW1lPSInICsgYmluZFtrZXldICsgJyJdJyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHZhciBzdWJGaWxlZE5hbWUgPSBiaW5kW2tleV0uc3BsaXQoIi4iKVszXTsKICAgICAgICAgIHBhcmFtRG9tID0gc3ViU2NvcGVFbC5xdWVyeVNlbGVjdG9yKCdbbW9kZWwtbmFtZT0iaXRlbS4nICsgc3ViRmlsZWROYW1lICsgJyJdJyk7CiAgICAgICAgfQogICAgICAgIGlmIChwYXJhbURvbSAmJiBwYXJhbURvbS5fX3Z1ZV9fKSB7CiAgICAgICAgICBwYXJhbURvbS5fX3Z1ZV9fLiR3YXRjaCgidmFsdWUiLCBmdW5jdGlvbiAobmV3VmFsLCBvbGRWYWwpIHsKICAgICAgICAgICAgaWYgKG5ld1ZhbCAhPSBvbGRWYWwpIHsKICAgICAgICAgICAgICBfbWUuc2VhcmNoKGZhbHNlLCBuZXdWYWwsIHRydWUpOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9LAogIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQoKSB7CiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLnNlbGVjdGxpc3QgPyB0aGlzLnNlbGVjdGxpc3QgOiBbXTsKICAgIC8v5Yqo5oCB5Lyg5YWlCiAgICBpZiAodGhpcy5nYW5nZWQgJiYgdGhpcy5nYW5nZWQuYWxpYXMgJiYgdGhpcy5vcHRpb25zLmxlbmd0aCA8IDEgJiYgdGhpcy5nYW5nZWQpIHsKICAgICAgdmFyIHRoaXNfID0gdGhpczsKICAgICAgdGhpc18uJHN0b3JlLmRpc3BhdGNoKCJmb3JtL2dldEJ5QWxpYXNDcSIsIHRoaXNfLmdhbmdlZC5hbGlhcykudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgdGhpc18uY29uZmlnID0gcmVzOwogICAgICAgIHZhciBvYmpJc0VtcHR5ID0gdGhpc18ub2JqSXNFbXB0eSh0aGlzXy5nYW5nZWQuYmluZCk7CiAgICAgICAgaWYgKHRoaXNfLmdhbmdlZCAmJiAhb2JqSXNFbXB0eSkgewogICAgICAgICAgdGhpc18uaGFuZGVsSW5pdEdhbmdlZHNlYXJjaCgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aGlzXy5zZWFyY2goZmFsc2UsICIiKTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfQogICAgdGhpcy4kdmFsaWRhdG9yID0gdGhpcy4kcm9vdC4kdmFsaWRhdG9yOwogIH0sCiAgbWV0aG9kczogewogICAgLy/liKTmlq3lr7nosaHph4zpnaLnmoTlgLzmmK/lkKbkuLrnqboKICAgIG9iaklzRW1wdHk6IGZ1bmN0aW9uIG9iaklzRW1wdHkob2JqKSB7CiAgICAgIGZvciAodmFyIGtleSBpbiBvYmopIHsKICAgICAgICBpZiAob2JqW2tleV0pIHsKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIHRydWU7CiAgICB9LAogICAgZG9RdWVyeTogZnVuY3Rpb24gZG9RdWVyeShwYXJhbSkgewogICAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkgewogICAgICAgIHZhciBwYXJhbUxvYWREYXRhLCBwSW5zdCwgaSwgYmluZFZhbCwgb2JqLCBxdWVyeVVybCwgcmVxdWVzdE1ldGhvZDsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBwYXJhbUxvYWREYXRhID0gW107CiAgICAgICAgICAgICAgcEluc3QgPSB1dGlscy5nZXRPbmxpbmVGb3JtSW5zdGFuY2UoX3RoaXMyKTsgLy/ojrflj5blhbPogZTmn6Xor6Lnu5HlrprnmoTooajljZXlj4LmlbAKICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGFyYW0uY29uZGl0aW9uZmllbGQubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIGlmIChwYXJhbS5jb25kaXRpb25maWVsZFtpXS5maWVsZFBhdGggIT0gIiIpIHsKICAgICAgICAgICAgICAgICAgYmluZFZhbCA9IHV0aWxzLmdldFZhbHVlQnlQYXRoKHBJbnN0LCBwYXJhbS5jb25kaXRpb25maWVsZFtpXS5maWVsZFBhdGgsIG51bGwpOwogICAgICAgICAgICAgICAgICBvYmogPSB7CiAgICAgICAgICAgICAgICAgICAga2V5OiBwYXJhbS5jb25kaXRpb25maWVsZFtpXS5maWVsZCwKICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYmluZFZhbAogICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICBwYXJhbUxvYWREYXRhLnB1c2gob2JqKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcXVlcnlVcmwgPSBwYXJhbS5kc1R5cGUgPT0gImRhdGFTb3VyY2UiID8gIiR7Zm9ybX0vZm9ybS9jdXN0b21RdWVyeS92MS9kb1F1ZXJ5P2FsaWFzPSIgKyBwYXJhbS5hbGlhcyArICImcGFnZT0xIiA6IHBhcmFtLnVybDsKICAgICAgICAgICAgICByZXF1ZXN0TWV0aG9kID0gIlBPU1QiOyAvL+WmguaenOWFs+iBlOaVsOaNruWIl+ihqOafpeivouaVsOaNruS4jeaYr+aVsOaNrua6kOWImeivt+axguaWueazleS4unJlc3RmdWzphY3nva7nmoTor7fmsYLmlrnlvI8KICAgICAgICAgICAgICBpZiAocGFyYW0uZHNUeXBlICE9ICdkYXRhU291cmNlJykgewogICAgICAgICAgICAgICAgcmVxdWVzdE1ldGhvZCA9IHBhcmFtLnJlcXVlc3RUeXBlOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAvL+afpeivouaVsOaNrgogICAgICAgICAgICAgIHJlcS5yZXF1ZXN0KHsKICAgICAgICAgICAgICAgIHVybDogcXVlcnlVcmwsCiAgICAgICAgICAgICAgICBtZXRob2Q6IHJlcXVlc3RNZXRob2QsCiAgICAgICAgICAgICAgICBkYXRhOiBwYXJhbUxvYWREYXRhCiAgICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgICAgICAgICAvL+WIpOaWreaYr+WQpuacieWFs+iBlOafpeivouaVsOaNrui/lOWbngogICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnJvd3MubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgICAvL+iOt+WPluWFs+iBlOafpeivoui/lOWbnueahOihqOWNleWPguaVsAogICAgICAgICAgICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgcGFyYW0ucmVzdWx0ZmllbGQubGVuZ3RoOyBfaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtLnJlc3VsdGZpZWxkW19pXS5maWVsZFBhdGggIT0gIiIpIHsKICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWwgPSAiIjsKICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgcmVzLmRhdGEucm93cy5sZW5ndGg7IGorKykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEucm93c1tqXVtwYXJhbS5yZXN1bHRmaWVsZFtfaV0uY29tbWVudF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSB2YWwgKyByZXMuZGF0YS5yb3dzW2pdW3BhcmFtLnJlc3VsdGZpZWxkW19pXS5jb21tZW50XSArICIsIjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgdmFsID0gdmFsLnN1YnN0cmluZygwLCB2YWwubGVuZ3RoIC0gMSk7CiAgICAgICAgICAgICAgICAgICAgICAvL+i1i+WAvOe7mee7keWumueahOWtl+autQogICAgICAgICAgICAgICAgICAgICAgdXRpbHMuc2V0VmFsdWVCeVBhdGgocEluc3QsIHBhcmFtLnJlc3VsdGZpZWxkW19pXS5maWVsZFBhdGgsIHZhbCwgbnVsbCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAvL+iOt+WPluWFs+iBlOafpeivoui/lOWbnueahOihqOWNleWPguaVsAogICAgICAgICAgICAgICAgICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBwYXJhbS5yZXN1bHRmaWVsZC5sZW5ndGg7IF9pMisrKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtLnJlc3VsdGZpZWxkW19pMl0uZmllbGRQYXRoICE9ICIiKSB7CiAgICAgICAgICAgICAgICAgICAgICAvL+i1i+WAvOe7mee7keWumueahOWtl+autQogICAgICAgICAgICAgICAgICAgICAgdXRpbHMuc2V0VmFsdWVCeVBhdGgocEluc3QsIHBhcmFtLnJlc3VsdGZpZWxkW19pMl0uZmllbGRQYXRoLCAiIiwgbnVsbCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGNhc2UgNzoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICBoYW5kZWxJbml0R2FuZ2Vkc2VhcmNoOiBmdW5jdGlvbiBoYW5kZWxJbml0R2FuZ2Vkc2VhcmNoKCkgewogICAgICB2YXIgX21lID0gdGhpczsKICAgICAgdmFyIF9ob3RlbnRVdGlscyRnZXRTdWJTYzIgPSBob3RlbnRVdGlscy5nZXRTdWJTY29wZUVsQW5kSW5kZXgoX21lLiRlbCksCiAgICAgICAgc3ViU2NvcGVFbCA9IF9ob3RlbnRVdGlscyRnZXRTdWJTYzIuc3ViU2NvcGVFbDsKICAgICAgaWYgKHN1YlNjb3BlRWwpIHsKICAgICAgICB0aGlzLmN1clN1YkluZGV4ID0gc3ViU2NvcGVFbC5kYXRhc2V0WyJpbmRleCJdOwogICAgICB9CiAgICAgIHZhciBnYW5nZWQgPSB0aGlzLmdhbmdlZDsKICAgICAgLy/liKTmlq3mmK/lkKbmnInlj4LmlbDnu5HlrpoKICAgICAgaWYgKGdhbmdlZCAmJiBKU09OLnN0cmluZ2lmeShnYW5nZWQuYmluZCkgIT0gInt9IiAmJiB0aGlzLmNvbmZpZykgewogICAgICAgIHZhciBiaW5kID0gZ2FuZ2VkLmJpbmQ7CiAgICAgICAgdmFyIGZvcm1WbSA9IHV0aWxzLmdldE9ubGluZUZvcm1JbnN0YW5jZShfbWUpOwogICAgICAgIGlmICh0aGlzLmN1clN1YkluZGV4ID09IG51bGwpIHsKICAgICAgICAgIGZvciAodmFyIGtleSBpbiBiaW5kKSB7CiAgICAgICAgICAgIHZhciBwSW5zdCA9IHV0aWxzLmdldE9ubGluZUZvcm1JbnN0YW5jZShfbWUpOwogICAgICAgICAgICB2YXIgdmFsID0gdXRpbHMuZ2V0VmFsdWVCeVBhdGgocEluc3QsIGJpbmRba2V5XSk7CiAgICAgICAgICAgIF9tZS5zZWFyY2goZmFsc2UsIHZhbCk7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGZvciAodmFyIGtleSBpbiBiaW5kKSB7CiAgICAgICAgICAgIHZhciBzdWJGaWxlZE5hbWUgPSBiaW5kW2tleV0uc3BsaXQoIi4iKVszXTsKICAgICAgICAgICAgdmFyIHBhcmFtRG9tID0gc3ViU2NvcGVFbC5xdWVyeVNlbGVjdG9yKCdbbW9kZWwtbmFtZT0iaXRlbS4nICsgc3ViRmlsZWROYW1lICsgJyJdJyk7CiAgICAgICAgICAgIGlmIChwYXJhbURvbSAmJiBwYXJhbURvbS5fX3Z1ZV9fICYmIHBhcmFtRG9tLl9fdnVlX18udmFsdWUpIHsKICAgICAgICAgICAgICB2YXIgbmV3VmFsID0gcGFyYW1Eb20uX192dWVfXy52YWx1ZSArICIiOwogICAgICAgICAgICAgIF9tZS5zZWFyY2goZmFsc2UsIG5ld1ZhbCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICBjbGVhcjogZnVuY3Rpb24gY2xlYXIoKSB7CiAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7CiAgICAgICAgdGhpcy50ZW1wb3B0aW9ucyA9IFtdOwogICAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHsKICAgICAgICAgIHRoaXMuJHJlZnMudHJlZXNlbGVjdEVsVHJlZS5zZXRDaGVja2VkS2V5cyhbXSwgdHJ1ZSk7CiAgICAgICAgfSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy4kcmVmcy50cmVlc2VsZWN0RWxUcmVlLnNldEN1cnJlbnROb2RlKHt9KTsKICAgICAgfQogICAgfSwKICAgIGNsaWNrTmF0aXZlOiBmdW5jdGlvbiBjbGlja05hdGl2ZSgpIHsKICAgICAgdmFyIF90aGlzMyA9IHRoaXM7CiAgICAgIC8v5Yqo5oCB5Lyg5YWlCiAgICAgIGlmICh0aGlzLmdhbmdlZCAmJiB0aGlzLmdhbmdlZC5hbGlhcyAmJiB0aGlzLm9wdGlvbnMubGVuZ3RoIDwgMSkgewogICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCJmb3JtL2dldEJ5QWxpYXNDcSIsIHRoaXMuZ2FuZ2VkLmFsaWFzKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgIF90aGlzMy5jb25maWcgPSByZXM7CiAgICAgICAgICBfdGhpczMuc2VhcmNoKCk7CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0sCiAgICBzZWxlY3RCbHVyOiBmdW5jdGlvbiBzZWxlY3RCbHVyKHZhbCkgewogICAgICB0aGlzLnNlYXJjaCgpOwogICAgfSwKICAgIGhhbmRsZUNoZWNrQ2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVDaGVja0NoYW5nZShkYXRhKSB7CiAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7CiAgICAgICAgdmFyIGNoZWNrZWROb2RlcyA9IHRoaXMuJHJlZnMudHJlZXNlbGVjdEVsVHJlZS5nZXRDaGVja2VkTm9kZXMoKTsKICAgICAgICB2YXIgbW9kZWxWYWx1ZSA9IFtdOwogICAgICAgIHRoaXMudGVtcG9wdGlvbnMgPSBjaGVja2VkTm9kZXM7CiAgICAgICAgdmFyIF9pdGVyYXRvcjMgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihjaGVja2VkTm9kZXMpLAogICAgICAgICAgX3N0ZXAzOwogICAgICAgIHRyeSB7CiAgICAgICAgICBmb3IgKF9pdGVyYXRvcjMucygpOyAhKF9zdGVwMyA9IF9pdGVyYXRvcjMubigpKS5kb25lOykgewogICAgICAgICAgICB2YXIgX2RhdGEyID0gX3N0ZXAzLnZhbHVlOwogICAgICAgICAgICBtb2RlbFZhbHVlLnB1c2goX2RhdGEyLmtleSk7CiAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaCAoZXJyKSB7CiAgICAgICAgICBfaXRlcmF0b3IzLmUoZXJyKTsKICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgX2l0ZXJhdG9yMy5mKCk7CiAgICAgICAgfQogICAgICAgIHRoaXMuJGVtaXQoImlucHV0IiwgbW9kZWxWYWx1ZS5qb2luKCIsIikpOwogICAgICB9CiAgICB9LAogICAgaGFuZGxlTm9kZUNsaWNrOiBmdW5jdGlvbiBoYW5kbGVOb2RlQ2xpY2soZGF0YSkgewogICAgICB2YXIgX3RoaXM0ID0gdGhpczsKICAgICAgdGhpcy4kcmVmcy50cmVlc2VsZWN0RWxUcmVlLnNldENoZWNrZWQoZGF0YSwgdHJ1ZSk7CiAgICAgIGlmICghdGhpcy5tdWx0aXBsZSkgewogICAgICAgIHRoaXMuJGVtaXQoImlucHV0IiwgZGF0YS5rZXkpOwogICAgICAgIGlmIChkYXRhLmtleSkgewogICAgICAgICAgLy/liKTmlq3lr7nor53moYbmmK/lkKbnu5HlrprkuoblhbPogZTmn6Xor6IKICAgICAgICAgIGlmICh0aGlzLmN1c3RvbVF1ZXJ5ICYmIHRoaXMuY3VzdG9tUXVlcnkuY3VzdFF1ZXJ5SnNvbiAmJiB0aGlzLmN1c3RvbVF1ZXJ5LmN1c3RRdWVyeUpzb24ubGVuZ3RoID4gMCkgewogICAgICAgICAgICB2YXIgY3VzdFF1ZXJ5SnNvbiA9IHRoaXMuY3VzdG9tUXVlcnkuY3VzdFF1ZXJ5SnNvbjsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjdXN0UXVlcnlKc29uLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgaWYgKGN1c3RRdWVyeUpzb25baV0uY29uZGl0aW9uZmllbGQubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgdGhpcy5kb1F1ZXJ5KGN1c3RRdWVyeUpzb25baV0pOwogICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJbIiArIGN1c3RRdWVyeUpzb25baV0uY29tbWVudCArICJd5YWz6IGU5p+l6K+i5Y+W5YC85Y+C5pWw5pyq57uR5a6a6KGo5Y2V5a2X5q61Iik7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHRoaXMuJHJlZnMudHJlZXNlbGVjdC5ibHVyKCk7CiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICBfdGhpczQuJHZhbGlkYXRvci52YWxpZGF0ZSgpOwogICAgICAgIH0pOwogICAgICB9IGVsc2UgaWYgKHRoaXMubXVsdGlwbGUpIHsKICAgICAgICB2YXIgY2hlY2tlZE5vZGVzID0gdGhpcy4kcmVmcy50cmVlc2VsZWN0RWxUcmVlLmdldENoZWNrZWROb2RlcygpOwogICAgICAgIHZhciBtb2RlbFZhbHVlID0gW107CiAgICAgICAgdGhpcy50ZW1wb3B0aW9ucyA9IGNoZWNrZWROb2RlczsKICAgICAgICB2YXIgX2l0ZXJhdG9yNCA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKGNoZWNrZWROb2RlcyksCiAgICAgICAgICBfc3RlcDQ7CiAgICAgICAgdHJ5IHsKICAgICAgICAgIGZvciAoX2l0ZXJhdG9yNC5zKCk7ICEoX3N0ZXA0ID0gX2l0ZXJhdG9yNC5uKCkpLmRvbmU7KSB7CiAgICAgICAgICAgIHZhciBfZGF0YTMgPSBfc3RlcDQudmFsdWU7CiAgICAgICAgICAgIG1vZGVsVmFsdWUucHVzaChfZGF0YTMua2V5KTsKICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgICAgIF9pdGVyYXRvcjQuZShlcnIpOwogICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICBfaXRlcmF0b3I0LmYoKTsKICAgICAgICB9CiAgICAgICAgdGhpcy4kZW1pdCgiaW5wdXQiLCBtb2RlbFZhbHVlLmpvaW4oIiwiKSk7CiAgICAgIH0KICAgIH0sCiAgICBmaWx0ZXJOb2RlOiBmdW5jdGlvbiBmaWx0ZXJOb2RlKHZhbHVlLCBkYXRhKSB7CiAgICAgIGlmICghdmFsdWUpIHJldHVybiB0cnVlOwogICAgICByZXR1cm4gZGF0YS52YWx1ZS5pbmRleE9mKHZhbHVlKSAhPT0gLTE7CiAgICB9LAogICAgZmlsdGVyTWV0aG9kOiBmdW5jdGlvbiBmaWx0ZXJNZXRob2QocXVlcnkpIHsKICAgICAgdGhpcy4kcmVmcy50cmVlc2VsZWN0RWxUcmVlLmZpbHRlcihxdWVyeSk7CiAgICB9LAogICAgcmVtb3RlTWV0aG9kOiBmdW5jdGlvbiByZW1vdGVNZXRob2QodmFsKSB7CiAgICAgIGlmICh2YWwpIHsKICAgICAgICB0aGlzLnNlYXJjaChmYWxzZSwgdmFsKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLnBhcmFtID0gIiI7CiAgICAgICAgdGhpcy5zZWFyY2goKTsKICAgICAgfQogICAgfSwKICAgIGhhbmRsZUN1cnJlbnRDaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZUN1cnJlbnRDaGFuZ2UoY3VycmVudFBhZ2UpIHsKICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IGN1cnJlbnRQYWdlOwogICAgICB0aGlzLnNlYXJjaChjdXJyZW50UGFnZSk7CiAgICB9LAogICAgc2VhcmNoOiBmdW5jdGlvbiBzZWFyY2goY3VycmVudFBhZ2UsIHBhcmFtLCBnYW5nZWRDaGFuZ2UpIHsKICAgICAgdmFyIF90aGlzNSA9IHRoaXM7CiAgICAgIHRoaXMub3B0aW9ucyA9IFtdOwogICAgICBpZiAoZ2FuZ2VkQ2hhbmdlKSB7CiAgICAgICAgdGhpcy4kZW1pdCgiaW5wdXQiLCAiIik7CiAgICAgIH0KICAgICAgdmFyIG9iaklzRW1wdHkgPSB0aGlzLm9iaklzRW1wdHkodGhpcy5nYW5nZWQuYmluZCk7CiAgICAgIGlmICghdGhpcy5jb25maWcgfHwgdGhpcy5nYW5nZWQuYmluZCAmJiAhb2JqSXNFbXB0eSAmJiAhcGFyYW0pIHJldHVybjsKICAgICAgdmFyIHN0ciA9IHRoaXMuY29uZmlnOwogICAgICB2YXIgX3RoaXMgPSB0aGlzOwogICAgICB2YXIgZ2FuZ2VkID0gdGhpcy5nYW5nZWQ7CiAgICAgIHRoaXMucGFnZVNpemUgPSBzdHIucGFnZVNpemU7CiAgICAgIC8vIGlmKHN0ci5uZWVkUGFnZSA9PT0gMSl7CiAgICAgIHZhciBwYWdlQmVhbiA9IHsKICAgICAgICBwYWdlQmVhbjogewogICAgICAgICAgcGFnZTogY3VycmVudFBhZ2UgPyBjdXJyZW50UGFnZSA6IDEsCiAgICAgICAgICBwYWdlU2l6ZTogc3RyLnBhZ2VTaXplLAogICAgICAgICAgc2hvd1RvdGFsOiAidHJ1ZSIKICAgICAgICB9CiAgICAgIH07CiAgICAgIGlmIChwYXJhbSkgewogICAgICAgIGlmIChzdHIuZHNUeXBlID09ICJkYXRhU291cmNlIikgewogICAgICAgICAgdmFyIEJhc2U2NCA9IHJlcXVpcmUoImpzLWJhc2U2NCIpLkJhc2U2NDsKICAgICAgICAgIHN0ci5jdXJyZW50UGFnZSA9IGN1cnJlbnRQYWdlID8gY3VycmVudFBhZ2UgOiAxOwogICAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGdhbmdlZC5iaW5kKSA9PT0gInt9IikgewogICAgICAgICAgICBzdHIucXVlcnlEYXRhID0gQmFzZTY0LmVuY29kZShKU09OLnN0cmluZ2lmeShbewogICAgICAgICAgICAgIGtleTogZ2FuZ2VkLnZhbHVlQmluZCwKICAgICAgICAgICAgICB2YWx1ZTogcGFyYW0KICAgICAgICAgICAgfV0pKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHZhciBxdWVyeURhdGEgPSBbXTsKICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGdhbmdlZC5iaW5kKSB7CiAgICAgICAgICAgICAgdmFyIHBJbnN0ID0gdXRpbHMuZ2V0T25saW5lRm9ybUluc3RhbmNlKF90aGlzKTsKICAgICAgICAgICAgICB2YXIgdmFsID0gdXRpbHMuZ2V0VmFsdWVCeVBhdGgocEluc3QsIGdhbmdlZC5iaW5kW2tleV0sIHRoaXMuY3VyU3ViSW5kZXgpOwogICAgICAgICAgICAgIGlmICh2YWwpIHsKICAgICAgICAgICAgICAgIHF1ZXJ5RGF0YS5wdXNoKHsKICAgICAgICAgICAgICAgICAga2V5OiBrZXksCiAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWwKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBxdWVyeURhdGEucHVzaCh7CiAgICAgICAgICAgICAgICAgIGtleToga2V5LAogICAgICAgICAgICAgICAgICB2YWx1ZTogcGFyYW0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBzdHIucXVlcnlEYXRhID0gQmFzZTY0LmVuY29kZShKU09OLnN0cmluZ2lmeShxdWVyeURhdGEpKTsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgdmFyIHRlbXBsYXRlUGEgPSB0aGlzLmNvbmZpZy5kYXRhUGFyYW07CiAgICAgICAgICBpZiAodGhpcy5jb25maWcucmVxdWVzdFR5cGUgPT0gIlBPU1QiICYmIHRlbXBsYXRlUGEpIHsKICAgICAgICAgICAgdmFyIGNvbmRpdGlvbmZpZWxkID0gSlNPTi5wYXJzZShzdHIuY29uZGl0aW9uZmllbGQpOwogICAgICAgICAgICBjb25kaXRpb25maWVsZC5mb3JFYWNoKGZ1bmN0aW9uIChlbGUpIHsKICAgICAgICAgICAgICB2YXIgcEluc3QgPSB1dGlscy5nZXRPbmxpbmVGb3JtSW5zdGFuY2UoX3RoaXMpOwogICAgICAgICAgICAgIHZhciB2YWwgPSB1dGlscy5nZXRWYWx1ZUJ5UGF0aChwSW5zdCwgZ2FuZ2VkLmJpbmRbZWxlLmZpZWxkXSk7CiAgICAgICAgICAgICAgaWYgKHZhbCkgewogICAgICAgICAgICAgICAgdGVtcGxhdGVQYSA9IHRlbXBsYXRlUGEucmVwbGFjZShuZXcgUmVnRXhwKCJcXHsiICsgZWxlLmZpZWxkICsgIlxcfSIsICJnIiksIHZhbCk7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHRlbXBsYXRlUGEgPSB0ZW1wbGF0ZVBhLnJlcGxhY2UobmV3IFJlZ0V4cCgiXFx7IiArIGVsZS5maWVsZCArICJcXH0iLCAiZyIpLCBwYXJhbSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgIH0gZWxzZSB7fQogICAgICAgICAgc3RyLnBhZ2VCZWFuID0gdXRpbHMucGFyc2VUb0pzb24odGVtcGxhdGVQYSk7CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIHN0ci5wYWdlQmVhbiA9IHBhZ2VCZWFuOwogICAgICAgIHN0ci5jdXJyZW50UGFnZSA9IGN1cnJlbnRQYWdlID8gY3VycmVudFBhZ2UgOiAxOwogICAgICAgIHN0ci5xdWVyeURhdGEgPSAiIjsKICAgICAgfQogICAgICAvL30KICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goImZvcm0vc2VsZWN0UXVlcnkiLCBzdHIpLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgIGlmIChfdGhpczUuY29uZmlnICYmIF90aGlzNS5jb25maWcuZHNUeXBlID09PSAicmVzdGZ1bCIpIHsKICAgICAgICAgIF90aGlzLm9wdGlvbnMgPSByZXMucm93czsKICAgICAgICAgIC8vdHJlZeaVsOe7hOi9rGxpc3QKICAgICAgICAgIF90aGlzNS5hZGRTZWxlY3RMaXN0KF90aGlzLm9wdGlvbnMpOwogICAgICAgICAgLy/lpITnkIblj6ror7vlm57loavmmL7npLoKICAgICAgICAgIGlmIChfdGhpcy5pbnB1dFZhbCAmJiBfdGhpcy5pbnB1dFZhbC5jb25zdHJ1Y3RvciA9PSBBcnJheSAmJiBfdGhpcy5pbnB1dFZhbC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgX3RoaXMuaW5wdXRWYWwubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICBfdGhpczUuZmluZERlc2MoX3RoaXMub3B0aW9ucywgX3RoaXMuaW5wdXRWYWxbaV0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8v6buY6K6k6YCJ5Lit5qCR6IqC54K5CiAgICAgICAgICAgIGlmIChfdGhpczUuaW5wdXRXcml0ZWFibGUpIHsKICAgICAgICAgICAgICBfdGhpczUuJHJlZnMudHJlZXNlbGVjdEVsVHJlZS5zZXRDaGVja2VkS2V5cyhfdGhpcy5pbnB1dFZhbCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIF90aGlzNS5maW5kRGVzYyhfdGhpcy5vcHRpb25zLCBfdGhpcy5pbnB1dFZhbCk7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoX3RoaXM1LnZhbHVlRGVzYyAhPSAiIikgewogICAgICAgICAgICBfdGhpczUudmFsdWVEZXNjID0gX3RoaXM1LnZhbHVlRGVzYy5zdWJzdHJpbmcoMCwgX3RoaXM1LnZhbHVlRGVzYy5sZW5ndGggLSAxKTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgX3RoaXMudG90YWwgPSByZXMudG90YWw7CiAgICAgICAgX3RoaXMub3B0aW9ucyA9IFtdOwogICAgICAgIHJlcy5yb3dzLmZvckVhY2goZnVuY3Rpb24gKG0pIHsKICAgICAgICAgIHZhciBvcHRpb24gPSB7fTsKICAgICAgICAgIGlmIChfdGhpcy5nYW5nZWQudmFsdWVCaW5kKSB7CiAgICAgICAgICAgIG9wdGlvbi5rZXkgPSBtW2dhbmdlZC52YWx1ZUJpbmRdICsgIiI7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoX3RoaXMuZ2FuZ2VkLmxhYmVsQmluZCkgewogICAgICAgICAgICBvcHRpb24udmFsdWUgPSBtW2dhbmdlZC5sYWJlbEJpbmRdOwogICAgICAgICAgfQogICAgICAgICAgX3RoaXMub3B0aW9ucy5wdXNoKG9wdGlvbik7CiAgICAgICAgfSk7CgogICAgICAgIC8vdHJlZeaVsOe7hOi9rGxpc3QKICAgICAgICBfdGhpczUuYWRkU2VsZWN0TGlzdChfdGhpcy5vcHRpb25zKTsKICAgICAgICBpZiAoX3RoaXMuaW5wdXRWYWwgJiYgX3RoaXMuaW5wdXRWYWwuY29uc3RydWN0b3IgPT0gQXJyYXkgJiYgX3RoaXMuaW5wdXRWYWwubGVuZ3RoID4gMCkgewogICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBfdGhpcy5pbnB1dFZhbC5sZW5ndGg7IGorKykgewogICAgICAgICAgICBfdGhpczUuZmluZERlc2MoX3RoaXMub3B0aW9ucywgX3RoaXMuaW5wdXRWYWxbal0pOwogICAgICAgICAgfQogICAgICAgICAgLy/pu5jorqTpgInkuK3moJHoioLngrkKICAgICAgICAgIF90aGlzNS4kbmV4dFRpY2soZnVuY3Rpb24gKCkgewogICAgICAgICAgICBfdGhpcy4kcmVmcy50cmVlc2VsZWN0RWxUcmVlICYmIF90aGlzLiRyZWZzLnRyZWVzZWxlY3RFbFRyZWUuc2V0Q2hlY2tlZEtleXMoX3RoaXMuaW5wdXRWYWwpOwogICAgICAgICAgfSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIF90aGlzNS5maW5kRGVzYyhfdGhpcy5vcHRpb25zLCBfdGhpcy5pbnB1dFZhbCk7CiAgICAgICAgfQogICAgICAgIGlmIChfdGhpczUudmFsdWVEZXNjICE9ICIiKSB7CiAgICAgICAgICBfdGhpczUudmFsdWVEZXNjID0gX3RoaXM1LnZhbHVlRGVzYy5zdWJzdHJpbmcoMCwgX3RoaXM1LnZhbHVlRGVzYy5sZW5ndGggLSAxKTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSwKICAgIGZpbmREZXNjOiBmdW5jdGlvbiBmaW5kRGVzYyhsaXN0LCBrZXkpIHsKICAgICAgaWYgKGxpc3QgJiYgbGlzdC5sZW5ndGggPiAwKSB7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICBpZiAobGlzdFtpXS5rZXkgPT0ga2V5KSB7CiAgICAgICAgICAgIHRoaXMudmFsdWVEZXNjICs9IGxpc3RbaV0udmFsdWUgKyAiLCI7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChsaXN0W2ldLmNoaWxkcmVuKSB7CiAgICAgICAgICAgIHRoaXMuZmluZERlc2MobGlzdFtpXS5jaGlsZHJlbiwga2V5KTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICBhZGRTZWxlY3RMaXN0OiBmdW5jdGlvbiBhZGRTZWxlY3RMaXN0KGxpc3QpIHsKICAgICAgdmFyIF90aGlzNiA9IHRoaXM7CiAgICAgIGlmIChsaXN0ICYmIGxpc3QubGVuZ3RoID4gMCkgewogICAgICAgIGxpc3QuZm9yRWFjaChmdW5jdGlvbiAobCkgewogICAgICAgICAgX3RoaXM2LnRlbXBvcHRpb25zLnB1c2gobCk7CiAgICAgICAgICBpZiAobC5jaGlsZHJlbikgewogICAgICAgICAgICBfdGhpczYuYWRkU2VsZWN0TGlzdChsLmNoaWxkcmVuKTsKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfQogICAgfQogIH0KfTs="},null]}