@burgan-tech/morph-touch-runtime 0.0.7 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/burgan-tech-morph-touch-runtime-0.0.9.tgz +0 -0
- package/morph-touch/Functions/get-absence-entry.1.0.0.json +1 -1
- package/morph-touch/Functions/get-advisor-stats.1.0.0.json +1 -1
- package/morph-touch/Functions/get-available-slots.1.0.0.json +1 -1
- package/morph-touch/Functions/get-chat-rooms.http +4 -4
- package/morph-touch/Functions/get-rezervations.1.0.0.json +1 -1
- package/morph-touch/Functions/src/GetAbsenceEntryMapping.csx +18 -4
- package/morph-touch/Functions/src/GetAdvisorStatsMapping.csx +22 -8
- package/morph-touch/Functions/src/GetAvailableSlotsMapping.csx +22 -14
- package/morph-touch/Functions/src/GetRezervationsMapping.csx +19 -2
- package/morph-touch/Functions/src/SendCancelNotificationMapping.csx +27 -2
- package/morph-touch/Tasks/check-existing-permanent-chat-room.1.0.0.json +1 -1
- package/morph-touch/Tasks/login-for-chat.1.0.0.json +27 -0
- package/morph-touch/Tasks/register-for-chat.1.0.0.json +27 -0
- package/morph-touch/Tasks/start-register-matrix-user.1.0.0.json +22 -0
- package/morph-touch/Workflows/chat-room.json +196 -14
- package/morph-touch/Workflows/notification-sender.json +2 -2
- package/morph-touch/Workflows/register-matrix-user.json +128 -0
- package/morph-touch/Workflows/rezervation-start.json +28 -2
- package/morph-touch/Workflows/rezervation-transfer.json +34 -8
- package/morph-touch/Workflows/rezervation-update.json +5 -5
- package/morph-touch/Workflows/rezervation.json +135 -45
- package/morph-touch/Workflows/src/AlwaysTrueRule.csx +0 -3
- package/morph-touch/Workflows/src/CanStartRezervationTimerMapping.csx +18 -3
- package/morph-touch/Workflows/src/ChatRoomRemoveMapping.csx +10 -1
- package/morph-touch/Workflows/src/ChatRoomTransferInviteMapping.csx +10 -1
- package/morph-touch/Workflows/src/ChatRoomTransferRemoveMapping.csx +9 -1
- package/morph-touch/Workflows/src/ChatRoomUpdateMapping.csx +10 -1
- package/morph-touch/Workflows/src/CheckDuplicateRezervationMapping.csx +17 -3
- package/morph-touch/Workflows/src/CheckExistingPermanentChatRoomMapping.csx +4 -7
- package/morph-touch/Workflows/src/CheckRandevuTimeMapping.csx +16 -2
- package/morph-touch/Workflows/src/CreateChatRoomForRezervationMapping.csx +12 -2
- package/morph-touch/Workflows/src/CreatePermanentChatRoomMapping.csx +11 -1
- package/morph-touch/Workflows/src/EnrichRezervationsForTransferMapping.csx +18 -4
- package/morph-touch/Workflows/src/FetchRoomMessagesForSummaryMapping.csx +10 -2
- package/morph-touch/Workflows/src/InviteAdvisorForRandevuUpdateMapping.csx +10 -1
- package/morph-touch/Workflows/src/InviteNewAdvisorToRezervationRoomMapping.csx +11 -2
- package/morph-touch/Workflows/src/InviteNewParticipantToRandevuRoomMapping.csx +10 -1
- package/morph-touch/Workflows/src/JoinChatRoomForAddParticipantMapping.csx +5 -1
- package/morph-touch/Workflows/src/JoinChatRoomForRandevuStartMapping.csx +5 -1
- package/morph-touch/Workflows/src/JoinChatRoomForRezervationMapping.csx +4 -0
- package/morph-touch/Workflows/src/JoinMatrixRoomMapping.csx +11 -1
- package/morph-touch/Workflows/src/JoinUserToRoomMapping.csx +6 -0
- package/morph-touch/Workflows/src/LoginForAddParticipantChatMapping.csx +35 -6
- package/morph-touch/Workflows/src/LoginForChatRoomMapping.csx +121 -0
- package/morph-touch/Workflows/src/LoginForJoinUserToRoomMapping.csx +142 -0
- package/morph-touch/Workflows/src/LoginForRandevuStartChatMapping.csx +35 -10
- package/morph-touch/Workflows/src/LoginForTransferChatMapping.csx +153 -0
- package/morph-touch/Workflows/src/RegisterForAddParticipantChatMapping.csx +74 -0
- package/morph-touch/Workflows/src/RegisterForChatRoomMapping.csx +52 -0
- package/morph-touch/Workflows/src/RegisterForJoinUserToRoomMapping.csx +63 -0
- package/morph-touch/Workflows/src/RegisterForRandevuStartChatMapping.csx +56 -0
- package/morph-touch/Workflows/src/RegisterForTransferChatMapping.csx +90 -0
- package/morph-touch/Workflows/src/RegisterMatrixUserMapping.csx +73 -0
- package/morph-touch/Workflows/src/SendPushNotificationMapping.csx +25 -4
- package/morph-touch/Workflows/src/SendSmsNotificationMapping.csx +25 -4
- package/morph-touch/Workflows/src/SendSummaryToNewRoomMapping.csx +10 -2
- package/morph-touch/Workflows/src/SetRoomHistoryVisibilityMapping.csx +12 -4
- package/morph-touch/Workflows/src/ValidateDateForRezervationMapping.csx +16 -2
- package/morph-touch/Workflows/src/ValidateSlotForRandevuUpdateMapping.csx +22 -15
- package/morph-touch/Workflows/src/ValidateSlotForRezervationMapping.csx +23 -16
- package/morph-touch/Workflows/src/ValidateTransferMapping.csx +16 -2
- package/morph-touch/Workflows/start-chat.json +1 -1
- package/morph-touch/doc/morph-touch-domain.en.md +1 -1
- package/morph-touch/doc/morph-touch-domain.md +1 -1
- package/package.json +1 -1
- package/vnext.config.json +1 -1
- package/burgan-tech-morph-touch-runtime-0.0.7.tgz +0 -0
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"extensions": [],
|
|
25
25
|
"sharedTransitions": [
|
|
26
26
|
{
|
|
27
|
-
"key": "cancel",
|
|
27
|
+
"key": "cancel-transfer",
|
|
28
28
|
"target": "cancelled",
|
|
29
29
|
"triggerType": 0,
|
|
30
30
|
"versionStrategy": "Minor",
|
|
@@ -122,7 +122,7 @@
|
|
|
122
122
|
},
|
|
123
123
|
"mapping": {
|
|
124
124
|
"location": "./src/EnrichRezervationsForTransferMapping.csx",
|
|
125
|
-
"code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7CnVzaW5nIEJCVC5Xb3JrZmxvdy5TY3JpcHRpbmc7CnVzaW5nIEJCVC5Xb3JrZmxvdy5EZWZpbml0aW9uczsKCi8vLyA8c3VtbWFyeT4KLy8vIE1hcHBpbmcgZm9yIGVucmljaC1yZXplcnZhdGlvbnMtZm9yLXRyYW5zZmVyIHRhc2sgKERhcHJTZXJ2aWNlVGFzayAtIFR5cGUgMykuCi8vLyBRdWVyaWVzIEFMTCBhY3RpdmUgcmVzZXJ2YXRpb25zIGluIHRoZSBkYXRlIHJhbmdlIGFjcm9zcyBhbGwgYWR2aXNvcnMuCi8vLyBPdXRwdXRIYW5kbGVyIGVucmljaGVzIGVhY2ggc291cmNlIGFkdmlzb3IncyByZXNlcnZhdGlvbiB3aXRoIGEgbGlzdCBvZiBhZHZpc29ycwovLy8gdGhhdCBhcmUgYXZhaWxhYmxlIGJhc2VkIG9uOiByZXNlcnZhdGlvbiBjb25mbGljdHMsIHdvcmtpbmcgaG91cnMsIHB1YmxpYyBob2xpZGF5cywKLy8vIGFuZCBwZXJzb25hbCBsZWF2ZXMgKHVzaW5nIGFic2VuY2VFbnRyaWVzIGZyb20gcHJldmlvdXMgdGFzaykuCi8vLyA8L3N1bW1hcnk+CnB1YmxpYyBjbGFzcyBFbnJpY2hSZXplcnZhdGlvbnNGb3JUcmFuc2Zlck1hcHBpbmcgOiBTY3JpcHRCYXNlLCBJTWFwcGluZwp7CiAgICBwdWJsaWMgVGFzazxTY3JpcHRSZXNwb25zZT4gSW5wdXRIYW5kbGVyKFdvcmtmbG93VGFzayB0YXNrLCBTY3JpcHRDb250ZXh0IGNvbnRleHQpCiAgICB7CiAgICAgICAgdmFyIHNlcnZpY2VUYXNrID0gdGFzayBhcyBEYXByU2VydmljZVRhc2s7CiAgICAgICAgaWYgKHNlcnZpY2VUYXNrID09IG51bGwpCiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKCJUYXNrIG11c3QgYmUgYSBEYXByU2VydmljZVRhc2siKTsKCiAgICAgICAgdmFyIGFwcElkID0gR2V0Q29uZmlnVmFsdWUoIkRBUFJfQVBQX0lEIik7CiAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JFbXB0eShhcHBJZCkpCiAgICAgICAgICAgIHNlcnZpY2VUYXNrLlNldEFwcElkKGFwcElkKTsKCiAgICAgICAgdmFyIGRhdGEgPSBjb250ZXh0Lkluc3RhbmNlPy5EYXRhOwogICAgICAgIGlmIChkYXRhID09IG51bGwpCiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKCJJbnN0YW5jZSBkYXRhIGlzIHJlcXVpcmVkIik7CgogICAgICAgIHZhciBzdGFydERhdGUgPSBHZXRTdHJpbmcoZGF0YSwgInN0YXJ0RGF0ZSIpOwogICAgICAgIHZhciBlbmREYXRlID0gR2V0U3RyaW5nKGRhdGEsICJlbmREYXRlIik7CgogICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JFbXB0eShzdGFydERhdGUpKQogICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnRFeGNlcHRpb24oInN0YXJ0RGF0ZSBpcyByZXF1aXJlZC4iLCAic3RhcnREYXRlIik7CiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPckVtcHR5KGVuZERhdGUpKQogICAgICAgICAgICBlbmREYXRlID0gIjIwOTktMTItMzEiOwoKICAgICAgICB2YXIgY29uZGl0aW9ucyA9IG5ldyBMaXN0PHN0cmluZz4KICAgICAgICB7CiAgICAgICAgICAgICJ7XCJvclwiOlsiICsKICAgICAgICAgICAgICAgICJ7XCJjdXJyZW50U3RhdGVcIjp7XCJlcVwiOlwiYWN0aXZlXCJ9fSwiICsKICAgICAgICAgICAgICAgICJ7XCJjdXJyZW50U3RhdGVcIjp7XCJlcVwiOlwiaW4tbWVldFwifX0iICsKICAgICAgICAgICAgIl19IiwKICAgICAgICAgICAgIntcInN0YXR1c1wiOntcImVxXCI6XCJBXCJ9fSIsCiAgICAgICAgICAgICJ7XCJhdHRyaWJ1dGVzXCI6e1wic3RhcnREYXRlVGltZVwiOntcImRndFwiOlwiIiArIHN0YXJ0RGF0ZSArICJcIn19fSIsCiAgICAgICAgICAgICJ7XCJhdHRyaWJ1dGVzXCI6e1wiZW5kRGF0ZVRpbWVcIjp7XCJkbHRcIjpcIiIgKyBlbmREYXRlICsgIlwifX19IgogICAgICAgIH07CgogICAgICAgIHZhciBmaWx0ZXJKc29uID0gIntcImFuZFwiOlsiICsgc3RyaW5nLkpvaW4oIiwiLCBjb25kaXRpb25zKSArICJdfSI7CiAgICAgICAgdmFyIHF1ZXJ5UGFyYW1zID0gbmV3IExpc3Q8c3RyaW5nPgogICAgICAgIHsKICAgICAgICAgICAgInBhZ2VTaXplPTEwMCIsCiAgICAgICAgICAgICJmaWx0ZXI9IiArIGZpbHRlckpzb24KICAgICAgICB9OwoKICAgICAgICBzZXJ2aWNlVGFzay5TZXRRdWVyeVN0cmluZyhzdHJpbmcuSm9pbigiJiIsIHF1ZXJ5UGFyYW1zKSk7CiAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UoKSk7CiAgICB9CgogICAgcHVibGljIFRhc2s8U2NyaXB0UmVzcG9uc2U+IE91dHB1dEhhbmRsZXIoU2NyaXB0Q29udGV4dCBjb250ZXh0KQogICAgewogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgICAgdmFyIGJvZHkgPSBjb250ZXh0LkJvZHk7CiAgICAgICAgICAgIHZhciBkYXRhID0gY29udGV4dC5JbnN0YW5jZT8uRGF0YTsKCiAgICAgICAgICAgIGlmIChib2R5ICE9IG51bGwgJiYgYm9keS5pc1N1Y2Nlc3MgPT0gZmFsc2UpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZhciBlcnJvck1lc3NhZ2UgPSBib2R5LmVycm9yTWVzc2FnZT8uVG9TdHJpbmcoKSA/PyAiRmFpbGVkIHRvIGZldGNoIGFsbCByZXNlcnZhdGlvbnMiOwogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihlcnJvck1lc3NhZ2UpOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgc291cmNlQWR2aXNvcklkID0gR2V0U3RyaW5nKGRhdGEsICJzb3VyY2VBZHZpc29ySWQiKTsKICAgICAgICAgICAgdmFyIHNvdXJjZVJlemVydmF0aW9ucyA9IGRhdGE/LnJlemVydmF0aW9uczsKCiAgICAgICAgICAgIHZhciByZXNwb25zZURhdGEgPSBib2R5Py5kYXRhOwogICAgICAgICAgICB2YXIgYWxsSXRlbXMgPSByZXNwb25zZURhdGE/Lml0ZW1zOwoKICAgICAgICAgICAgdmFyIHB1YmxpY0hvbGlkYXlzID0gbmV3IExpc3Q8ZHluYW1pYz4oKTsKICAgICAgICAgICAgdmFyIGFkdmlzb3JXb3JrSG91cnNNYXAgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIExpc3Q8ZHluYW1pYz4+KCk7CiAgICAgICAgICAgIHZhciBjb21wYW55V29ya0hvdXJzID0gbmV3IExpc3Q8ZHluYW1pYz4oKTsKICAgICAgICAgICAgdmFyIHBlcnNvbmFsTGVhdmVzTWFwID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBMaXN0PGR5bmFtaWM+PigpOwoKICAgICAgICAgICAgdmFyIGFic2VuY2VFbnRyaWVzID0gZGF0YT8uYWJzZW5jZUVudHJpZXM7CiAgICAgICAgICAgIGlmIChhYnNlbmNlRW50cmllcyAhPSBudWxsKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgZW50cnkgaW4gYWJzZW5jZUVudHJpZXMpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5ID09IG51bGwpIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIHZhciBhdHRycyA9IGVudHJ5Py5hdHRyaWJ1dGVzOwogICAgICAgICAgICAgICAgICAgIGlmIChhdHRycyA9PSBudWxsKSBjb250aW51ZTsKCiAgICAgICAgICAgICAgICAgICAgdmFyIGFic2VuY2VUeXBlID0gR2V0U3RyaW5nKGF0dHJzLCAiYWJzZW5jZVR5cGUiKTsKICAgICAgICAgICAgICAgICAgICB2YXIgYWR2aXNvciA9IEdldFN0cmluZyhhdHRycywgImFkdmlzb3IiKTsKCiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChhYnNlbmNlVHlwZSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInB1YmxpYy1ob2xpZGF5IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpY0hvbGlkYXlzLkFkZChlbnRyeSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAid29ya2luZy1ob3Vycy1jaGFuZ2UiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JFbXB0eShhZHZpc29yKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWFkdmlzb3JXb3JrSG91cnNNYXAuQ29udGFpbnNLZXkoYWR2aXNvcikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkdmlzb3JXb3JrSG91cnNNYXBbYWR2aXNvcl0gPSBuZXcgTGlzdDxkeW5hbWljPigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkdmlzb3JXb3JrSG91cnNNYXBbYWR2aXNvcl0uQWRkKGVudHJ5KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wYW55V29ya0hvdXJzLkFkZChlbnRyeSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAicGVyc29uYWwtbGVhdmUiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JFbXB0eShhZHZpc29yKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBlcnNvbmFsTGVhdmVzTWFwLkNvbnRhaW5zS2V5KGFkdmlzb3IpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJzb25hbExlYXZlc01hcFthZHZpc29yXSA9IG5ldyBMaXN0PGR5bmFtaWM+KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyc29uYWxMZWF2ZXNNYXBbYWR2aXNvcl0uQWRkKGVudHJ5KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIGVucmljaGVkID0gbmV3IExpc3Q8b2JqZWN0PigpOwoKICAgICAgICAgICAgaWYgKHNvdXJjZVJlemVydmF0aW9ucyAhPSBudWxsKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgcmV6IGluIHNvdXJjZVJlemVydmF0aW9ucykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpZiAocmV6ID09IG51bGwpIGNvbnRpbnVlOwoKICAgICAgICAgICAgICAgICAgICB2YXIgcmV6U3RhcnRTdHIgPSBHZXROZXN0ZWRTdHJpbmcocmV6LCAiYXR0cmlidXRlcyIsICJzdGFydERhdGVUaW1lIikKICAgICAgICAgICAgICAgICAgICAgICAgPz8gR2V0U3RyaW5nKHJleiwgInN0YXJ0RGF0ZVRpbWUiKTsKICAgICAgICAgICAgICAgICAgICB2YXIgcmV6RW5kU3RyID0gR2V0TmVzdGVkU3RyaW5nKHJleiwgImF0dHJpYnV0ZXMiLCAiZW5kRGF0ZVRpbWUiKQogICAgICAgICAgICAgICAgICAgICAgICA/PyBHZXRTdHJpbmcocmV6LCAiZW5kRGF0ZVRpbWUiKTsKICAgICAgICAgICAgICAgICAgICB2YXIgcmV6S2V5ID0gSGFzUHJvcGVydHkocmV6LCAia2V5IikgPyByZXoua2V5Py5Ub1N0cmluZygpIDogIiI7CiAgICAgICAgICAgICAgICAgICAgdmFyIHJlelVzZXIgPSBHZXROZXN0ZWRTdHJpbmcocmV6LCAiYXR0cmlidXRlcyIsICJ1c2VyIikKICAgICAgICAgICAgICAgICAgICAgICAgPz8gR2V0U3RyaW5nKHJleiwgInVzZXIiKTsKICAgICAgICAgICAgICAgICAgICB2YXIgcmV6QWR2aXNvciA9IEdldE5lc3RlZFN0cmluZyhyZXosICJhdHRyaWJ1dGVzIiwgImFkdmlzb3IiKQogICAgICAgICAgICAgICAgICAgICAgICA/PyBHZXRTdHJpbmcocmV6LCAiYWR2aXNvciIpOwoKICAgICAgICAgICAgICAgICAgICB2YXIgYnVzeUFkdmlzb3JzID0gbmV3IEhhc2hTZXQ8c3RyaW5nPigpOwogICAgICAgICAgICAgICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yRW1wdHkoc291cmNlQWR2aXNvcklkKSkKICAgICAgICAgICAgICAgICAgICAgICAgYnVzeUFkdmlzb3JzLkFkZChzb3VyY2VBZHZpc29ySWQpOwoKICAgICAgICAgICAgICAgICAgICBEYXRlVGltZSByZXpTdGFydCA9IERhdGVUaW1lLk1pblZhbHVlOwogICAgICAgICAgICAgICAgICAgIERhdGVUaW1lIHJlekVuZCA9IERhdGVUaW1lLk1pblZhbHVlOwogICAgICAgICAgICAgICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yRW1wdHkocmV6U3RhcnRTdHIpICYmICFzdHJpbmcuSXNOdWxsT3JFbXB0eShyZXpFbmRTdHIpICYmCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGVUaW1lLlRyeVBhcnNlKHJlelN0YXJ0U3RyLCBvdXQgcmV6U3RhcnQpICYmIERhdGVUaW1lLlRyeVBhcnNlKHJlekVuZFN0ciwgb3V0IHJlekVuZCkgJiYKICAgICAgICAgICAgICAgICAgICAgICAgYWxsSXRlbXMgIT0gbnVsbCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciBpdGVtIGluIGFsbEl0ZW1zKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbSA9PSBudWxsKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpdGVtQWR2aXNvciA9IEdldE5lc3RlZFN0cmluZyhpdGVtLCAiYXR0cmlidXRlcyIsICJhZHZpc29yIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PyBHZXRTdHJpbmcoaXRlbSwgImFkdmlzb3IiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpdGVtU3RhcnRTdHIgPSBHZXROZXN0ZWRTdHJpbmcoaXRlbSwgImF0dHJpYnV0ZXMiLCAic3RhcnREYXRlVGltZSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz8gR2V0U3RyaW5nKGl0ZW0sICJzdGFydERhdGVUaW1lIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbUVuZFN0ciA9IEdldE5lc3RlZFN0cmluZyhpdGVtLCAiYXR0cmlidXRlcyIsICJlbmREYXRlVGltZSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz8gR2V0U3RyaW5nKGl0ZW0sICJlbmREYXRlVGltZSIpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JFbXB0eShpdGVtQWR2aXNvcikgfHwgc3RyaW5nLklzTnVsbE9yRW1wdHkoaXRlbVN0YXJ0U3RyKSB8fCBzdHJpbmcuSXNOdWxsT3JFbXB0eShpdGVtRW5kU3RyKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRlVGltZSBpdGVtU3RhcnQgPSBEYXRlVGltZS5NaW5WYWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGVUaW1lIGl0ZW1FbmQgPSBEYXRlVGltZS5NaW5WYWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChEYXRlVGltZS5UcnlQYXJzZShpdGVtU3RhcnRTdHIsIG91dCBpdGVtU3RhcnQpICYmIERhdGVUaW1lLlRyeVBhcnNlKGl0ZW1FbmRTdHIsIG91dCBpdGVtRW5kKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbVN0YXJ0IDwgcmV6RW5kICYmIGl0ZW1FbmQgPiByZXpTdGFydCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1c3lBZHZpc29ycy5BZGQoaXRlbUFkdmlzb3IpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgdmFyIGFsbEFkdmlzb3JzID0gbmV3IEhhc2hTZXQ8c3RyaW5nPigpOwogICAgICAgICAgICAgICAgICAgIHZhciBhZHZpc29yS2V5cyA9IGRhdGE/LmFsbEFkdmlzb3JLZXlzOwogICAgICAgICAgICAgICAgICAgIGlmIChhZHZpc29yS2V5cyAhPSBudWxsKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIGFrIGluIGFkdmlzb3JLZXlzKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWsgPT0gbnVsbCkgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIga2V5ID0gYWs/LlRvU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0cmluZy5Jc051bGxPckVtcHR5KGtleSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsQWR2aXNvcnMuQWRkKGtleSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHZhciBhdmFpbGFibGUgPSBuZXcgTGlzdDxzdHJpbmc+KCk7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIGFkdiBpbiBhbGxBZHZpc29ycykKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChidXN5QWR2aXNvcnMuQ29udGFpbnMoYWR2KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlelN0YXJ0ICE9IERhdGVUaW1lLk1pblZhbHVlICYmIHJlekVuZCAhPSBEYXRlVGltZS5NaW5WYWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFJc1Nsb3RBdmFpbGFibGVGb3JBZHZpc29yKGFkdiwgcmV6U3RhcnQsIHJlekVuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWNIb2xpZGF5cywgYWR2aXNvcldvcmtIb3Vyc01hcCwgY29tcGFueVdvcmtIb3VycywgcGVyc29uYWxMZWF2ZXNNYXApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGUuQWRkKGFkdik7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBlbnJpY2hlZC5BZGQobmV3CiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBrZXkgPSByZXpLZXksCiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0RGF0ZVRpbWUgPSByZXpTdGFydFN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgZW5kRGF0ZVRpbWUgPSByZXpFbmRTdHIsCiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIgPSByZXpVc2VyLAogICAgICAgICAgICAgICAgICAgICAgICBhZHZpc29yID0gcmV6QWR2aXNvciwKICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlQWR2aXNvcnMgPSBhdmFpbGFibGUKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PigpOwogICAgICAgICAgICByZXN1bHRbInNvdXJjZUFkdmlzb3JJZCJdID0gc291cmNlQWR2aXNvcklkOwogICAgICAgICAgICByZXN1bHRbImFkdmlzb3JUeXBlIl0gPSBHZXRTdHJpbmcoZGF0YSwgImFkdmlzb3JUeXBlIik7CiAgICAgICAgICAgIHJlc3VsdFsic3RhcnREYXRlIl0gPSBHZXRTdHJpbmcoZGF0YSwgInN0YXJ0RGF0ZSIpOwogICAgICAgICAgICByZXN1bHRbImVuZERhdGUiXSA9IEdldFN0cmluZyhkYXRhLCAiZW5kRGF0ZSIpOwogICAgICAgICAgICByZXN1bHRbInRyYW5zZmVyVHlwZSJdID0gR2V0U3RyaW5nKGRhdGEsICJ0cmFuc2ZlclR5cGUiKTsKICAgICAgICAgICAgcmVzdWx0WyJlbnJpY2hlZFJlemVydmF0aW9ucyJdID0gZW5yaWNoZWQ7CiAgICAgICAgICAgIHJlc3VsdFsicmV6ZXJ2YXRpb25zIl0gPSBuZXcgTGlzdDxvYmplY3Q+KCk7CiAgICAgICAgICAgIHJlc3VsdFsiYWJzZW5jZUVudHJpZXMiXSA9IG5ldyBMaXN0PG9iamVjdD4oKTsKICAgICAgICAgICAgLy8gUHJlc2VydmUga2V5cyBmcm9tIGZldGNoLWFkdmlzb3JzLWZvci10cmFuc2ZlciAocHJldmlvdXNseSBjbGVhcmVkLCBzbyBHRVQgaW5zdGFuY2VzIGFsd2F5cyBzaG93ZWQgW10pLgogICAgICAgICAgICB2YXIgcHJlc2VydmVkQWR2aXNvcktleXMgPSBuZXcgTGlzdDxzdHJpbmc+KCk7CiAgICAgICAgICAgIHZhciBpbmNvbWluZ0tleXMgPSBkYXRhPy5hbGxBZHZpc29yS2V5czsKICAgICAgICAgICAgaWYgKGluY29taW5nS2V5cyAhPSBudWxsKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgYWsgaW4gaW5jb21pbmdLZXlzKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGlmIChhayA9PSBudWxsKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IGFrLlRvU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JFbXB0eShzKSkKICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VydmVkQWR2aXNvcktleXMuQWRkKHMpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJlc3VsdFsiYWxsQWR2aXNvcktleXMiXSA9IHByZXNlcnZlZEFkdmlzb3JLZXlzOwoKICAgICAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgRGF0YSA9IHJlc3VsdAogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBleCkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIERhdGEgPSBuZXcKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBlcnJvciA9ICJGYWlsZWQgdG8gZW5yaWNoIHJlc2VydmF0aW9ucyIsCiAgICAgICAgICAgICAgICAgICAgZXJyb3JEZXNjcmlwdGlvbiA9IGV4Lk1lc3NhZ2UKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfQoKICAgICNyZWdpb24gU2xvdCBBdmFpbGFiaWxpdHkKCiAgICBwcml2YXRlIGJvb2wgSXNTbG90QXZhaWxhYmxlRm9yQWR2aXNvcihzdHJpbmcgYWR2aXNvcktleSwgRGF0ZVRpbWUgcmV6U3RhcnQsIERhdGVUaW1lIHJlekVuZCwKICAgICAgICBMaXN0PGR5bmFtaWM+IHB1YmxpY0hvbGlkYXlzLAogICAgICAgIERpY3Rpb25hcnk8c3RyaW5nLCBMaXN0PGR5bmFtaWM+PiBhZHZpc29yV29ya0hvdXJzTWFwLAogICAgICAgIExpc3Q8ZHluYW1pYz4gY29tcGFueVdvcmtIb3VycywKICAgICAgICBEaWN0aW9uYXJ5PHN0cmluZywgTGlzdDxkeW5hbWljPj4gcGVyc29uYWxMZWF2ZXNNYXApCiAgICB7CiAgICAgICAgdmFyIHJlekRhdGUgPSByZXpTdGFydC5EYXRlOwogICAgICAgIHZhciBkYXlPZldlZWsgPSByZXpEYXRlLkRheU9mV2Vlay5Ub1N0cmluZygpLlRvTG93ZXIoKTsKICAgICAgICB2YXIgc2xvdFN0YXJ0ID0gcmV6U3RhcnQuVGltZU9mRGF5OwogICAgICAgIHZhciBzbG90RW5kID0gcmV6RW5kLlRpbWVPZkRheTsKCiAgICAgICAgdmFyIGhvbGlkYXlSYW5nZXMgPSBHZXRIb2xpZGF5UmFuZ2VzKHB1YmxpY0hvbGlkYXlzLCByZXpEYXRlKTsKICAgICAgICBpZiAoaG9saWRheVJhbmdlcyAhPSBudWxsICYmIGhvbGlkYXlSYW5nZXMuQ291bnQgPT0gMQogICAgICAgICAgICAmJiBob2xpZGF5UmFuZ2VzWzBdLkl0ZW0xID09IFRpbWVTcGFuLlplcm8KICAgICAgICAgICAgJiYgaG9saWRheVJhbmdlc1swXS5JdGVtMiA+PSBuZXcgVGltZVNwYW4oMjMsIDU5LCAwKSkKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgICAgICBMaXN0PGR5bmFtaWM+IGFkdldvcmtIb3VycyA9IG51bGw7CiAgICAgICAgaWYgKGFkdmlzb3JXb3JrSG91cnNNYXAuQ29udGFpbnNLZXkoYWR2aXNvcktleSkpCiAgICAgICAgICAgIGFkdldvcmtIb3VycyA9IGFkdmlzb3JXb3JrSG91cnNNYXBbYWR2aXNvcktleV07CgogICAgICAgIHZhciB3b3JrSG91cnMgPSBHZXRXb3JraW5nSG91cnNGb3JEYXkoYWR2V29ya0hvdXJzLCBkYXlPZldlZWspOwogICAgICAgIGlmICh3b3JrSG91cnMgPT0gbnVsbCB8fCB3b3JrSG91cnMuQ291bnQgPT0gMCkKICAgICAgICAgICAgd29ya0hvdXJzID0gR2V0V29ya2luZ0hvdXJzRm9yRGF5KGNvbXBhbnlXb3JrSG91cnMsIGRheU9mV2Vlayk7CgogICAgICAgIGlmICh3b3JrSG91cnMgPT0gbnVsbCB8fCB3b3JrSG91cnMuQ291bnQgPT0gMCkKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgICAgICBib29sIHNsb3RJbldvcmtIb3VycyA9IGZhbHNlOwogICAgICAgIGZvcmVhY2ggKHZhciB3aCBpbiB3b3JrSG91cnMpCiAgICAgICAgewogICAgICAgICAgICBkeW5hbWljIHdoRHluID0gd2g7CiAgICAgICAgICAgIHZhciBzdGFydFN0ciA9IHdoRHluPy5zdGFydD8uVG9TdHJpbmcoKTsKICAgICAgICAgICAgdmFyIGVuZFN0ciA9IHdoRHluPy5lbmQ/LlRvU3RyaW5nKCk7CiAgICAgICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JFbXB0eShzdGFydFN0cikgfHwgc3RyaW5nLklzTnVsbE9yRW1wdHkoZW5kU3RyKSkKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICAgICAgVGltZVNwYW4gd2hTdGFydCA9IFRpbWVTcGFuLk1pblZhbHVlOwogICAgICAgICAgICBUaW1lU3BhbiB3aEVuZCA9IFRpbWVTcGFuLk1pblZhbHVlOwogICAgICAgICAgICBpZiAoIVRpbWVTcGFuLlRyeVBhcnNlKHN0YXJ0U3RyLCBvdXQgd2hTdGFydCkgfHwgIVRpbWVTcGFuLlRyeVBhcnNlKGVuZFN0ciwgb3V0IHdoRW5kKSkKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICAgICAgaWYgKHNsb3RTdGFydCA+PSB3aFN0YXJ0ICYmIHNsb3RFbmQgPD0gd2hFbmQpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHNsb3RJbldvcmtIb3VycyA9IHRydWU7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCFzbG90SW5Xb3JrSG91cnMpCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCiAgICAgICAgdmFyIHVuYXZhaWxhYmxlUmFuZ2VzID0gbmV3IExpc3Q8VHVwbGU8VGltZVNwYW4sIFRpbWVTcGFuPj4oKTsKCiAgICAgICAgTGlzdDxkeW5hbWljPiBhZHZMZWF2ZXMgPSBudWxsOwogICAgICAgIGlmIChwZXJzb25hbExlYXZlc01hcC5Db250YWluc0tleShhZHZpc29yS2V5KSkKICAgICAgICAgICAgYWR2TGVhdmVzID0gcGVyc29uYWxMZWF2ZXNNYXBbYWR2aXNvcktleV07CiAgICAgICAgaWYgKGFkdkxlYXZlcyAhPSBudWxsKQogICAgICAgICAgICB1bmF2YWlsYWJsZVJhbmdlcy5BZGRSYW5nZShHZXRVbmF2YWlsYWJsZVJhbmdlcyhhZHZMZWF2ZXMsIHJlekRhdGUpKTsKCiAgICAgICAgaWYgKGhvbGlkYXlSYW5nZXMgIT0gbnVsbCkKICAgICAgICAgICAgdW5hdmFpbGFibGVSYW5nZXMuQWRkUmFuZ2UoaG9saWRheVJhbmdlcyk7CgogICAgICAgIGZvcmVhY2ggKHZhciB1ciBpbiB1bmF2YWlsYWJsZVJhbmdlcykKICAgICAgICB7CiAgICAgICAgICAgIGlmIChzbG90U3RhcnQgPCB1ci5JdGVtMiAmJiBzbG90RW5kID4gdXIuSXRlbTEpCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBwcml2YXRlIExpc3Q8VHVwbGU8VGltZVNwYW4sIFRpbWVTcGFuPj4gR2V0SG9saWRheVJhbmdlcyhMaXN0PGR5bmFtaWM+IGhvbGlkYXlzLCBEYXRlVGltZSBkYXRlKQogICAgewogICAgICAgIHZhciByYW5nZXMgPSBuZXcgTGlzdDxUdXBsZTxUaW1lU3BhbiwgVGltZVNwYW4+PigpOwogICAgICAgIGJvb2wgaGFzSG9saWRheSA9IGZhbHNlOwoKICAgICAgICBmb3JlYWNoICh2YXIgaG9saWRheSBpbiBob2xpZGF5cykKICAgICAgICB7CiAgICAgICAgICAgIHZhciBob2xpZGF5RGF0YSA9IGhvbGlkYXk/LmF0dHJpYnV0ZXM7CiAgICAgICAgICAgIGlmIChob2xpZGF5RGF0YSA9PSBudWxsKSBjb250aW51ZTsKCiAgICAgICAgICAgIHN0cmluZyBzdGFydERhdGVUaW1lU3RyID0gR2V0U3RyaW5nKGhvbGlkYXlEYXRhLCAic3RhcnREYXRlVGltZSIpOwogICAgICAgICAgICBzdHJpbmcgZW5kRGF0ZVRpbWVTdHIgPSBHZXRTdHJpbmcoaG9saWRheURhdGEsICJlbmREYXRlVGltZSIpOwoKICAgICAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPckVtcHR5KHN0YXJ0RGF0ZVRpbWVTdHIpIHx8IHN0cmluZy5Jc051bGxPckVtcHR5KGVuZERhdGVUaW1lU3RyKSkKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICAgICAgRGF0ZVRpbWUgc3RhcnREYXRlVGltZSA9IERhdGVUaW1lLk1pblZhbHVlOwogICAgICAgICAgICBEYXRlVGltZSBlbmREYXRlVGltZSA9IERhdGVUaW1lLk1pblZhbHVlOwogICAgICAgICAgICBpZiAoIURhdGVUaW1lLlRyeVBhcnNlKHN0YXJ0RGF0ZVRpbWVTdHIsIG91dCBzdGFydERhdGVUaW1lKSB8fCAhRGF0ZVRpbWUuVHJ5UGFyc2UoZW5kRGF0ZVRpbWVTdHIsIG91dCBlbmREYXRlVGltZSkpCiAgICAgICAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAgICAgIGlmIChkYXRlLkRhdGUgPCBzdGFydERhdGVUaW1lLkRhdGUgfHwgZGF0ZS5EYXRlID4gZW5kRGF0ZVRpbWUuRGF0ZSkKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICAgICAgaGFzSG9saWRheSA9IHRydWU7CgogICAgICAgICAgICBpZiAoc3RhcnREYXRlVGltZS5EYXRlICE9IGVuZERhdGVUaW1lLkRhdGUpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmIChkYXRlLkRhdGUgPT0gc3RhcnREYXRlVGltZS5EYXRlKQogICAgICAgICAgICAgICAgICAgIHJhbmdlcy5BZGQoVHVwbGUuQ3JlYXRlKHN0YXJ0RGF0ZVRpbWUuVGltZU9mRGF5LCBuZXcgVGltZVNwYW4oMjMsIDU5LCA1OSkpKTsKICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGUuRGF0ZSA9PSBlbmREYXRlVGltZS5EYXRlKQogICAgICAgICAgICAgICAgICAgIHJhbmdlcy5BZGQoVHVwbGUuQ3JlYXRlKFRpbWVTcGFuLlplcm8sIGVuZERhdGVUaW1lLlRpbWVPZkRheSkpOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIHJhbmdlcy5BZGQoVHVwbGUuQ3JlYXRlKFRpbWVTcGFuLlplcm8sIG5ldyBUaW1lU3BhbigyMywgNTksIDU5KSkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmFuZ2VzLkFkZChUdXBsZS5DcmVhdGUoc3RhcnREYXRlVGltZS5UaW1lT2ZEYXksIGVuZERhdGVUaW1lLlRpbWVPZkRheSkpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gaGFzSG9saWRheSA/IHJhbmdlcyA6IG51bGw7CiAgICB9CgogICAgcHJpdmF0ZSBMaXN0PG9iamVjdD4gR2V0V29ya2luZ0hvdXJzRm9yRGF5KExpc3Q8ZHluYW1pYz4gd29ya2luZ0hvdXJzQ2hhbmdlcywgc3RyaW5nIGRheU9mV2VlaykKICAgIHsKICAgICAgICBpZiAod29ya2luZ0hvdXJzQ2hhbmdlcyA9PSBudWxsKSByZXR1cm4gbnVsbDsKCiAgICAgICAgZm9yZWFjaCAodmFyIGNoYW5nZSBpbiB3b3JraW5nSG91cnNDaGFuZ2VzKQogICAgICAgIHsKICAgICAgICAgICAgdmFyIGNoYW5nZURhdGEgPSBjaGFuZ2U/LmF0dHJpYnV0ZXM7CiAgICAgICAgICAgIGlmIChjaGFuZ2VEYXRhID09IG51bGwpIGNvbnRpbnVlOwoKICAgICAgICAgICAgdmFyIGN1c3RvbVdIID0gY2hhbmdlRGF0YT8uY3VzdG9tV29ya2luZ0hvdXJzOwogICAgICAgICAgICBpZiAoY3VzdG9tV0ggPT0gbnVsbCkgY29udGludWU7CgogICAgICAgICAgICB2YXIgZGF5SG91cnMgPSBHZXREYXlIb3Vyc0Zyb21DdXN0b20oY3VzdG9tV0gsIGRheU9mV2Vlayk7CiAgICAgICAgICAgIGlmIChkYXlIb3VycyAhPSBudWxsKSByZXR1cm4gZGF5SG91cnM7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwcml2YXRlIExpc3Q8b2JqZWN0PiBHZXREYXlIb3Vyc0Zyb21DdXN0b20oZHluYW1pYyBjdXN0b21XSCwgc3RyaW5nIGRheU9mV2VlaykKICAgIHsKICAgICAgICBkeW5hbWljIGRheUhvdXJzID0gbnVsbDsKICAgICAgICBzd2l0Y2ggKGRheU9mV2VlaykKICAgICAgICB7CiAgICAgICAgICAgIGNhc2UgIm1vbmRheSI6IGRheUhvdXJzID0gY3VzdG9tV0g/Lm1vbmRheTsgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgInR1ZXNkYXkiOiBkYXlIb3VycyA9IGN1c3RvbVdIPy50dWVzZGF5OyBicmVhazsKICAgICAgICAgICAgY2FzZSAid2VkbmVzZGF5IjogZGF5SG91cnMgPSBjdXN0b21XSD8ud2VkbmVzZGF5OyBicmVhazsKICAgICAgICAgICAgY2FzZSAidGh1cnNkYXkiOiBkYXlIb3VycyA9IGN1c3RvbVdIPy50aHVyc2RheTsgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgImZyaWRheSI6IGRheUhvdXJzID0gY3VzdG9tV0g/LmZyaWRheTsgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgInNhdHVyZGF5IjogZGF5SG91cnMgPSBjdXN0b21XSD8uc2F0dXJkYXk7IGJyZWFrOwogICAgICAgICAgICBjYXNlICJzdW5kYXkiOiBkYXlIb3VycyA9IGN1c3RvbVdIPy5zdW5kYXk7IGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgaWYgKGRheUhvdXJzID09IG51bGwpIHJldHVybiBudWxsOwoKICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IExpc3Q8b2JqZWN0PigpOwogICAgICAgIGZvcmVhY2ggKHZhciByYW5nZSBpbiBkYXlIb3VycykKICAgICAgICB7CiAgICAgICAgICAgIHZhciBzdGFydCA9IHJhbmdlPy5zdGFydD8uVG9TdHJpbmcoKTsKICAgICAgICAgICAgdmFyIGVuZCA9IHJhbmdlPy5lbmQ/LlRvU3RyaW5nKCk7CiAgICAgICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yRW1wdHkoc3RhcnQpICYmICFzdHJpbmcuSXNOdWxsT3JFbXB0eShlbmQpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXN1bHQuQWRkKG5ldyB7IHN0YXJ0LCBlbmQgfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJlc3VsdC5Db3VudCA+IDAgPyByZXN1bHQgOiBudWxsOwogICAgfQoKICAgIHByaXZhdGUgTGlzdDxUdXBsZTxUaW1lU3BhbiwgVGltZVNwYW4+PiBHZXRVbmF2YWlsYWJsZVJhbmdlcyhMaXN0PGR5bmFtaWM+IHBlcnNvbmFsTGVhdmVzLCBEYXRlVGltZSBkYXRlKQogICAgewogICAgICAgIHZhciByYW5nZXMgPSBuZXcgTGlzdDxUdXBsZTxUaW1lU3BhbiwgVGltZVNwYW4+PigpOwoKICAgICAgICBmb3JlYWNoICh2YXIgbGVhdmUgaW4gcGVyc29uYWxMZWF2ZXMpCiAgICAgICAgewogICAgICAgICAgICB2YXIgbGVhdmVEYXRhID0gbGVhdmU/LmF0dHJpYnV0ZXM7CiAgICAgICAgICAgIGlmIChsZWF2ZURhdGEgPT0gbnVsbCkgY29udGludWU7CgogICAgICAgICAgICBzdHJpbmcgc3RhcnREYXRlVGltZVN0ciA9IEdldFN0cmluZyhsZWF2ZURhdGEsICJzdGFydERhdGVUaW1lIik7CiAgICAgICAgICAgIHN0cmluZyBlbmREYXRlVGltZVN0ciA9IEdldFN0cmluZyhsZWF2ZURhdGEsICJlbmREYXRlVGltZSIpOwoKICAgICAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPckVtcHR5KHN0YXJ0RGF0ZVRpbWVTdHIpIHx8IHN0cmluZy5Jc051bGxPckVtcHR5KGVuZERhdGVUaW1lU3RyKSkKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICAgICAgRGF0ZVRpbWUgc3RhcnREYXRlVGltZSA9IERhdGVUaW1lLk1pblZhbHVlOwogICAgICAgICAgICBEYXRlVGltZSBlbmREYXRlVGltZSA9IERhdGVUaW1lLk1pblZhbHVlOwogICAgICAgICAgICBpZiAoIURhdGVUaW1lLlRyeVBhcnNlKHN0YXJ0RGF0ZVRpbWVTdHIsIG91dCBzdGFydERhdGVUaW1lKSB8fCAhRGF0ZVRpbWUuVHJ5UGFyc2UoZW5kRGF0ZVRpbWVTdHIsIG91dCBlbmREYXRlVGltZSkpCiAgICAgICAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAgICAgIGlmIChkYXRlLkRhdGUgPCBzdGFydERhdGVUaW1lLkRhdGUgfHwgZGF0ZS5EYXRlID4gZW5kRGF0ZVRpbWUuRGF0ZSkKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICAgICAgaWYgKHN0YXJ0RGF0ZVRpbWUuRGF0ZSAhPSBlbmREYXRlVGltZS5EYXRlKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZiAoZGF0ZS5EYXRlID09IHN0YXJ0RGF0ZVRpbWUuRGF0ZSkKICAgICAgICAgICAgICAgICAgICByYW5nZXMuQWRkKFR1cGxlLkNyZWF0ZShzdGFydERhdGVUaW1lLlRpbWVPZkRheSwgbmV3IFRpbWVTcGFuKDIzLCA1OSwgNTkpKSk7CiAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRlLkRhdGUgPT0gZW5kRGF0ZVRpbWUuRGF0ZSkKICAgICAgICAgICAgICAgICAgICByYW5nZXMuQWRkKFR1cGxlLkNyZWF0ZShUaW1lU3Bhbi5aZXJvLCBlbmREYXRlVGltZS5UaW1lT2ZEYXkpKTsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICByYW5nZXMuQWRkKFR1cGxlLkNyZWF0ZShUaW1lU3Bhbi5aZXJvLCBuZXcgVGltZVNwYW4oMjMsIDU5LCA1OSkpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHJhbmdlcy5BZGQoVHVwbGUuQ3JlYXRlKHN0YXJ0RGF0ZVRpbWUuVGltZU9mRGF5LCBlbmREYXRlVGltZS5UaW1lT2ZEYXkpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHJhbmdlczsKICAgIH0KCiAgICAjZW5kcmVnaW9uCgogICAgI3JlZ2lvbiBIZWxwZXJzCgogICAgcHJpdmF0ZSBzdHJpbmcgR2V0U3RyaW5nKGR5bmFtaWMgb2JqLCBzdHJpbmcgbmFtZSkKICAgIHsKICAgICAgICBpZiAob2JqID09IG51bGwpIHJldHVybiBudWxsOwogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgICAgaWYgKEhhc1Byb3BlcnR5KG9iaiwgbmFtZSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZhciB2ID0gR2V0UHJvcGVydHlWYWx1ZShvYmosIG5hbWUpOwogICAgICAgICAgICAgICAgcmV0dXJuIHY/LlRvU3RyaW5nKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY2F0Y2ggeyB9CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHJpdmF0ZSBzdHJpbmcgR2V0TmVzdGVkU3RyaW5nKGR5bmFtaWMgb2JqLCBzdHJpbmcgcGFyZW50LCBzdHJpbmcgY2hpbGQpCiAgICB7CiAgICAgICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gbnVsbDsKICAgICAgICB0cnkKICAgICAgICB7CiAgICAgICAgICAgIGlmIChIYXNQcm9wZXJ0eShvYmosIHBhcmVudCkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZhciBuZXN0ZWQgPSBHZXRQcm9wZXJ0eVZhbHVlKG9iaiwgcGFyZW50KTsKICAgICAgICAgICAgICAgIGlmIChuZXN0ZWQgIT0gbnVsbCAmJiBIYXNQcm9wZXJ0eShuZXN0ZWQsIGNoaWxkKSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdiA9IEdldFByb3BlcnR5VmFsdWUobmVzdGVkLCBjaGlsZCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHY/LlRvU3RyaW5nKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY2F0Y2ggeyB9CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgI2VuZHJlZ2lvbgp9Cg=="
|
|
125
|
+
"code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7CnVzaW5nIEJCVC5Xb3JrZmxvdy5TY3JpcHRpbmc7CnVzaW5nIEJCVC5Xb3JrZmxvdy5EZWZpbml0aW9uczsKCi8vLyA8c3VtbWFyeT4KLy8vIE1hcHBpbmcgZm9yIGVucmljaC1yZXplcnZhdGlvbnMtZm9yLXRyYW5zZmVyIHRhc2sgKERhcHJTZXJ2aWNlVGFzayAtIFR5cGUgMykuCi8vLyBRdWVyaWVzIEFMTCBhY3RpdmUgcmVzZXJ2YXRpb25zIGluIHRoZSBkYXRlIHJhbmdlIGFjcm9zcyBhbGwgYWR2aXNvcnMuCi8vLyBPdXRwdXRIYW5kbGVyIGVucmljaGVzIGVhY2ggc291cmNlIGFkdmlzb3IncyByZXNlcnZhdGlvbiB3aXRoIGEgbGlzdCBvZiBhZHZpc29ycwovLy8gdGhhdCBhcmUgYXZhaWxhYmxlIGJhc2VkIG9uOiByZXNlcnZhdGlvbiBjb25mbGljdHMsIHdvcmtpbmcgaG91cnMsIHB1YmxpYyBob2xpZGF5cywKLy8vIGFuZCBwZXJzb25hbCBsZWF2ZXMgKHVzaW5nIGFic2VuY2VFbnRyaWVzIGZyb20gcHJldmlvdXMgdGFzaykuCi8vLyA8L3N1bW1hcnk+CnB1YmxpYyBjbGFzcyBFbnJpY2hSZXplcnZhdGlvbnNGb3JUcmFuc2Zlck1hcHBpbmcgOiBTY3JpcHRCYXNlLCBJTWFwcGluZwp7CiAgICBwdWJsaWMgVGFzazxTY3JpcHRSZXNwb25zZT4gSW5wdXRIYW5kbGVyKFdvcmtmbG93VGFzayB0YXNrLCBTY3JpcHRDb250ZXh0IGNvbnRleHQpCiAgICB7CiAgICAgICAgdmFyIHNlcnZpY2VUYXNrID0gdGFzayBhcyBEYXByU2VydmljZVRhc2s7CiAgICAgICAgaWYgKHNlcnZpY2VUYXNrID09IG51bGwpCiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKCJUYXNrIG11c3QgYmUgYSBEYXByU2VydmljZVRhc2siKTsKCiAgICAgICAgdmFyIGFwcElkID0gR2V0Q29uZmlnVmFsdWUoIkRBUFJfQVBQX0lEIik7CiAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JFbXB0eShhcHBJZCkpCiAgICAgICAgICAgIHNlcnZpY2VUYXNrLlNldEFwcElkKGFwcElkKTsKCiAgICAgICAgdmFyIGRhdGEgPSBjb250ZXh0Lkluc3RhbmNlPy5EYXRhOwogICAgICAgIGlmIChkYXRhID09IG51bGwpCiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKCJJbnN0YW5jZSBkYXRhIGlzIHJlcXVpcmVkIik7CgogICAgICAgIHZhciBzdGFydERhdGUgPSBHZXRTdHJpbmcoZGF0YSwgInN0YXJ0RGF0ZSIpOwogICAgICAgIHZhciBlbmREYXRlID0gR2V0U3RyaW5nKGRhdGEsICJlbmREYXRlIik7CgogICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JFbXB0eShzdGFydERhdGUpKQogICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnRFeGNlcHRpb24oInN0YXJ0RGF0ZSBpcyByZXF1aXJlZC4iLCAic3RhcnREYXRlIik7CiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPckVtcHR5KGVuZERhdGUpKQogICAgICAgICAgICBlbmREYXRlID0gIjIwOTktMTItMzEiOwoKICAgICAgICB2YXIgY29uZGl0aW9ucyA9IG5ldyBMaXN0PHN0cmluZz4KICAgICAgICB7CiAgICAgICAgICAgICJ7XCJvclwiOlsiICsKICAgICAgICAgICAgICAgICJ7XCJjdXJyZW50U3RhdGVcIjp7XCJlcVwiOlwiYWN0aXZlXCJ9fSwiICsKICAgICAgICAgICAgICAgICJ7XCJjdXJyZW50U3RhdGVcIjp7XCJlcVwiOlwiaW4tbWVldFwifX0iICsKICAgICAgICAgICAgIl19IiwKICAgICAgICAgICAgIntcInN0YXR1c1wiOntcImVxXCI6XCJBXCJ9fSIsCiAgICAgICAgICAgICJ7XCJhdHRyaWJ1dGVzXCI6e1wic3RhcnREYXRlVGltZVwiOntcImRndFwiOlwiIiArIHN0YXJ0RGF0ZSArICJcIn19fSIsCiAgICAgICAgICAgICJ7XCJhdHRyaWJ1dGVzXCI6e1wiZW5kRGF0ZVRpbWVcIjp7XCJkbHRcIjpcIiIgKyBlbmREYXRlICsgIlwifX19IgogICAgICAgIH07CgogICAgICAgIHZhciBmaWx0ZXJKc29uID0gIntcImFuZFwiOlsiICsgc3RyaW5nLkpvaW4oIiwiLCBjb25kaXRpb25zKSArICJdfSI7CiAgICAgICAgdmFyIHF1ZXJ5UGFyYW1zID0gbmV3IExpc3Q8c3RyaW5nPgogICAgICAgIHsKICAgICAgICAgICAgInBhZ2VTaXplPTEwMCIsCiAgICAgICAgICAgICJmaWx0ZXI9IiArIGZpbHRlckpzb24KICAgICAgICB9OwoKICAgICAgICBzZXJ2aWNlVGFzay5TZXRRdWVyeVN0cmluZyhzdHJpbmcuSm9pbigiJiIsIHF1ZXJ5UGFyYW1zKSk7CiAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UoKSk7CiAgICB9CgogICAgcHVibGljIFRhc2s8U2NyaXB0UmVzcG9uc2U+IE91dHB1dEhhbmRsZXIoU2NyaXB0Q29udGV4dCBjb250ZXh0KQogICAgewogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgICAgdmFyIGJvZHkgPSBjb250ZXh0LkJvZHk7CiAgICAgICAgICAgIHZhciBkYXRhID0gY29udGV4dC5JbnN0YW5jZT8uRGF0YTsKCiAgICAgICAgICAgIGlmIChib2R5ICE9IG51bGwgJiYgYm9keS5pc1N1Y2Nlc3MgPT0gZmFsc2UpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZhciBlcnJvck1lc3NhZ2UgPSBib2R5LmVycm9yTWVzc2FnZT8uVG9TdHJpbmcoKSA/PyAiRmFpbGVkIHRvIGZldGNoIGFsbCByZXNlcnZhdGlvbnMiOwogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihlcnJvck1lc3NhZ2UpOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgc291cmNlQWR2aXNvcklkID0gR2V0U3RyaW5nKGRhdGEsICJzb3VyY2VBZHZpc29ySWQiKTsKICAgICAgICAgICAgdmFyIHNvdXJjZVJlemVydmF0aW9ucyA9IGRhdGE/LnJlemVydmF0aW9uczsKCiAgICAgICAgICAgIHZhciByZXNwb25zZURhdGEgPSBib2R5Py5kYXRhOwogICAgICAgICAgICB2YXIgYWxsSXRlbXMgPSByZXNwb25zZURhdGE/Lml0ZW1zOwoKICAgICAgICAgICAgdmFyIHB1YmxpY0hvbGlkYXlzID0gbmV3IExpc3Q8ZHluYW1pYz4oKTsKICAgICAgICAgICAgdmFyIGFkdmlzb3JXb3JrSG91cnNNYXAgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIExpc3Q8ZHluYW1pYz4+KCk7CiAgICAgICAgICAgIHZhciBjb21wYW55V29ya0hvdXJzID0gbmV3IExpc3Q8ZHluYW1pYz4oKTsKICAgICAgICAgICAgdmFyIHBlcnNvbmFsTGVhdmVzTWFwID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBMaXN0PGR5bmFtaWM+PigpOwoKICAgICAgICAgICAgdmFyIGFic2VuY2VFbnRyaWVzID0gZGF0YT8uYWJzZW5jZUVudHJpZXM7CiAgICAgICAgICAgIGlmIChhYnNlbmNlRW50cmllcyAhPSBudWxsKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgZW50cnkgaW4gYWJzZW5jZUVudHJpZXMpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5ID09IG51bGwpIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIHZhciBhdHRycyA9IGVudHJ5Py5hdHRyaWJ1dGVzOwogICAgICAgICAgICAgICAgICAgIGlmIChhdHRycyA9PSBudWxsKSBjb250aW51ZTsKCiAgICAgICAgICAgICAgICAgICAgdmFyIGFic2VuY2VUeXBlID0gR2V0U3RyaW5nKGF0dHJzLCAiYWJzZW5jZVR5cGUiKTsKICAgICAgICAgICAgICAgICAgICB2YXIgYWR2aXNvciA9IEdldFN0cmluZyhhdHRycywgImFkdmlzb3IiKTsKCiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChhYnNlbmNlVHlwZSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInB1YmxpYy1ob2xpZGF5IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpY0hvbGlkYXlzLkFkZChlbnRyeSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAid29ya2luZy1ob3Vycy1jaGFuZ2UiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JFbXB0eShhZHZpc29yKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWFkdmlzb3JXb3JrSG91cnNNYXAuQ29udGFpbnNLZXkoYWR2aXNvcikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkdmlzb3JXb3JrSG91cnNNYXBbYWR2aXNvcl0gPSBuZXcgTGlzdDxkeW5hbWljPigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkdmlzb3JXb3JrSG91cnNNYXBbYWR2aXNvcl0uQWRkKGVudHJ5KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wYW55V29ya0hvdXJzLkFkZChlbnRyeSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAicGVyc29uYWwtbGVhdmUiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JFbXB0eShhZHZpc29yKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBlcnNvbmFsTGVhdmVzTWFwLkNvbnRhaW5zS2V5KGFkdmlzb3IpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJzb25hbExlYXZlc01hcFthZHZpc29yXSA9IG5ldyBMaXN0PGR5bmFtaWM+KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyc29uYWxMZWF2ZXNNYXBbYWR2aXNvcl0uQWRkKGVudHJ5KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIGVucmljaGVkID0gbmV3IExpc3Q8b2JqZWN0PigpOwoKICAgICAgICAgICAgaWYgKHNvdXJjZVJlemVydmF0aW9ucyAhPSBudWxsKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgcmV6IGluIHNvdXJjZVJlemVydmF0aW9ucykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpZiAocmV6ID09IG51bGwpIGNvbnRpbnVlOwoKICAgICAgICAgICAgICAgICAgICB2YXIgcmV6U3RhcnRTdHIgPSBHZXROZXN0ZWRTdHJpbmcocmV6LCAiYXR0cmlidXRlcyIsICJzdGFydERhdGVUaW1lIikKICAgICAgICAgICAgICAgICAgICAgICAgPz8gR2V0U3RyaW5nKHJleiwgInN0YXJ0RGF0ZVRpbWUiKTsKICAgICAgICAgICAgICAgICAgICB2YXIgcmV6RW5kU3RyID0gR2V0TmVzdGVkU3RyaW5nKHJleiwgImF0dHJpYnV0ZXMiLCAiZW5kRGF0ZVRpbWUiKQogICAgICAgICAgICAgICAgICAgICAgICA/PyBHZXRTdHJpbmcocmV6LCAiZW5kRGF0ZVRpbWUiKTsKICAgICAgICAgICAgICAgICAgICB2YXIgcmV6S2V5ID0gSGFzUHJvcGVydHkocmV6LCAia2V5IikgPyByZXoua2V5Py5Ub1N0cmluZygpIDogIiI7CiAgICAgICAgICAgICAgICAgICAgdmFyIHJlelVzZXIgPSBHZXROZXN0ZWRTdHJpbmcocmV6LCAiYXR0cmlidXRlcyIsICJ1c2VyIikKICAgICAgICAgICAgICAgICAgICAgICAgPz8gR2V0U3RyaW5nKHJleiwgInVzZXIiKTsKICAgICAgICAgICAgICAgICAgICB2YXIgcmV6QWR2aXNvciA9IEdldE5lc3RlZFN0cmluZyhyZXosICJhdHRyaWJ1dGVzIiwgImFkdmlzb3IiKQogICAgICAgICAgICAgICAgICAgICAgICA/PyBHZXRTdHJpbmcocmV6LCAiYWR2aXNvciIpOwoKICAgICAgICAgICAgICAgICAgICB2YXIgYnVzeUFkdmlzb3JzID0gbmV3IEhhc2hTZXQ8c3RyaW5nPigpOwogICAgICAgICAgICAgICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yRW1wdHkoc291cmNlQWR2aXNvcklkKSkKICAgICAgICAgICAgICAgICAgICAgICAgYnVzeUFkdmlzb3JzLkFkZChzb3VyY2VBZHZpc29ySWQpOwoKICAgICAgICAgICAgICAgICAgICBEYXRlVGltZSByZXpTdGFydCA9IERhdGVUaW1lLk1pblZhbHVlOwogICAgICAgICAgICAgICAgICAgIERhdGVUaW1lIHJlekVuZCA9IERhdGVUaW1lLk1pblZhbHVlOwogICAgICAgICAgICAgICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yRW1wdHkocmV6U3RhcnRTdHIpICYmICFzdHJpbmcuSXNOdWxsT3JFbXB0eShyZXpFbmRTdHIpICYmCiAgICAgICAgICAgICAgICAgICAgICAgIFRyeVBhcnNlVG9VdGMocmV6U3RhcnRTdHIsIG91dCByZXpTdGFydCkgJiYgVHJ5UGFyc2VUb1V0YyhyZXpFbmRTdHIsIG91dCByZXpFbmQpICYmCiAgICAgICAgICAgICAgICAgICAgICAgIGFsbEl0ZW1zICE9IG51bGwpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgaXRlbSBpbiBhbGxJdGVtcykKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0gPT0gbnVsbCkgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbUFkdmlzb3IgPSBHZXROZXN0ZWRTdHJpbmcoaXRlbSwgImF0dHJpYnV0ZXMiLCAiYWR2aXNvciIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz8gR2V0U3RyaW5nKGl0ZW0sICJhZHZpc29yIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbVN0YXJ0U3RyID0gR2V0TmVzdGVkU3RyaW5nKGl0ZW0sICJhdHRyaWJ1dGVzIiwgInN0YXJ0RGF0ZVRpbWUiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8/IEdldFN0cmluZyhpdGVtLCAic3RhcnREYXRlVGltZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZW1FbmRTdHIgPSBHZXROZXN0ZWRTdHJpbmcoaXRlbSwgImF0dHJpYnV0ZXMiLCAiZW5kRGF0ZVRpbWUiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8/IEdldFN0cmluZyhpdGVtLCAiZW5kRGF0ZVRpbWUiKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yRW1wdHkoaXRlbUFkdmlzb3IpIHx8IHN0cmluZy5Jc051bGxPckVtcHR5KGl0ZW1TdGFydFN0cikgfHwgc3RyaW5nLklzTnVsbE9yRW1wdHkoaXRlbUVuZFN0cikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZVRpbWUgaXRlbVN0YXJ0ID0gRGF0ZVRpbWUuTWluVmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRlVGltZSBpdGVtRW5kID0gRGF0ZVRpbWUuTWluVmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVHJ5UGFyc2VUb1V0YyhpdGVtU3RhcnRTdHIsIG91dCBpdGVtU3RhcnQpICYmIFRyeVBhcnNlVG9VdGMoaXRlbUVuZFN0ciwgb3V0IGl0ZW1FbmQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtU3RhcnQgPCByZXpFbmQgJiYgaXRlbUVuZCA+IHJlelN0YXJ0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVzeUFkdmlzb3JzLkFkZChpdGVtQWR2aXNvcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICB2YXIgYWxsQWR2aXNvcnMgPSBuZXcgSGFzaFNldDxzdHJpbmc+KCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGFkdmlzb3JLZXlzID0gZGF0YT8uYWxsQWR2aXNvcktleXM7CiAgICAgICAgICAgICAgICAgICAgaWYgKGFkdmlzb3JLZXlzICE9IG51bGwpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgYWsgaW4gYWR2aXNvcktleXMpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhayA9PSBudWxsKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBrZXkgPSBhaz8uVG9TdHJpbmcoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yRW1wdHkoa2V5KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxBZHZpc29ycy5BZGQoa2V5KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgdmFyIGF2YWlsYWJsZSA9IG5ldyBMaXN0PHN0cmluZz4oKTsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgYWR2IGluIGFsbEFkdmlzb3JzKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJ1c3lBZHZpc29ycy5Db250YWlucyhhZHYpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAocmV6U3RhcnQgIT0gRGF0ZVRpbWUuTWluVmFsdWUgJiYgcmV6RW5kICE9IERhdGVUaW1lLk1pblZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUlzU2xvdEF2YWlsYWJsZUZvckFkdmlzb3IoYWR2LCByZXpTdGFydCwgcmV6RW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpY0hvbGlkYXlzLCBhZHZpc29yV29ya0hvdXJzTWFwLCBjb21wYW55V29ya0hvdXJzLCBwZXJzb25hbExlYXZlc01hcCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZS5BZGQoYWR2KTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGVucmljaGVkLkFkZChuZXcKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleSA9IHJlektleSwKICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnREYXRlVGltZSA9IHJlelN0YXJ0U3RyLAogICAgICAgICAgICAgICAgICAgICAgICBlbmREYXRlVGltZSA9IHJlekVuZFN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgdXNlciA9IHJlelVzZXIsCiAgICAgICAgICAgICAgICAgICAgICAgIGFkdmlzb3IgPSByZXpBZHZpc29yLAogICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVBZHZpc29ycyA9IGF2YWlsYWJsZQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBvYmplY3Q+KCk7CiAgICAgICAgICAgIHJlc3VsdFsic291cmNlQWR2aXNvcklkIl0gPSBzb3VyY2VBZHZpc29ySWQ7CiAgICAgICAgICAgIHJlc3VsdFsiYWR2aXNvclR5cGUiXSA9IEdldFN0cmluZyhkYXRhLCAiYWR2aXNvclR5cGUiKTsKICAgICAgICAgICAgcmVzdWx0WyJzdGFydERhdGUiXSA9IEdldFN0cmluZyhkYXRhLCAic3RhcnREYXRlIik7CiAgICAgICAgICAgIHJlc3VsdFsiZW5kRGF0ZSJdID0gR2V0U3RyaW5nKGRhdGEsICJlbmREYXRlIik7CiAgICAgICAgICAgIHJlc3VsdFsidHJhbnNmZXJUeXBlIl0gPSBHZXRTdHJpbmcoZGF0YSwgInRyYW5zZmVyVHlwZSIpOwogICAgICAgICAgICByZXN1bHRbImVucmljaGVkUmV6ZXJ2YXRpb25zIl0gPSBlbnJpY2hlZDsKICAgICAgICAgICAgcmVzdWx0WyJyZXplcnZhdGlvbnMiXSA9IG5ldyBMaXN0PG9iamVjdD4oKTsKICAgICAgICAgICAgcmVzdWx0WyJhYnNlbmNlRW50cmllcyJdID0gbmV3IExpc3Q8b2JqZWN0PigpOwogICAgICAgICAgICAvLyBQcmVzZXJ2ZSBrZXlzIGZyb20gZmV0Y2gtYWR2aXNvcnMtZm9yLXRyYW5zZmVyIChwcmV2aW91c2x5IGNsZWFyZWQsIHNvIEdFVCBpbnN0YW5jZXMgYWx3YXlzIHNob3dlZCBbXSkuCiAgICAgICAgICAgIHZhciBwcmVzZXJ2ZWRBZHZpc29yS2V5cyA9IG5ldyBMaXN0PHN0cmluZz4oKTsKICAgICAgICAgICAgdmFyIGluY29taW5nS2V5cyA9IGRhdGE/LmFsbEFkdmlzb3JLZXlzOwogICAgICAgICAgICBpZiAoaW5jb21pbmdLZXlzICE9IG51bGwpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciBhayBpbiBpbmNvbWluZ0tleXMpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGFrID09IG51bGwpIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIHZhciBzID0gYWsuVG9TdHJpbmcoKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIXN0cmluZy5Jc051bGxPckVtcHR5KHMpKQogICAgICAgICAgICAgICAgICAgICAgICBwcmVzZXJ2ZWRBZHZpc29yS2V5cy5BZGQocyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmVzdWx0WyJhbGxBZHZpc29yS2V5cyJdID0gcHJlc2VydmVkQWR2aXNvcktleXM7CgogICAgICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBEYXRhID0gcmVzdWx0CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGV4KQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgRGF0YSA9IG5ldwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGVycm9yID0gIkZhaWxlZCB0byBlbnJpY2ggcmVzZXJ2YXRpb25zIiwKICAgICAgICAgICAgICAgICAgICBlcnJvckRlc2NyaXB0aW9uID0gZXguTWVzc2FnZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICB9CgogICAgI3JlZ2lvbiBTbG90IEF2YWlsYWJpbGl0eQoKICAgIHByaXZhdGUgYm9vbCBJc1Nsb3RBdmFpbGFibGVGb3JBZHZpc29yKHN0cmluZyBhZHZpc29yS2V5LCBEYXRlVGltZSByZXpTdGFydCwgRGF0ZVRpbWUgcmV6RW5kLAogICAgICAgIExpc3Q8ZHluYW1pYz4gcHVibGljSG9saWRheXMsCiAgICAgICAgRGljdGlvbmFyeTxzdHJpbmcsIExpc3Q8ZHluYW1pYz4+IGFkdmlzb3JXb3JrSG91cnNNYXAsCiAgICAgICAgTGlzdDxkeW5hbWljPiBjb21wYW55V29ya0hvdXJzLAogICAgICAgIERpY3Rpb25hcnk8c3RyaW5nLCBMaXN0PGR5bmFtaWM+PiBwZXJzb25hbExlYXZlc01hcCkKICAgIHsKICAgICAgICB2YXIgcmV6RGF0ZSA9IHJlelN0YXJ0LkRhdGU7CiAgICAgICAgdmFyIGRheU9mV2VlayA9IHJlekRhdGUuRGF5T2ZXZWVrLlRvU3RyaW5nKCkuVG9Mb3dlcigpOwogICAgICAgIHZhciBzbG90U3RhcnQgPSByZXpTdGFydC5UaW1lT2ZEYXk7CiAgICAgICAgdmFyIHNsb3RFbmQgPSByZXpFbmQuVGltZU9mRGF5OwoKICAgICAgICB2YXIgaG9saWRheVJhbmdlcyA9IEdldEhvbGlkYXlSYW5nZXMocHVibGljSG9saWRheXMsIHJlekRhdGUpOwogICAgICAgIGlmIChob2xpZGF5UmFuZ2VzICE9IG51bGwgJiYgaG9saWRheVJhbmdlcy5Db3VudCA9PSAxCiAgICAgICAgICAgICYmIGhvbGlkYXlSYW5nZXNbMF0uSXRlbTEgPT0gVGltZVNwYW4uWmVybwogICAgICAgICAgICAmJiBob2xpZGF5UmFuZ2VzWzBdLkl0ZW0yID49IG5ldyBUaW1lU3BhbigyMywgNTksIDApKQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgICAgIExpc3Q8ZHluYW1pYz4gYWR2V29ya0hvdXJzID0gbnVsbDsKICAgICAgICBpZiAoYWR2aXNvcldvcmtIb3Vyc01hcC5Db250YWluc0tleShhZHZpc29yS2V5KSkKICAgICAgICAgICAgYWR2V29ya0hvdXJzID0gYWR2aXNvcldvcmtIb3Vyc01hcFthZHZpc29yS2V5XTsKCiAgICAgICAgdmFyIHdvcmtIb3VycyA9IEdldFdvcmtpbmdIb3Vyc0ZvckRheShhZHZXb3JrSG91cnMsIGRheU9mV2Vlayk7CiAgICAgICAgaWYgKHdvcmtIb3VycyA9PSBudWxsIHx8IHdvcmtIb3Vycy5Db3VudCA9PSAwKQogICAgICAgICAgICB3b3JrSG91cnMgPSBHZXRXb3JraW5nSG91cnNGb3JEYXkoY29tcGFueVdvcmtIb3VycywgZGF5T2ZXZWVrKTsKCiAgICAgICAgaWYgKHdvcmtIb3VycyA9PSBudWxsIHx8IHdvcmtIb3Vycy5Db3VudCA9PSAwKQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgICAgIGJvb2wgc2xvdEluV29ya0hvdXJzID0gZmFsc2U7CiAgICAgICAgZm9yZWFjaCAodmFyIHdoIGluIHdvcmtIb3VycykKICAgICAgICB7CiAgICAgICAgICAgIGR5bmFtaWMgd2hEeW4gPSB3aDsKICAgICAgICAgICAgdmFyIHN0YXJ0U3RyID0gd2hEeW4/LnN0YXJ0Py5Ub1N0cmluZygpOwogICAgICAgICAgICB2YXIgZW5kU3RyID0gd2hEeW4/LmVuZD8uVG9TdHJpbmcoKTsKICAgICAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPckVtcHR5KHN0YXJ0U3RyKSB8fCBzdHJpbmcuSXNOdWxsT3JFbXB0eShlbmRTdHIpKQogICAgICAgICAgICAgICAgY29udGludWU7CgogICAgICAgICAgICBUaW1lU3BhbiB3aFN0YXJ0ID0gVGltZVNwYW4uTWluVmFsdWU7CiAgICAgICAgICAgIFRpbWVTcGFuIHdoRW5kID0gVGltZVNwYW4uTWluVmFsdWU7CiAgICAgICAgICAgIGlmICghVGltZVNwYW4uVHJ5UGFyc2Uoc3RhcnRTdHIsIG91dCB3aFN0YXJ0KSB8fCAhVGltZVNwYW4uVHJ5UGFyc2UoZW5kU3RyLCBvdXQgd2hFbmQpKQogICAgICAgICAgICAgICAgY29udGludWU7CgogICAgICAgICAgICBpZiAoc2xvdFN0YXJ0ID49IHdoU3RhcnQgJiYgc2xvdEVuZCA8PSB3aEVuZCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgc2xvdEluV29ya0hvdXJzID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoIXNsb3RJbldvcmtIb3VycykKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgICAgICB2YXIgdW5hdmFpbGFibGVSYW5nZXMgPSBuZXcgTGlzdDxUdXBsZTxUaW1lU3BhbiwgVGltZVNwYW4+PigpOwoKICAgICAgICBMaXN0PGR5bmFtaWM+IGFkdkxlYXZlcyA9IG51bGw7CiAgICAgICAgaWYgKHBlcnNvbmFsTGVhdmVzTWFwLkNvbnRhaW5zS2V5KGFkdmlzb3JLZXkpKQogICAgICAgICAgICBhZHZMZWF2ZXMgPSBwZXJzb25hbExlYXZlc01hcFthZHZpc29yS2V5XTsKICAgICAgICBpZiAoYWR2TGVhdmVzICE9IG51bGwpCiAgICAgICAgICAgIHVuYXZhaWxhYmxlUmFuZ2VzLkFkZFJhbmdlKEdldFVuYXZhaWxhYmxlUmFuZ2VzKGFkdkxlYXZlcywgcmV6RGF0ZSkpOwoKICAgICAgICBpZiAoaG9saWRheVJhbmdlcyAhPSBudWxsKQogICAgICAgICAgICB1bmF2YWlsYWJsZVJhbmdlcy5BZGRSYW5nZShob2xpZGF5UmFuZ2VzKTsKCiAgICAgICAgZm9yZWFjaCAodmFyIHVyIGluIHVuYXZhaWxhYmxlUmFuZ2VzKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKHNsb3RTdGFydCA8IHVyLkl0ZW0yICYmIHNsb3RFbmQgPiB1ci5JdGVtMSkKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIHByaXZhdGUgTGlzdDxUdXBsZTxUaW1lU3BhbiwgVGltZVNwYW4+PiBHZXRIb2xpZGF5UmFuZ2VzKExpc3Q8ZHluYW1pYz4gaG9saWRheXMsIERhdGVUaW1lIGRhdGUpCiAgICB7CiAgICAgICAgdmFyIHJhbmdlcyA9IG5ldyBMaXN0PFR1cGxlPFRpbWVTcGFuLCBUaW1lU3Bhbj4+KCk7CiAgICAgICAgYm9vbCBoYXNIb2xpZGF5ID0gZmFsc2U7CgogICAgICAgIGZvcmVhY2ggKHZhciBob2xpZGF5IGluIGhvbGlkYXlzKQogICAgICAgIHsKICAgICAgICAgICAgdmFyIGhvbGlkYXlEYXRhID0gaG9saWRheT8uYXR0cmlidXRlczsKICAgICAgICAgICAgaWYgKGhvbGlkYXlEYXRhID09IG51bGwpIGNvbnRpbnVlOwoKICAgICAgICAgICAgc3RyaW5nIHN0YXJ0RGF0ZVRpbWVTdHIgPSBHZXRTdHJpbmcoaG9saWRheURhdGEsICJzdGFydERhdGVUaW1lIik7CiAgICAgICAgICAgIHN0cmluZyBlbmREYXRlVGltZVN0ciA9IEdldFN0cmluZyhob2xpZGF5RGF0YSwgImVuZERhdGVUaW1lIik7CgogICAgICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yRW1wdHkoc3RhcnREYXRlVGltZVN0cikgfHwgc3RyaW5nLklzTnVsbE9yRW1wdHkoZW5kRGF0ZVRpbWVTdHIpKQogICAgICAgICAgICAgICAgY29udGludWU7CgogICAgICAgICAgICBEYXRlVGltZSBzdGFydERhdGVUaW1lID0gRGF0ZVRpbWUuTWluVmFsdWU7CiAgICAgICAgICAgIERhdGVUaW1lIGVuZERhdGVUaW1lID0gRGF0ZVRpbWUuTWluVmFsdWU7CiAgICAgICAgICAgIGlmICghVHJ5UGFyc2VUb1V0YyhzdGFydERhdGVUaW1lU3RyLCBvdXQgc3RhcnREYXRlVGltZSkgfHwgIVRyeVBhcnNlVG9VdGMoZW5kRGF0ZVRpbWVTdHIsIG91dCBlbmREYXRlVGltZSkpCiAgICAgICAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAgICAgIGlmIChkYXRlLkRhdGUgPCBzdGFydERhdGVUaW1lLkRhdGUgfHwgZGF0ZS5EYXRlID4gZW5kRGF0ZVRpbWUuRGF0ZSkKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICAgICAgaGFzSG9saWRheSA9IHRydWU7CgogICAgICAgICAgICBpZiAoc3RhcnREYXRlVGltZS5EYXRlICE9IGVuZERhdGVUaW1lLkRhdGUpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmIChkYXRlLkRhdGUgPT0gc3RhcnREYXRlVGltZS5EYXRlKQogICAgICAgICAgICAgICAgICAgIHJhbmdlcy5BZGQoVHVwbGUuQ3JlYXRlKHN0YXJ0RGF0ZVRpbWUuVGltZU9mRGF5LCBuZXcgVGltZVNwYW4oMjMsIDU5LCA1OSkpKTsKICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGUuRGF0ZSA9PSBlbmREYXRlVGltZS5EYXRlKQogICAgICAgICAgICAgICAgICAgIHJhbmdlcy5BZGQoVHVwbGUuQ3JlYXRlKFRpbWVTcGFuLlplcm8sIGVuZERhdGVUaW1lLlRpbWVPZkRheSkpOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIHJhbmdlcy5BZGQoVHVwbGUuQ3JlYXRlKFRpbWVTcGFuLlplcm8sIG5ldyBUaW1lU3BhbigyMywgNTksIDU5KSkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmFuZ2VzLkFkZChUdXBsZS5DcmVhdGUoc3RhcnREYXRlVGltZS5UaW1lT2ZEYXksIGVuZERhdGVUaW1lLlRpbWVPZkRheSkpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gaGFzSG9saWRheSA/IHJhbmdlcyA6IG51bGw7CiAgICB9CgogICAgcHJpdmF0ZSBMaXN0PG9iamVjdD4gR2V0V29ya2luZ0hvdXJzRm9yRGF5KExpc3Q8ZHluYW1pYz4gd29ya2luZ0hvdXJzQ2hhbmdlcywgc3RyaW5nIGRheU9mV2VlaykKICAgIHsKICAgICAgICBpZiAod29ya2luZ0hvdXJzQ2hhbmdlcyA9PSBudWxsKSByZXR1cm4gbnVsbDsKCiAgICAgICAgZm9yZWFjaCAodmFyIGNoYW5nZSBpbiB3b3JraW5nSG91cnNDaGFuZ2VzKQogICAgICAgIHsKICAgICAgICAgICAgdmFyIGNoYW5nZURhdGEgPSBjaGFuZ2U/LmF0dHJpYnV0ZXM7CiAgICAgICAgICAgIGlmIChjaGFuZ2VEYXRhID09IG51bGwpIGNvbnRpbnVlOwoKICAgICAgICAgICAgdmFyIGN1c3RvbVdIID0gY2hhbmdlRGF0YT8uY3VzdG9tV29ya2luZ0hvdXJzOwogICAgICAgICAgICBpZiAoY3VzdG9tV0ggPT0gbnVsbCkgY29udGludWU7CgogICAgICAgICAgICB2YXIgZGF5SG91cnMgPSBHZXREYXlIb3Vyc0Zyb21DdXN0b20oY3VzdG9tV0gsIGRheU9mV2Vlayk7CiAgICAgICAgICAgIGlmIChkYXlIb3VycyAhPSBudWxsKSByZXR1cm4gZGF5SG91cnM7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwcml2YXRlIExpc3Q8b2JqZWN0PiBHZXREYXlIb3Vyc0Zyb21DdXN0b20oZHluYW1pYyBjdXN0b21XSCwgc3RyaW5nIGRheU9mV2VlaykKICAgIHsKICAgICAgICBkeW5hbWljIGRheUhvdXJzID0gbnVsbDsKICAgICAgICBzd2l0Y2ggKGRheU9mV2VlaykKICAgICAgICB7CiAgICAgICAgICAgIGNhc2UgIm1vbmRheSI6IGRheUhvdXJzID0gY3VzdG9tV0g/Lm1vbmRheTsgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgInR1ZXNkYXkiOiBkYXlIb3VycyA9IGN1c3RvbVdIPy50dWVzZGF5OyBicmVhazsKICAgICAgICAgICAgY2FzZSAid2VkbmVzZGF5IjogZGF5SG91cnMgPSBjdXN0b21XSD8ud2VkbmVzZGF5OyBicmVhazsKICAgICAgICAgICAgY2FzZSAidGh1cnNkYXkiOiBkYXlIb3VycyA9IGN1c3RvbVdIPy50aHVyc2RheTsgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgImZyaWRheSI6IGRheUhvdXJzID0gY3VzdG9tV0g/LmZyaWRheTsgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgInNhdHVyZGF5IjogZGF5SG91cnMgPSBjdXN0b21XSD8uc2F0dXJkYXk7IGJyZWFrOwogICAgICAgICAgICBjYXNlICJzdW5kYXkiOiBkYXlIb3VycyA9IGN1c3RvbVdIPy5zdW5kYXk7IGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgaWYgKGRheUhvdXJzID09IG51bGwpIHJldHVybiBudWxsOwoKICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IExpc3Q8b2JqZWN0PigpOwogICAgICAgIGZvcmVhY2ggKHZhciByYW5nZSBpbiBkYXlIb3VycykKICAgICAgICB7CiAgICAgICAgICAgIHZhciBzdGFydCA9IHJhbmdlPy5zdGFydD8uVG9TdHJpbmcoKTsKICAgICAgICAgICAgdmFyIGVuZCA9IHJhbmdlPy5lbmQ/LlRvU3RyaW5nKCk7CiAgICAgICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yRW1wdHkoc3RhcnQpICYmICFzdHJpbmcuSXNOdWxsT3JFbXB0eShlbmQpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXN1bHQuQWRkKG5ldyB7IHN0YXJ0LCBlbmQgfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJlc3VsdC5Db3VudCA+IDAgPyByZXN1bHQgOiBudWxsOwogICAgfQoKICAgIHByaXZhdGUgTGlzdDxUdXBsZTxUaW1lU3BhbiwgVGltZVNwYW4+PiBHZXRVbmF2YWlsYWJsZVJhbmdlcyhMaXN0PGR5bmFtaWM+IHBlcnNvbmFsTGVhdmVzLCBEYXRlVGltZSBkYXRlKQogICAgewogICAgICAgIHZhciByYW5nZXMgPSBuZXcgTGlzdDxUdXBsZTxUaW1lU3BhbiwgVGltZVNwYW4+PigpOwoKICAgICAgICBmb3JlYWNoICh2YXIgbGVhdmUgaW4gcGVyc29uYWxMZWF2ZXMpCiAgICAgICAgewogICAgICAgICAgICB2YXIgbGVhdmVEYXRhID0gbGVhdmU/LmF0dHJpYnV0ZXM7CiAgICAgICAgICAgIGlmIChsZWF2ZURhdGEgPT0gbnVsbCkgY29udGludWU7CgogICAgICAgICAgICBzdHJpbmcgc3RhcnREYXRlVGltZVN0ciA9IEdldFN0cmluZyhsZWF2ZURhdGEsICJzdGFydERhdGVUaW1lIik7CiAgICAgICAgICAgIHN0cmluZyBlbmREYXRlVGltZVN0ciA9IEdldFN0cmluZyhsZWF2ZURhdGEsICJlbmREYXRlVGltZSIpOwoKICAgICAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPckVtcHR5KHN0YXJ0RGF0ZVRpbWVTdHIpIHx8IHN0cmluZy5Jc051bGxPckVtcHR5KGVuZERhdGVUaW1lU3RyKSkKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICAgICAgRGF0ZVRpbWUgc3RhcnREYXRlVGltZSA9IERhdGVUaW1lLk1pblZhbHVlOwogICAgICAgICAgICBEYXRlVGltZSBlbmREYXRlVGltZSA9IERhdGVUaW1lLk1pblZhbHVlOwogICAgICAgICAgICBpZiAoIVRyeVBhcnNlVG9VdGMoc3RhcnREYXRlVGltZVN0ciwgb3V0IHN0YXJ0RGF0ZVRpbWUpIHx8ICFUcnlQYXJzZVRvVXRjKGVuZERhdGVUaW1lU3RyLCBvdXQgZW5kRGF0ZVRpbWUpKQogICAgICAgICAgICAgICAgY29udGludWU7CgogICAgICAgICAgICBpZiAoZGF0ZS5EYXRlIDwgc3RhcnREYXRlVGltZS5EYXRlIHx8IGRhdGUuRGF0ZSA+IGVuZERhdGVUaW1lLkRhdGUpCiAgICAgICAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAgICAgIGlmIChzdGFydERhdGVUaW1lLkRhdGUgIT0gZW5kRGF0ZVRpbWUuRGF0ZSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYgKGRhdGUuRGF0ZSA9PSBzdGFydERhdGVUaW1lLkRhdGUpCiAgICAgICAgICAgICAgICAgICAgcmFuZ2VzLkFkZChUdXBsZS5DcmVhdGUoc3RhcnREYXRlVGltZS5UaW1lT2ZEYXksIG5ldyBUaW1lU3BhbigyMywgNTksIDU5KSkpOwogICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0ZS5EYXRlID09IGVuZERhdGVUaW1lLkRhdGUpCiAgICAgICAgICAgICAgICAgICAgcmFuZ2VzLkFkZChUdXBsZS5DcmVhdGUoVGltZVNwYW4uWmVybywgZW5kRGF0ZVRpbWUuVGltZU9mRGF5KSk7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgcmFuZ2VzLkFkZChUdXBsZS5DcmVhdGUoVGltZVNwYW4uWmVybywgbmV3IFRpbWVTcGFuKDIzLCA1OSwgNTkpKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByYW5nZXMuQWRkKFR1cGxlLkNyZWF0ZShzdGFydERhdGVUaW1lLlRpbWVPZkRheSwgZW5kRGF0ZVRpbWUuVGltZU9mRGF5KSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiByYW5nZXM7CiAgICB9CgogICAgI2VuZHJlZ2lvbgoKICAgICNyZWdpb24gSGVscGVycwoKICAgIHByaXZhdGUgYm9vbCBUcnlQYXJzZVRvVXRjKHN0cmluZyBkYXRlU3RyLCBvdXQgRGF0ZVRpbWUgdXRjRGF0ZVRpbWUpCiAgICB7CiAgICAgICAgdXRjRGF0ZVRpbWUgPSBkZWZhdWx0OwogICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JFbXB0eShkYXRlU3RyKSkgcmV0dXJuIGZhbHNlOwogICAgICAgIGlmIChEYXRlVGltZU9mZnNldC5UcnlQYXJzZShkYXRlU3RyLAogICAgICAgICAgICBTeXN0ZW0uR2xvYmFsaXphdGlvbi5DdWx0dXJlSW5mby5JbnZhcmlhbnRDdWx0dXJlLAogICAgICAgICAgICBTeXN0ZW0uR2xvYmFsaXphdGlvbi5EYXRlVGltZVN0eWxlcy5Ob25lLCBvdXQgdmFyIGR0bykpCiAgICAgICAgewogICAgICAgICAgICB1dGNEYXRlVGltZSA9IGR0by5VdGNEYXRlVGltZTsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwcml2YXRlIHN0cmluZyBHZXRTdHJpbmcoZHluYW1pYyBvYmosIHN0cmluZyBuYW1lKQogICAgewogICAgICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIG51bGw7CiAgICAgICAgdHJ5CiAgICAgICAgewogICAgICAgICAgICBpZiAoSGFzUHJvcGVydHkob2JqLCBuYW1lKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdmFyIHYgPSBHZXRQcm9wZXJ0eVZhbHVlKG9iaiwgbmFtZSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdj8uVG9TdHJpbmcoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjYXRjaCB7IH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwcml2YXRlIHN0cmluZyBHZXROZXN0ZWRTdHJpbmcoZHluYW1pYyBvYmosIHN0cmluZyBwYXJlbnQsIHN0cmluZyBjaGlsZCkKICAgIHsKICAgICAgICBpZiAob2JqID09IG51bGwpIHJldHVybiBudWxsOwogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgICAgaWYgKEhhc1Byb3BlcnR5KG9iaiwgcGFyZW50KSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdmFyIG5lc3RlZCA9IEdldFByb3BlcnR5VmFsdWUob2JqLCBwYXJlbnQpOwogICAgICAgICAgICAgICAgaWYgKG5lc3RlZCAhPSBudWxsICYmIEhhc1Byb3BlcnR5KG5lc3RlZCwgY2hpbGQpKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHZhciB2ID0gR2V0UHJvcGVydHlWYWx1ZShuZXN0ZWQsIGNoaWxkKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdj8uVG9TdHJpbmcoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjYXRjaCB7IH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICAjZW5kcmVnaW9uCn0K"
|
|
126
126
|
}
|
|
127
127
|
}
|
|
128
128
|
]
|
|
@@ -169,7 +169,7 @@
|
|
|
169
169
|
},
|
|
170
170
|
"mapping": {
|
|
171
171
|
"location": "./src/ValidateTransferMapping.csx",
|
|
172
|
-
"code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7CnVzaW5nIEJCVC5Xb3JrZmxvdy5TY3JpcHRpbmc7CnVzaW5nIEJCVC5Xb3JrZmxvdy5EZWZpbml0aW9uczsKCi8vLyA8c3VtbWFyeT4KLy8vIE1hcHBpbmcgZm9yIHZhbGlkYXRlLXRyYW5zZmVyLWF2YWlsYWJpbGl0eSB0YXNrIChEYXByU2VydmljZVRhc2sgLSBUeXBlIDMpLgovLy8gUXVlcmllcyBhbGwgYWN0aXZlIHJlc2VydmF0aW9ucyBpbiB0aGUgZGF0ZSByYW5nZSBmb3IgdGFyZ2V0IGFkdmlzb3JzLgovLy8gT3V0cHV0SGFuZGxlciBjaGVja3MgZWFjaCB0cmFuc2ZlclBsYW4gaXRlbSB0byBzZWUgaWYgdGhlIHRhcmdldCBhZHZpc29yCi8vLyBzdGlsbCBoYXMgYSBmcmVlIHNsb3QgYXQgdGhlIHJlc2VydmF0aW9uJ3MgdGltZXNsb3QuCi8vLyBTZXRzIHZhbGlkYXRpb25SZXN1bHQuYWxsVmFsaWQgPSB0cnVlL2ZhbHNlIGFjY29yZGluZ2x5LgovLy8gPC9zdW1tYXJ5PgpwdWJsaWMgY2xhc3MgVmFsaWRhdGVUcmFuc2Zlck1hcHBpbmcgOiBTY3JpcHRCYXNlLCBJTWFwcGluZwp7CiAgICBwdWJsaWMgVGFzazxTY3JpcHRSZXNwb25zZT4gSW5wdXRIYW5kbGVyKFdvcmtmbG93VGFzayB0YXNrLCBTY3JpcHRDb250ZXh0IGNvbnRleHQpCiAgICB7CiAgICAgICAgdmFyIHNlcnZpY2VUYXNrID0gdGFzayBhcyBEYXByU2VydmljZVRhc2s7CiAgICAgICAgaWYgKHNlcnZpY2VUYXNrID09IG51bGwpCiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKCJUYXNrIG11c3QgYmUgYSBEYXByU2VydmljZVRhc2siKTsKCiAgICAgICAgdmFyIGFwcElkID0gR2V0Q29uZmlnVmFsdWUoIkRBUFJfQVBQX0lEIik7CiAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JFbXB0eShhcHBJZCkpCiAgICAgICAgICAgIHNlcnZpY2VUYXNrLlNldEFwcElkKGFwcElkKTsKCiAgICAgICAgdmFyIGRhdGEgPSBjb250ZXh0Lkluc3RhbmNlPy5EYXRhOwogICAgICAgIGlmIChkYXRhID09IG51bGwpCiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKCJJbnN0YW5jZSBkYXRhIGlzIHJlcXVpcmVkIik7CgogICAgICAgIHZhciB0cmFuc2ZlclBsYW4gPSBkYXRhLnRyYW5zZmVyUGxhbjsKICAgICAgICBpZiAodHJhbnNmZXJQbGFuID09IG51bGwpCiAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudEV4Y2VwdGlvbigidHJhbnNmZXJQbGFuIGlzIHJlcXVpcmVkLiIsICJ0cmFuc2ZlclBsYW4iKTsKCiAgICAgICAgdmFyIHN0YXJ0RGF0ZSA9IEdldFN0cmluZyhkYXRhLCAic3RhcnREYXRlIik7CiAgICAgICAgdmFyIGVuZERhdGUgPSBHZXRTdHJpbmcoZGF0YSwgImVuZERhdGUiKTsKCiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPckVtcHR5KHN0YXJ0RGF0ZSkpCiAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudEV4Y2VwdGlvbigic3RhcnREYXRlIGlzIHJlcXVpcmVkLiIsICJzdGFydERhdGUiKTsKICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yRW1wdHkoZW5kRGF0ZSkpCiAgICAgICAgICAgIGVuZERhdGUgPSAiMjA5OS0xMi0zMSI7CgogICAgICAgIHZhciBjb25kaXRpb25zID0gbmV3IExpc3Q8c3RyaW5nPgogICAgICAgIHsKICAgICAgICAgICAgIntcIm9yXCI6WyIgKwogICAgICAgICAgICAgICAgIntcImN1cnJlbnRTdGF0ZVwiOntcImVxXCI6XCJhY3RpdmVcIn19LCIgKwogICAgICAgICAgICAgICAgIntcImN1cnJlbnRTdGF0ZVwiOntcImVxXCI6XCJpbi1tZWV0XCJ9fSIgKwogICAgICAgICAgICAiXX0iLAogICAgICAgICAgICAie1wic3RhdHVzXCI6e1wiZXFcIjpcIkFcIn19IiwKICAgICAgICAgICAgIntcImF0dHJpYnV0ZXNcIjp7XCJzdGFydERhdGVUaW1lXCI6e1wiZGd0XCI6XCIiICsgc3RhcnREYXRlICsgIlwifX19IiwKICAgICAgICAgICAgIntcImF0dHJpYnV0ZXNcIjp7XCJlbmREYXRlVGltZVwiOntcImRsdFwiOlwiIiArIGVuZERhdGUgKyAiXCJ9fX0iCiAgICAgICAgfTsKCiAgICAgICAgdmFyIGZpbHRlckpzb24gPSAie1wiYW5kXCI6WyIgKyBzdHJpbmcuSm9pbigiLCIsIGNvbmRpdGlvbnMpICsgIl19IjsKICAgICAgICB2YXIgcXVlcnlQYXJhbXMgPSBuZXcgTGlzdDxzdHJpbmc+CiAgICAgICAgewogICAgICAgICAgICAicGFnZVNpemU9MTAwIiwKICAgICAgICAgICAgImZpbHRlcj0iICsgZmlsdGVySnNvbgogICAgICAgIH07CgogICAgICAgIHNlcnZpY2VUYXNrLlNldFF1ZXJ5U3RyaW5nKHN0cmluZy5Kb2luKCImIiwgcXVlcnlQYXJhbXMpKTsKICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZSgpKTsKICAgIH0KCiAgICBwdWJsaWMgVGFzazxTY3JpcHRSZXNwb25zZT4gT3V0cHV0SGFuZGxlcihTY3JpcHRDb250ZXh0IGNvbnRleHQpCiAgICB7CiAgICAgICAgdHJ5CiAgICAgICAgewogICAgICAgICAgICB2YXIgYm9keSA9IGNvbnRleHQuQm9keTsKICAgICAgICAgICAgdmFyIGRhdGEgPSBjb250ZXh0Lkluc3RhbmNlPy5EYXRhOwoKICAgICAgICAgICAgaWYgKGJvZHkgIT0gbnVsbCAmJiBib2R5LmlzU3VjY2VzcyA9PSBmYWxzZSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdmFyIGVycm9yTWVzc2FnZSA9IGJvZHkuZXJyb3JNZXNzYWdlPy5Ub1N0cmluZygpID8/ICJWYWxpZGF0aW9uIHNlcnZpY2UgZXJyb3IiOwogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihlcnJvck1lc3NhZ2UpOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgcmVzcG9uc2VEYXRhID0gYm9keT8uZGF0YTsKICAgICAgICAgICAgdmFyIGFsbEl0ZW1zID0gcmVzcG9uc2VEYXRhPy5pdGVtczsKCiAgICAgICAgICAgIHZhciB0cmFuc2ZlclBsYW4gPSBkYXRhPy50cmFuc2ZlclBsYW47CiAgICAgICAgICAgIHZhciBlbnJpY2hlZFJlemVydmF0aW9ucyA9IGRhdGE/LmVucmljaGVkUmV6ZXJ2YXRpb25zOwoKICAgICAgICAgICAgYm9vbCBhbGxWYWxpZCA9IHRydWU7CiAgICAgICAgICAgIHZhciBkZXRhaWxzID0gbmV3IExpc3Q8b2JqZWN0PigpOwoKICAgICAgICAgICAgaWYgKHRyYW5zZmVyUGxhbiAhPSBudWxsKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgcGxhbkl0ZW0gaW4gdHJhbnNmZXJQbGFuKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGlmIChwbGFuSXRlbSA9PSBudWxsKSBjb250aW51ZTsKCiAgICAgICAgICAgICAgICAgICAgZHluYW1pYyBwaSA9IHBsYW5JdGVtOwogICAgICAgICAgICAgICAgICAgIHZhciByZXplcnZhdGlvbktleSA9IHBpLnJlemVydmF0aW9uS2V5Py5Ub1N0cmluZygpOwogICAgICAgICAgICAgICAgICAgIHZhciB0YXJnZXRBZHZpc29yID0gcGkudGFyZ2V0QWR2aXNvcj8uVG9TdHJpbmcoKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPckVtcHR5KHJlemVydmF0aW9uS2V5KSB8fCBzdHJpbmcuSXNOdWxsT3JFbXB0eSh0YXJnZXRBZHZpc29yKSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHMuQWRkKG5ldyB7IHJlemVydmF0aW9uS2V5LCB0YXJnZXRBZHZpc29yLCB2YWxpZCA9IGZhbHNlLCByZWFzb24gPSAibWlzc2luZy1kYXRhIiB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgYWxsVmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBzdHJpbmcgcmV6U3RhcnRTdHIgPSBudWxsLCByZXpFbmRTdHIgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIGlmIChlbnJpY2hlZFJlemVydmF0aW9ucyAhPSBudWxsKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIGVyIGluIGVucmljaGVkUmV6ZXJ2YXRpb25zKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXIgPT0gbnVsbCkgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZXJLZXkgPSBIYXNQcm9wZXJ0eShlciwgImtleSIpID8gZXIua2V5Py5Ub1N0cmluZygpIDogIiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJLZXkgPT0gcmV6ZXJ2YXRpb25LZXkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV6U3RhcnRTdHIgPSBIYXNQcm9wZXJ0eShlciwgInN0YXJ0RGF0ZVRpbWUiKSA/IGVyLnN0YXJ0RGF0ZVRpbWU/LlRvU3RyaW5nKCkgOiBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlekVuZFN0ciA9IEhhc1Byb3BlcnR5KGVyLCAiZW5kRGF0ZVRpbWUiKSA/IGVyLmVuZERhdGVUaW1lPy5Ub1N0cmluZygpIDogbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPckVtcHR5KHJlelN0YXJ0U3RyKSB8fCBzdHJpbmcuSXNOdWxsT3JFbXB0eShyZXpFbmRTdHIpKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlscy5BZGQobmV3IHsgcmV6ZXJ2YXRpb25LZXksIHRhcmdldEFkdmlzb3IsIHZhbGlkID0gdHJ1ZSwgcmVhc29uID0gIm5vLXRpbWUtZGF0YS10by12YWxpZGF0ZSIgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgRGF0ZVRpbWUgcmV6U3RhcnQgPSBEYXRlVGltZS5NaW5WYWx1ZTsKICAgICAgICAgICAgICAgICAgICBEYXRlVGltZSByZXpFbmQgPSBEYXRlVGltZS5NaW5WYWx1ZTsKICAgICAgICAgICAgICAgICAgICBpZiAoIURhdGVUaW1lLlRyeVBhcnNlKHJlelN0YXJ0U3RyLCBvdXQgcmV6U3RhcnQpIHx8ICFEYXRlVGltZS5UcnlQYXJzZShyZXpFbmRTdHIsIG91dCByZXpFbmQpKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlscy5BZGQobmV3IHsgcmV6ZXJ2YXRpb25LZXksIHRhcmdldEFkdmlzb3IsIHZhbGlkID0gdHJ1ZSwgcmVhc29uID0gInVucGFyc2VhYmxlLXRpbWUiIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGJvb2wgaGFzQ29uZmxpY3QgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICBpZiAoYWxsSXRlbXMgIT0gbnVsbCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciBpdGVtIGluIGFsbEl0ZW1zKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbSA9PSBudWxsKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpdGVtQWR2aXNvciA9IEdldE5lc3RlZFN0cmluZyhpdGVtLCAiYXR0cmlidXRlcyIsICJhZHZpc29yIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PyBHZXRTdHJpbmcoaXRlbSwgImFkdmlzb3IiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtQWR2aXNvciAhPSB0YXJnZXRBZHZpc29yKSBjb250aW51ZTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbVN0YXJ0U3RyID0gR2V0TmVzdGVkU3RyaW5nKGl0ZW0sICJhdHRyaWJ1dGVzIiwgInN0YXJ0RGF0ZVRpbWUiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8/IEdldFN0cmluZyhpdGVtLCAic3RhcnREYXRlVGltZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZW1FbmRTdHIgPSBHZXROZXN0ZWRTdHJpbmcoaXRlbSwgImF0dHJpYnV0ZXMiLCAiZW5kRGF0ZVRpbWUiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8/IEdldFN0cmluZyhpdGVtLCAiZW5kRGF0ZVRpbWUiKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yRW1wdHkoaXRlbVN0YXJ0U3RyKSB8fCBzdHJpbmcuSXNOdWxsT3JFbXB0eShpdGVtRW5kU3RyKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRlVGltZSBpdGVtU3RhcnQgPSBEYXRlVGltZS5NaW5WYWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGVUaW1lIGl0ZW1FbmQgPSBEYXRlVGltZS5NaW5WYWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChEYXRlVGltZS5UcnlQYXJzZShpdGVtU3RhcnRTdHIsIG91dCBpdGVtU3RhcnQpICYmIERhdGVUaW1lLlRyeVBhcnNlKGl0ZW1FbmRTdHIsIG91dCBpdGVtRW5kKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbUtleSA9IEhhc1Byb3BlcnR5KGl0ZW0sICJrZXkiKSA/IGl0ZW0ua2V5Py5Ub1N0cmluZygpIDogIiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1LZXkgPT0gcmV6ZXJ2YXRpb25LZXkpIGNvbnRpbnVlOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbVN0YXJ0IDwgcmV6RW5kICYmIGl0ZW1FbmQgPiByZXpTdGFydCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0NvbmZsaWN0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoaGFzQ29uZmxpY3QpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBhbGxWYWxpZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxzLkFkZChuZXcgeyByZXplcnZhdGlvbktleSwgdGFyZ2V0QWR2aXNvciwgdmFsaWQgPSBmYWxzZSwgcmVhc29uID0gInNsb3QtY29uZmxpY3QiIH0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxzLkFkZChuZXcgeyByZXplcnZhdGlvbktleSwgdGFyZ2V0QWR2aXNvciwgdmFsaWQgPSB0cnVlIH0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgRGF0YSA9IG5ldwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb25SZXN1bHQgPSBuZXcKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGFsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxzCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWRJbmRleCA9IDAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIGNhdGNoIChFeGNlcHRpb24gZXgpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBEYXRhID0gbmV3CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvblJlc3VsdCA9IG5ldwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgYWxsVmFsaWQgPSBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBleC5NZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBzdHJpbmcgR2V0U3RyaW5nKGR5bmFtaWMgb2JqLCBzdHJpbmcgbmFtZSkKICAgIHsKICAgICAgICBpZiAob2JqID09IG51bGwpIHJldHVybiBudWxsOwogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgICAgaWYgKEhhc1Byb3BlcnR5KG9iaiwgbmFtZSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZhciB2ID0gR2V0UHJvcGVydHlWYWx1ZShvYmosIG5hbWUpOwogICAgICAgICAgICAgICAgcmV0dXJuIHY/LlRvU3RyaW5nKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY2F0Y2ggeyB9CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHJpdmF0ZSBzdHJpbmcgR2V0TmVzdGVkU3RyaW5nKGR5bmFtaWMgb2JqLCBzdHJpbmcgcGFyZW50LCBzdHJpbmcgY2hpbGQpCiAgICB7CiAgICAgICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gbnVsbDsKICAgICAgICB0cnkKICAgICAgICB7CiAgICAgICAgICAgIGlmIChIYXNQcm9wZXJ0eShvYmosIHBhcmVudCkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZhciBuZXN0ZWQgPSBHZXRQcm9wZXJ0eVZhbHVlKG9iaiwgcGFyZW50KTsKICAgICAgICAgICAgICAgIGlmIChuZXN0ZWQgIT0gbnVsbCAmJiBIYXNQcm9wZXJ0eShuZXN0ZWQsIGNoaWxkKSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdiA9IEdldFByb3BlcnR5VmFsdWUobmVzdGVkLCBjaGlsZCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHY/LlRvU3RyaW5nKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY2F0Y2ggeyB9CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9Cn0KCg=="
|
|
172
|
+
"code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7CnVzaW5nIEJCVC5Xb3JrZmxvdy5TY3JpcHRpbmc7CnVzaW5nIEJCVC5Xb3JrZmxvdy5EZWZpbml0aW9uczsKCi8vLyA8c3VtbWFyeT4KLy8vIE1hcHBpbmcgZm9yIHZhbGlkYXRlLXRyYW5zZmVyLWF2YWlsYWJpbGl0eSB0YXNrIChEYXByU2VydmljZVRhc2sgLSBUeXBlIDMpLgovLy8gUXVlcmllcyBhbGwgYWN0aXZlIHJlc2VydmF0aW9ucyBpbiB0aGUgZGF0ZSByYW5nZSBmb3IgdGFyZ2V0IGFkdmlzb3JzLgovLy8gT3V0cHV0SGFuZGxlciBjaGVja3MgZWFjaCB0cmFuc2ZlclBsYW4gaXRlbSB0byBzZWUgaWYgdGhlIHRhcmdldCBhZHZpc29yCi8vLyBzdGlsbCBoYXMgYSBmcmVlIHNsb3QgYXQgdGhlIHJlc2VydmF0aW9uJ3MgdGltZXNsb3QuCi8vLyBTZXRzIHZhbGlkYXRpb25SZXN1bHQuYWxsVmFsaWQgPSB0cnVlL2ZhbHNlIGFjY29yZGluZ2x5LgovLy8gPC9zdW1tYXJ5PgpwdWJsaWMgY2xhc3MgVmFsaWRhdGVUcmFuc2Zlck1hcHBpbmcgOiBTY3JpcHRCYXNlLCBJTWFwcGluZwp7CiAgICBwdWJsaWMgVGFzazxTY3JpcHRSZXNwb25zZT4gSW5wdXRIYW5kbGVyKFdvcmtmbG93VGFzayB0YXNrLCBTY3JpcHRDb250ZXh0IGNvbnRleHQpCiAgICB7CiAgICAgICAgdmFyIHNlcnZpY2VUYXNrID0gdGFzayBhcyBEYXByU2VydmljZVRhc2s7CiAgICAgICAgaWYgKHNlcnZpY2VUYXNrID09IG51bGwpCiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKCJUYXNrIG11c3QgYmUgYSBEYXByU2VydmljZVRhc2siKTsKCiAgICAgICAgdmFyIGFwcElkID0gR2V0Q29uZmlnVmFsdWUoIkRBUFJfQVBQX0lEIik7CiAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JFbXB0eShhcHBJZCkpCiAgICAgICAgICAgIHNlcnZpY2VUYXNrLlNldEFwcElkKGFwcElkKTsKCiAgICAgICAgdmFyIGRhdGEgPSBjb250ZXh0Lkluc3RhbmNlPy5EYXRhOwogICAgICAgIGlmIChkYXRhID09IG51bGwpCiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKCJJbnN0YW5jZSBkYXRhIGlzIHJlcXVpcmVkIik7CgogICAgICAgIHZhciB0cmFuc2ZlclBsYW4gPSBkYXRhLnRyYW5zZmVyUGxhbjsKICAgICAgICBpZiAodHJhbnNmZXJQbGFuID09IG51bGwpCiAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudEV4Y2VwdGlvbigidHJhbnNmZXJQbGFuIGlzIHJlcXVpcmVkLiIsICJ0cmFuc2ZlclBsYW4iKTsKCiAgICAgICAgdmFyIHN0YXJ0RGF0ZSA9IEdldFN0cmluZyhkYXRhLCAic3RhcnREYXRlIik7CiAgICAgICAgdmFyIGVuZERhdGUgPSBHZXRTdHJpbmcoZGF0YSwgImVuZERhdGUiKTsKCiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPckVtcHR5KHN0YXJ0RGF0ZSkpCiAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudEV4Y2VwdGlvbigic3RhcnREYXRlIGlzIHJlcXVpcmVkLiIsICJzdGFydERhdGUiKTsKICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yRW1wdHkoZW5kRGF0ZSkpCiAgICAgICAgICAgIGVuZERhdGUgPSAiMjA5OS0xMi0zMSI7CgogICAgICAgIHZhciBjb25kaXRpb25zID0gbmV3IExpc3Q8c3RyaW5nPgogICAgICAgIHsKICAgICAgICAgICAgIntcIm9yXCI6WyIgKwogICAgICAgICAgICAgICAgIntcImN1cnJlbnRTdGF0ZVwiOntcImVxXCI6XCJhY3RpdmVcIn19LCIgKwogICAgICAgICAgICAgICAgIntcImN1cnJlbnRTdGF0ZVwiOntcImVxXCI6XCJpbi1tZWV0XCJ9fSIgKwogICAgICAgICAgICAiXX0iLAogICAgICAgICAgICAie1wic3RhdHVzXCI6e1wiZXFcIjpcIkFcIn19IiwKICAgICAgICAgICAgIntcImF0dHJpYnV0ZXNcIjp7XCJzdGFydERhdGVUaW1lXCI6e1wiZGd0XCI6XCIiICsgc3RhcnREYXRlICsgIlwifX19IiwKICAgICAgICAgICAgIntcImF0dHJpYnV0ZXNcIjp7XCJlbmREYXRlVGltZVwiOntcImRsdFwiOlwiIiArIGVuZERhdGUgKyAiXCJ9fX0iCiAgICAgICAgfTsKCiAgICAgICAgdmFyIGZpbHRlckpzb24gPSAie1wiYW5kXCI6WyIgKyBzdHJpbmcuSm9pbigiLCIsIGNvbmRpdGlvbnMpICsgIl19IjsKICAgICAgICB2YXIgcXVlcnlQYXJhbXMgPSBuZXcgTGlzdDxzdHJpbmc+CiAgICAgICAgewogICAgICAgICAgICAicGFnZVNpemU9MTAwIiwKICAgICAgICAgICAgImZpbHRlcj0iICsgZmlsdGVySnNvbgogICAgICAgIH07CgogICAgICAgIHNlcnZpY2VUYXNrLlNldFF1ZXJ5U3RyaW5nKHN0cmluZy5Kb2luKCImIiwgcXVlcnlQYXJhbXMpKTsKICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZSgpKTsKICAgIH0KCiAgICBwdWJsaWMgVGFzazxTY3JpcHRSZXNwb25zZT4gT3V0cHV0SGFuZGxlcihTY3JpcHRDb250ZXh0IGNvbnRleHQpCiAgICB7CiAgICAgICAgdHJ5CiAgICAgICAgewogICAgICAgICAgICB2YXIgYm9keSA9IGNvbnRleHQuQm9keTsKICAgICAgICAgICAgdmFyIGRhdGEgPSBjb250ZXh0Lkluc3RhbmNlPy5EYXRhOwoKICAgICAgICAgICAgaWYgKGJvZHkgIT0gbnVsbCAmJiBib2R5LmlzU3VjY2VzcyA9PSBmYWxzZSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdmFyIGVycm9yTWVzc2FnZSA9IGJvZHkuZXJyb3JNZXNzYWdlPy5Ub1N0cmluZygpID8/ICJWYWxpZGF0aW9uIHNlcnZpY2UgZXJyb3IiOwogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihlcnJvck1lc3NhZ2UpOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgcmVzcG9uc2VEYXRhID0gYm9keT8uZGF0YTsKICAgICAgICAgICAgdmFyIGFsbEl0ZW1zID0gcmVzcG9uc2VEYXRhPy5pdGVtczsKCiAgICAgICAgICAgIHZhciB0cmFuc2ZlclBsYW4gPSBkYXRhPy50cmFuc2ZlclBsYW47CiAgICAgICAgICAgIHZhciBlbnJpY2hlZFJlemVydmF0aW9ucyA9IGRhdGE/LmVucmljaGVkUmV6ZXJ2YXRpb25zOwoKICAgICAgICAgICAgYm9vbCBhbGxWYWxpZCA9IHRydWU7CiAgICAgICAgICAgIHZhciBkZXRhaWxzID0gbmV3IExpc3Q8b2JqZWN0PigpOwoKICAgICAgICAgICAgaWYgKHRyYW5zZmVyUGxhbiAhPSBudWxsKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgcGxhbkl0ZW0gaW4gdHJhbnNmZXJQbGFuKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGlmIChwbGFuSXRlbSA9PSBudWxsKSBjb250aW51ZTsKCiAgICAgICAgICAgICAgICAgICAgZHluYW1pYyBwaSA9IHBsYW5JdGVtOwogICAgICAgICAgICAgICAgICAgIHZhciByZXplcnZhdGlvbktleSA9IHBpLnJlemVydmF0aW9uS2V5Py5Ub1N0cmluZygpOwogICAgICAgICAgICAgICAgICAgIHZhciB0YXJnZXRBZHZpc29yID0gcGkudGFyZ2V0QWR2aXNvcj8uVG9TdHJpbmcoKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPckVtcHR5KHJlemVydmF0aW9uS2V5KSB8fCBzdHJpbmcuSXNOdWxsT3JFbXB0eSh0YXJnZXRBZHZpc29yKSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHMuQWRkKG5ldyB7IHJlemVydmF0aW9uS2V5LCB0YXJnZXRBZHZpc29yLCB2YWxpZCA9IGZhbHNlLCByZWFzb24gPSAibWlzc2luZy1kYXRhIiB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgYWxsVmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBzdHJpbmcgcmV6U3RhcnRTdHIgPSBudWxsLCByZXpFbmRTdHIgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIGlmIChlbnJpY2hlZFJlemVydmF0aW9ucyAhPSBudWxsKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIGVyIGluIGVucmljaGVkUmV6ZXJ2YXRpb25zKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXIgPT0gbnVsbCkgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZXJLZXkgPSBIYXNQcm9wZXJ0eShlciwgImtleSIpID8gZXIua2V5Py5Ub1N0cmluZygpIDogIiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJLZXkgPT0gcmV6ZXJ2YXRpb25LZXkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV6U3RhcnRTdHIgPSBIYXNQcm9wZXJ0eShlciwgInN0YXJ0RGF0ZVRpbWUiKSA/IGVyLnN0YXJ0RGF0ZVRpbWU/LlRvU3RyaW5nKCkgOiBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlekVuZFN0ciA9IEhhc1Byb3BlcnR5KGVyLCAiZW5kRGF0ZVRpbWUiKSA/IGVyLmVuZERhdGVUaW1lPy5Ub1N0cmluZygpIDogbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPckVtcHR5KHJlelN0YXJ0U3RyKSB8fCBzdHJpbmcuSXNOdWxsT3JFbXB0eShyZXpFbmRTdHIpKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlscy5BZGQobmV3IHsgcmV6ZXJ2YXRpb25LZXksIHRhcmdldEFkdmlzb3IsIHZhbGlkID0gdHJ1ZSwgcmVhc29uID0gIm5vLXRpbWUtZGF0YS10by12YWxpZGF0ZSIgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgRGF0ZVRpbWUgcmV6U3RhcnQgPSBEYXRlVGltZS5NaW5WYWx1ZTsKICAgICAgICAgICAgICAgICAgICBEYXRlVGltZSByZXpFbmQgPSBEYXRlVGltZS5NaW5WYWx1ZTsKICAgICAgICAgICAgICAgICAgICBpZiAoIVRyeVBhcnNlVG9VdGMocmV6U3RhcnRTdHIsIG91dCByZXpTdGFydCkgfHwgIVRyeVBhcnNlVG9VdGMocmV6RW5kU3RyLCBvdXQgcmV6RW5kKSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHMuQWRkKG5ldyB7IHJlemVydmF0aW9uS2V5LCB0YXJnZXRBZHZpc29yLCB2YWxpZCA9IHRydWUsIHJlYXNvbiA9ICJ1bnBhcnNlYWJsZS10aW1lIiB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBib29sIGhhc0NvbmZsaWN0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgaWYgKGFsbEl0ZW1zICE9IG51bGwpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgaXRlbSBpbiBhbGxJdGVtcykKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0gPT0gbnVsbCkgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbUFkdmlzb3IgPSBHZXROZXN0ZWRTdHJpbmcoaXRlbSwgImF0dHJpYnV0ZXMiLCAiYWR2aXNvciIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz8gR2V0U3RyaW5nKGl0ZW0sICJhZHZpc29yIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbUFkdmlzb3IgIT0gdGFyZ2V0QWR2aXNvcikgY29udGludWU7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZW1TdGFydFN0ciA9IEdldE5lc3RlZFN0cmluZyhpdGVtLCAiYXR0cmlidXRlcyIsICJzdGFydERhdGVUaW1lIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PyBHZXRTdHJpbmcoaXRlbSwgInN0YXJ0RGF0ZVRpbWUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpdGVtRW5kU3RyID0gR2V0TmVzdGVkU3RyaW5nKGl0ZW0sICJhdHRyaWJ1dGVzIiwgImVuZERhdGVUaW1lIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PyBHZXRTdHJpbmcoaXRlbSwgImVuZERhdGVUaW1lIik7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPckVtcHR5KGl0ZW1TdGFydFN0cikgfHwgc3RyaW5nLklzTnVsbE9yRW1wdHkoaXRlbUVuZFN0cikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZVRpbWUgaXRlbVN0YXJ0ID0gRGF0ZVRpbWUuTWluVmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRlVGltZSBpdGVtRW5kID0gRGF0ZVRpbWUuTWluVmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVHJ5UGFyc2VUb1V0YyhpdGVtU3RhcnRTdHIsIG91dCBpdGVtU3RhcnQpICYmIFRyeVBhcnNlVG9VdGMoaXRlbUVuZFN0ciwgb3V0IGl0ZW1FbmQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpdGVtS2V5ID0gSGFzUHJvcGVydHkoaXRlbSwgImtleSIpID8gaXRlbS5rZXk/LlRvU3RyaW5nKCkgOiAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbUtleSA9PSByZXplcnZhdGlvbktleSkgY29udGludWU7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtU3RhcnQgPCByZXpFbmQgJiYgaXRlbUVuZCA+IHJlelN0YXJ0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzQ29uZmxpY3QgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmIChoYXNDb25mbGljdCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGFsbFZhbGlkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHMuQWRkKG5ldyB7IHJlemVydmF0aW9uS2V5LCB0YXJnZXRBZHZpc29yLCB2YWxpZCA9IGZhbHNlLCByZWFzb24gPSAic2xvdC1jb25mbGljdCIgfSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHMuQWRkKG5ldyB7IHJlemVydmF0aW9uS2V5LCB0YXJnZXRBZHZpc29yLCB2YWxpZCA9IHRydWUgfSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBEYXRhID0gbmV3CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvblJlc3VsdCA9IG5ldwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHMKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZEluZGV4ID0gMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBleCkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIERhdGEgPSBuZXcKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uUmVzdWx0ID0gbmV3CiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBhbGxWYWxpZCA9IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICBlcnJvciA9IGV4Lk1lc3NhZ2UKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIGJvb2wgVHJ5UGFyc2VUb1V0YyhzdHJpbmcgZGF0ZVN0ciwgb3V0IERhdGVUaW1lIHV0Y0RhdGVUaW1lKQogICAgewogICAgICAgIHV0Y0RhdGVUaW1lID0gZGVmYXVsdDsKICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yRW1wdHkoZGF0ZVN0cikpIHJldHVybiBmYWxzZTsKICAgICAgICBpZiAoRGF0ZVRpbWVPZmZzZXQuVHJ5UGFyc2UoZGF0ZVN0ciwKICAgICAgICAgICAgU3lzdGVtLkdsb2JhbGl6YXRpb24uQ3VsdHVyZUluZm8uSW52YXJpYW50Q3VsdHVyZSwKICAgICAgICAgICAgU3lzdGVtLkdsb2JhbGl6YXRpb24uRGF0ZVRpbWVTdHlsZXMuTm9uZSwgb3V0IHZhciBkdG8pKQogICAgICAgIHsKICAgICAgICAgICAgdXRjRGF0ZVRpbWUgPSBkdG8uVXRjRGF0ZVRpbWU7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHJpdmF0ZSBzdHJpbmcgR2V0U3RyaW5nKGR5bmFtaWMgb2JqLCBzdHJpbmcgbmFtZSkKICAgIHsKICAgICAgICBpZiAob2JqID09IG51bGwpIHJldHVybiBudWxsOwogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgICAgaWYgKEhhc1Byb3BlcnR5KG9iaiwgbmFtZSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZhciB2ID0gR2V0UHJvcGVydHlWYWx1ZShvYmosIG5hbWUpOwogICAgICAgICAgICAgICAgcmV0dXJuIHY/LlRvU3RyaW5nKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY2F0Y2ggeyB9CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHJpdmF0ZSBzdHJpbmcgR2V0TmVzdGVkU3RyaW5nKGR5bmFtaWMgb2JqLCBzdHJpbmcgcGFyZW50LCBzdHJpbmcgY2hpbGQpCiAgICB7CiAgICAgICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gbnVsbDsKICAgICAgICB0cnkKICAgICAgICB7CiAgICAgICAgICAgIGlmIChIYXNQcm9wZXJ0eShvYmosIHBhcmVudCkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZhciBuZXN0ZWQgPSBHZXRQcm9wZXJ0eVZhbHVlKG9iaiwgcGFyZW50KTsKICAgICAgICAgICAgICAgIGlmIChuZXN0ZWQgIT0gbnVsbCAmJiBIYXNQcm9wZXJ0eShuZXN0ZWQsIGNoaWxkKSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdiA9IEdldFByb3BlcnR5VmFsdWUobmVzdGVkLCBjaGlsZCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHY/LlRvU3RyaW5nKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY2F0Y2ggeyB9CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9Cn0KCg=="
|
|
173
173
|
}
|
|
174
174
|
}
|
|
175
175
|
]
|
|
@@ -469,6 +469,32 @@
|
|
|
469
469
|
},
|
|
470
470
|
{
|
|
471
471
|
"order": 2,
|
|
472
|
+
"task": {
|
|
473
|
+
"domain": "morph-touch",
|
|
474
|
+
"flow": "sys-tasks",
|
|
475
|
+
"key": "start-register-matrix-user",
|
|
476
|
+
"version": "1.0.0"
|
|
477
|
+
},
|
|
478
|
+
"mapping": {
|
|
479
|
+
"location": "./src/RegisterForTransferChatMapping.csx",
|
|
480
|
+
"code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7CnVzaW5nIEJCVC5Xb3JrZmxvdy5TY3JpcHRpbmc7CnVzaW5nIEJCVC5Xb3JrZmxvdy5EZWZpbml0aW9uczsKCi8vLyA8c3VtbWFyeT4KLy8vIE1hcHBpbmcgZm9yIHN0YXJ0LXJlZ2lzdGVyLW1hdHJpeC11c2VyIFN0YXJ0VGFzayAoVHlwZSAxMSkgaW4gcmV6ZXJ2YXRpb24tdHJhbnNmZXIgZmxvdy4KLy8vIFN0YXJ0cyByZWdpc3Rlci1tYXRyaXgtdXNlciBmbG93IHdpdGggbWF0cml4VXNlcm5hbWUgbG9va2VkIHVwIGZyb20gcGVybWFuZW50Q2hhdFJvb21zIGJ5IGNoYXRSb29tS2V5LgovLy8gPC9zdW1tYXJ5PgpwdWJsaWMgY2xhc3MgUmVnaXN0ZXJGb3JUcmFuc2ZlckNoYXRNYXBwaW5nIDogU2NyaXB0QmFzZSwgSU1hcHBpbmcKewogICAgcHVibGljIFRhc2s8U2NyaXB0UmVzcG9uc2U+IElucHV0SGFuZGxlcihXb3JrZmxvd1Rhc2sgdGFzaywgU2NyaXB0Q29udGV4dCBjb250ZXh0KQogICAgewogICAgICAgIHZhciBzdGFydFRhc2sgPSB0YXNrIGFzIFN0YXJ0VGFzazsKICAgICAgICBpZiAoc3RhcnRUYXNrID09IG51bGwpCiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKCJUYXNrIG11c3QgYmUgYSBTdGFydFRhc2siKTsKCiAgICAgICAgdmFyIGRhdGEgPSBjb250ZXh0Lkluc3RhbmNlPy5EYXRhOwogICAgICAgIGlmIChkYXRhID09IG51bGwpCiAgICAgICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlKCkpOwoKICAgICAgICBzdHJpbmcgdXNlciA9IG51bGw7CiAgICAgICAgdmFyIHBlcm1hbmVudFJvb21QbGFuID0gZGF0YS5wZXJtYW5lbnRSb29tUGxhbjsKICAgICAgICBpZiAocGVybWFuZW50Um9vbVBsYW4gIT0gbnVsbCkKICAgICAgICB7CiAgICAgICAgICAgIGludCBwcm9jZXNzZWRJbmRleCA9IDA7CiAgICAgICAgICAgIGlmIChIYXNQcm9wZXJ0eShkYXRhLCAicGVybWFuZW50UHJvY2Vzc2VkSW5kZXgiKSkKICAgICAgICAgICAgICAgIGludC5UcnlQYXJzZShkYXRhLnBlcm1hbmVudFByb2Nlc3NlZEluZGV4Py5Ub1N0cmluZygpID8/ICIwIiwgb3V0IHByb2Nlc3NlZEluZGV4KTsKCiAgICAgICAgICAgIHZhciBpdGVtcyA9IHBlcm1hbmVudFJvb21QbGFuIGFzIElFbnVtZXJhYmxlPG9iamVjdD47CiAgICAgICAgICAgIGlmIChpdGVtcyAhPSBudWxsKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB2YXIgaXRlbXNMaXN0ID0gaXRlbXMuVG9MaXN0KCk7CiAgICAgICAgICAgICAgICBpZiAocHJvY2Vzc2VkSW5kZXggPCBpdGVtc0xpc3QuQ291bnQpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgZHluYW1pYyBjdXJyZW50SXRlbSA9IGl0ZW1zTGlzdFtwcm9jZXNzZWRJbmRleF07CiAgICAgICAgICAgICAgICAgICAgdmFyIGNoYXRSb29tS2V5ID0gY3VycmVudEl0ZW0/LmNoYXRSb29tS2V5Py5Ub1N0cmluZygpOwogICAgICAgICAgICAgICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yRW1wdHkoY2hhdFJvb21LZXkpKQogICAgICAgICAgICAgICAgICAgICAgICB1c2VyID0gTG9va3VwVXNlcihkYXRhLCBjaGF0Um9vbUtleSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKHVzZXIpKQogICAgICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZSgpKTsKCiAgICAgICAgc3RhcnRUYXNrLlNldERvbWFpbigibW9ycGgtdG91Y2giKTsKICAgICAgICBzdGFydFRhc2suU2V0RmxvdygicmVnaXN0ZXItbWF0cml4LXVzZXIiKTsKICAgICAgICBzdGFydFRhc2suU2V0U3luYyh0cnVlKTsKICAgICAgICBzdGFydFRhc2suU2V0Qm9keShuZXcgeyBtYXRyaXhVc2VybmFtZSA9IHVzZXIgfSk7CgogICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlKCkpOwogICAgfQoKICAgIHB1YmxpYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBPdXRwdXRIYW5kbGVyKFNjcmlwdENvbnRleHQgY29udGV4dCkKICAgIHsKICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZSgpKTsKICAgIH0KCiAgICBwcml2YXRlIHN0cmluZyBMb29rdXBVc2VyKGR5bmFtaWMgZGF0YSwgc3RyaW5nIGNoYXRSb29tS2V5KQogICAgewogICAgICAgIGlmICghSGFzUHJvcGVydHkoZGF0YSwgInBlcm1hbmVudENoYXRSb29tcyIpIHx8IGRhdGEucGVybWFuZW50Q2hhdFJvb21zID09IG51bGwpCiAgICAgICAgICAgIHJldHVybiBudWxsOwoKICAgICAgICBmb3JlYWNoICh2YXIgcm9vbSBpbiBkYXRhLnBlcm1hbmVudENoYXRSb29tcykKICAgICAgICB7CiAgICAgICAgICAgIHZhciBrZXkgPSBHZXRTdHJpbmcocm9vbSwgImNoYXRSb29tS2V5Iik7CiAgICAgICAgICAgIGlmIChzdHJpbmcuRXF1YWxzKGtleSwgY2hhdFJvb21LZXksIFN0cmluZ0NvbXBhcmlzb24uT3JkaW5hbElnbm9yZUNhc2UpKQogICAgICAgICAgICAgICAgcmV0dXJuIEdldFN0cmluZyhyb29tLCAidXNlciIpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwcml2YXRlIHN0cmluZyBHZXRTdHJpbmcoZHluYW1pYyBvYmosIHN0cmluZyBuYW1lKQogICAgewogICAgICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIG51bGw7CiAgICAgICAgdHJ5CiAgICAgICAgewogICAgICAgICAgICBpZiAoSGFzUHJvcGVydHkob2JqLCBuYW1lKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdmFyIHYgPSBHZXRQcm9wZXJ0eVZhbHVlKG9iaiwgbmFtZSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdj8uVG9TdHJpbmcoKT8uVHJpbSgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNhdGNoIHsgfQogICAgICAgIHJldHVybiBudWxsOwogICAgfQp9Cg=="
|
|
481
|
+
}
|
|
482
|
+
},
|
|
483
|
+
{
|
|
484
|
+
"order": 3,
|
|
485
|
+
"task": {
|
|
486
|
+
"domain": "morph-touch",
|
|
487
|
+
"flow": "sys-tasks",
|
|
488
|
+
"key": "login-for-chat",
|
|
489
|
+
"version": "1.0.0"
|
|
490
|
+
},
|
|
491
|
+
"mapping": {
|
|
492
|
+
"location": "./src/LoginForTransferChatMapping.csx",
|
|
493
|
+
"code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7CnVzaW5nIEJCVC5Xb3JrZmxvdy5TY3JpcHRpbmc7CnVzaW5nIEJCVC5Xb3JrZmxvdy5EZWZpbml0aW9uczsKCi8vLyA8c3VtbWFyeT4KLy8vIE1hcHBpbmcgZm9yIGxvZ2luLWZvci1jaGF0IHdoZW4gdXNlZCBpbiByZXplcnZhdGlvbi10cmFuc2ZlciBmbG93LgovLy8gQ2FsbHMgUE9TVCAvX21hdHJpeC9jbGllbnQvdjMvbG9naW4gb24gU3luYXBzZS4KLy8vIExvb2tzIHVwIHVzZXIgZnJvbSBwZXJtYW5lbnRDaGF0Um9vbXMgYnkgY2hhdFJvb21LZXkgKHNhbWUgbG9naWMgYXMgRmV0Y2hSb29tTWVzc2FnZXNGb3JTdW1tYXJ5TWFwcGluZykuCi8vLyBTdG9yZXMgYWNjZXNzX3Rva2VuIGFzIHNlc3Npb25JZCBpbiBjaGF0SW50ZWdyYXRpb24gZm9yIHN1YnNlcXVlbnQgTWF0cml4IEFQSSBjYWxscy4KLy8vIDwvc3VtbWFyeT4KcHVibGljIGNsYXNzIExvZ2luRm9yVHJhbnNmZXJDaGF0TWFwcGluZyA6IFNjcmlwdEJhc2UsIElNYXBwaW5nCnsKICAgIHB1YmxpYyBhc3luYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBJbnB1dEhhbmRsZXIoV29ya2Zsb3dUYXNrIHRhc2ssIFNjcmlwdENvbnRleHQgY29udGV4dCkKICAgIHsKICAgICAgICB2YXIgaHR0cFRhc2sgPSB0YXNrIGFzIEh0dHBUYXNrOwogICAgICAgIGlmIChodHRwVGFzayA9PSBudWxsKQogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigiVGFzayBtdXN0IGJlIGFuIEh0dHBUYXNrIik7CgogICAgICAgIHZhciBkYXRhID0gY29udGV4dC5JbnN0YW5jZT8uRGF0YTsKICAgICAgICBpZiAoZGF0YSA9PSBudWxsKQogICAgICAgICAgICByZXR1cm4gbmV3IFNjcmlwdFJlc3BvbnNlKCk7CgogICAgICAgIHN0cmluZyB1c2VyID0gbnVsbDsKICAgICAgICB2YXIgcGVybWFuZW50Um9vbVBsYW4gPSBkYXRhLnBlcm1hbmVudFJvb21QbGFuOwogICAgICAgIGlmIChwZXJtYW5lbnRSb29tUGxhbiAhPSBudWxsKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHByb2Nlc3NlZEluZGV4ID0gMDsKICAgICAgICAgICAgaWYgKEhhc1Byb3BlcnR5KGRhdGEsICJwZXJtYW5lbnRQcm9jZXNzZWRJbmRleCIpKQogICAgICAgICAgICAgICAgaW50LlRyeVBhcnNlKGRhdGEucGVybWFuZW50UHJvY2Vzc2VkSW5kZXg/LlRvU3RyaW5nKCkgPz8gIjAiLCBvdXQgcHJvY2Vzc2VkSW5kZXgpOwoKICAgICAgICAgICAgdmFyIGl0ZW1zID0gcGVybWFuZW50Um9vbVBsYW4gYXMgSUVudW1lcmFibGU8b2JqZWN0PjsKICAgICAgICAgICAgaWYgKGl0ZW1zICE9IG51bGwpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZhciBpdGVtc0xpc3QgPSBpdGVtcy5Ub0xpc3QoKTsKICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzZWRJbmRleCA8IGl0ZW1zTGlzdC5Db3VudCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBkeW5hbWljIGN1cnJlbnRJdGVtID0gaXRlbXNMaXN0W3Byb2Nlc3NlZEluZGV4XTsKICAgICAgICAgICAgICAgICAgICB2YXIgY2hhdFJvb21LZXkgPSBjdXJyZW50SXRlbT8uY2hhdFJvb21LZXk/LlRvU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JFbXB0eShjaGF0Um9vbUtleSkpCiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIgPSBMb29rdXBVc2VyKGRhdGEsIGNoYXRSb29tS2V5KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPcldoaXRlU3BhY2UodXNlcikpCiAgICAgICAgICAgIHJldHVybiBuZXcgU2NyaXB0UmVzcG9uc2UoKTsKCiAgICAgICAgdmFyIHNlY3JldE5hbWUgPSBHZXRDb25maWdWYWx1ZSgiREFQUl9TRUNSRVRfU1RPUkVfTkFNRSIpOwogICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKHNlY3JldE5hbWUpKQogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigiREFQUl9TRUNSRVRfU1RPUkVfTkFNRSBjb25maWd1cmF0aW9uIGlzIHJlcXVpcmVkIik7CgogICAgICAgIHZhciBtYXRyaXhCYXNlVXJsID0gYXdhaXQgR2V0U2VjcmV0QXN5bmMoc2VjcmV0TmFtZSwgIndvcmtmbG93LXNlY3JldCIsICJNYXRyaXhCYXNlVXJsIik7CiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPcldoaXRlU3BhY2UobWF0cml4QmFzZVVybCkpCiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKCJNYXRyaXhCYXNlVXJsIHNlY3JldCBpcyByZXF1aXJlZCIpOwoKICAgICAgICB2YXIgc3luYXBzZVBhc3N3b3JkID0gYXdhaXQgR2V0U2VjcmV0QXN5bmMoc2VjcmV0TmFtZSwgIndvcmtmbG93LXNlY3JldCIsICJTeW5hcHNlUGFzc3dvcmQiKTsKICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShzeW5hcHNlUGFzc3dvcmQpKQogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigiU3luYXBzZVBhc3N3b3JkIHNlY3JldCBpcyByZXF1aXJlZCIpOwoKICAgICAgICB2YXIgZnVsbFVybCA9IG1hdHJpeEJhc2VVcmwuVHJpbUVuZCgnLycpICsgIi9fbWF0cml4L2NsaWVudC92My9sb2dpbiI7CiAgICAgICAgaHR0cFRhc2suU2V0VXJsKGZ1bGxVcmwpOwoKICAgICAgICBodHRwVGFzay5TZXRIZWFkZXJzKG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPgogICAgICAgIHsKICAgICAgICAgICAgWyJDb250ZW50LVR5cGUiXSA9ICJhcHBsaWNhdGlvbi9qc29uIiwKICAgICAgICAgICAgWyJBY2NlcHQiXSA9ICJhcHBsaWNhdGlvbi9qc29uIgogICAgICAgIH0pOwoKICAgICAgICBodHRwVGFzay5TZXRCb2R5KG5ldwogICAgICAgIHsKICAgICAgICAgICAgdHlwZSA9ICJtLmxvZ2luLnBhc3N3b3JkIiwKICAgICAgICAgICAgaWRlbnRpZmllciA9IG5ldyB7IHR5cGUgPSAibS5pZC51c2VyIiwgdXNlciA9IHVzZXIgfSwKICAgICAgICAgICAgcGFzc3dvcmQgPSBzeW5hcHNlUGFzc3dvcmQKICAgICAgICB9KTsKICAgICAgICByZXR1cm4gbmV3IFNjcmlwdFJlc3BvbnNlKCk7CiAgICB9CgogICAgcHVibGljIFRhc2s8U2NyaXB0UmVzcG9uc2U+IE91dHB1dEhhbmRsZXIoU2NyaXB0Q29udGV4dCBjb250ZXh0KQogICAgewogICAgICAgIHZhciByZXN1bHQgPSBuZXcgU2NyaXB0UmVzcG9uc2UoKTsKICAgICAgICB2YXIgcmVzcG9uc2UgPSBjb250ZXh0LkJvZHk7CgogICAgICAgIGlmIChyZXNwb25zZT8uaXNTdWNjZXNzID09IHRydWUpCiAgICAgICAgewogICAgICAgICAgICBkeW5hbWljIGRhdGEgPSByZXNwb25zZS5kYXRhOwogICAgICAgICAgICBzdHJpbmcgc2Vzc2lvbklkID0gR2V0U3RyaW5nKGRhdGEsICJhY2Nlc3NfdG9rZW4iKTsKICAgICAgICAgICAgc3RyaW5nIHVzZXJJZCA9IEdldFN0cmluZyhkYXRhLCAidXNlcl9pZCIpOwogICAgICAgICAgICBzdHJpbmcgdXNlcm5hbWUgPSBHZXRTdHJpbmcoZGF0YSwgInVzZXJuYW1lIik7CgogICAgICAgICAgICByZXN1bHQuRGF0YSA9IG5ldwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjaGF0SW50ZWdyYXRpb24gPSBuZXcKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBzZXNzaW9uSWQsCiAgICAgICAgICAgICAgICAgICAgdXNlcklkLAogICAgICAgICAgICAgICAgICAgIHVzZXJuYW1lLAogICAgICAgICAgICAgICAgICAgIGVycm9yID0gKHN0cmluZyludWxsLAogICAgICAgICAgICAgICAgICAgIGVycm9yQ29kZSA9IChzdHJpbmcpbnVsbAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICBzdHJpbmcgZXJyb3JNZXNzYWdlID0gcmVzcG9uc2U/LmVycm9yTWVzc2FnZT8uVG9TdHJpbmcoKSA/PyAiQ2hhdCBsb2dpbiBmYWlsZWQiOwogICAgICAgICAgICBzdHJpbmcgc3RhdHVzQ29kZSA9IHJlc3BvbnNlPy5zdGF0dXNDb2RlICE9IG51bGwgPyByZXNwb25zZS5zdGF0dXNDb2RlLlRvU3RyaW5nKCkgOiBudWxsOwogICAgICAgICAgICByZXN1bHQuRGF0YSA9IG5ldwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjaGF0SW50ZWdyYXRpb24gPSBuZXcKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBzZXNzaW9uSWQgPSAoc3RyaW5nKW51bGwsCiAgICAgICAgICAgICAgICAgICAgdXNlcklkID0gKHN0cmluZyludWxsLAogICAgICAgICAgICAgICAgICAgIHVzZXJuYW1lID0gKHN0cmluZyludWxsLAogICAgICAgICAgICAgICAgICAgIGVycm9yID0gZXJyb3JNZXNzYWdlLAogICAgICAgICAgICAgICAgICAgIGVycm9yQ29kZSA9IHN0YXR1c0NvZGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQocmVzdWx0KTsKICAgIH0KCiAgICBwcml2YXRlIHN0cmluZyBMb29rdXBVc2VyKGR5bmFtaWMgZGF0YSwgc3RyaW5nIGNoYXRSb29tS2V5KQogICAgewogICAgICAgIGlmICghSGFzUHJvcGVydHkoZGF0YSwgInBlcm1hbmVudENoYXRSb29tcyIpIHx8IGRhdGEucGVybWFuZW50Q2hhdFJvb21zID09IG51bGwpCiAgICAgICAgICAgIHJldHVybiBudWxsOwoKICAgICAgICBmb3JlYWNoICh2YXIgcm9vbSBpbiBkYXRhLnBlcm1hbmVudENoYXRSb29tcykKICAgICAgICB7CiAgICAgICAgICAgIHZhciBrZXkgPSBHZXRTdHJpbmcocm9vbSwgImNoYXRSb29tS2V5Iik7CiAgICAgICAgICAgIGlmIChzdHJpbmcuRXF1YWxzKGtleSwgY2hhdFJvb21LZXksIFN0cmluZ0NvbXBhcmlzb24uT3JkaW5hbElnbm9yZUNhc2UpKQogICAgICAgICAgICAgICAgcmV0dXJuIEdldFN0cmluZyhyb29tLCAidXNlciIpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwcml2YXRlIHN0cmluZyBHZXRTdHJpbmcoZHluYW1pYyBvYmosIHN0cmluZyBuYW1lKQogICAgewogICAgICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIG51bGw7CiAgICAgICAgdHJ5CiAgICAgICAgewogICAgICAgICAgICBpZiAoSGFzUHJvcGVydHkob2JqLCBuYW1lKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdmFyIHYgPSBHZXRQcm9wZXJ0eVZhbHVlKG9iaiwgbmFtZSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdj8uVG9TdHJpbmcoKT8uVHJpbSgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNhdGNoIHsgfQogICAgICAgIHJldHVybiBudWxsOwogICAgfQp9Cg=="
|
|
494
|
+
}
|
|
495
|
+
},
|
|
496
|
+
{
|
|
497
|
+
"order": 4,
|
|
472
498
|
"task": {
|
|
473
499
|
"domain": "morph-touch",
|
|
474
500
|
"flow": "sys-tasks",
|
|
@@ -477,11 +503,11 @@
|
|
|
477
503
|
},
|
|
478
504
|
"mapping": {
|
|
479
505
|
"location": "./src/FetchRoomMessagesForSummaryMapping.csx",
|
|
480
|
-
"code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7CnVzaW5nIEJCVC5Xb3JrZmxvdy5TY3JpcHRpbmc7CnVzaW5nIEJCVC5Xb3JrZmxvdy5EZWZpbml0aW9uczsKCi8vLyA8c3VtbWFyeT4KLy8vIE1hcHBpbmcgZm9yIGdldC1tYXRyaXgtcm9vbS1tZXNzYWdlcyBIdHRwVGFzayAoVHlwZSA2KSBpbiB0aGUgdGVybWluYXRpb24gdHJhbnNmZXIgbG9vcC4KLy8vIFJlYWRzIHJvb21JZCBmcm9tIHBlcm1hbmVudENoYXRSb29tcyAobWF0Y2hlZCBieSBjaGF0Um9vbUtleSkgYW5kIGZldGNoZXMgdGhlIGxhc3QgMTAwIG1lc3NhZ2VzLgovLy8gU3RvcmVzIGZvcm1hdHRlZCBtZXNzYWdlcyBpbiBsYXN0Um9vbU1lc3NhZ2VzIGZvciBBSSBzdW1tYXJpemF0aW9uLgovLy8gPC9zdW1tYXJ5PgpwdWJsaWMgY2xhc3MgRmV0Y2hSb29tTWVzc2FnZXNGb3JTdW1tYXJ5TWFwcGluZyA6IFNjcmlwdEJhc2UsIElNYXBwaW5nCnsKICAgIHB1YmxpYyBhc3luYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBJbnB1dEhhbmRsZXIoV29ya2Zsb3dUYXNrIHRhc2ssIFNjcmlwdENvbnRleHQgY29udGV4dCkKICAgIHsKICAgICAgICB2YXIgaHR0cFRhc2sgPSB0YXNrIGFzIEh0dHBUYXNrOwogICAgICAgIGlmIChodHRwVGFzayA9PSBudWxsKQogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigiVGFzayBtdXN0IGJlIGFuIEh0dHBUYXNrIik7CgogICAgICAgIHZhciBkYXRhID0gY29udGV4dC5JbnN0YW5jZT8uRGF0YTsKICAgICAgICBpZiAoZGF0YSA9PSBudWxsKQogICAgICAgICAgICByZXR1cm4gbmV3IFNjcmlwdFJlc3BvbnNlIHsgRGF0YSA9IG5ldyB7IHNraXBwZWQgPSB0cnVlLCByZWFzb24gPSAibm8taW5zdGFuY2UtZGF0YSIgfSB9OwoKICAgICAgICB2YXIgcm9vbUlkID0gR2V0U3RyaW5nKGRhdGEsICJsYXN0RGVhY3RpdmF0ZWRSb29tSWQiKTsKICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShyb29tSWQpKQogICAgICAgICAgICByZXR1cm4gbmV3IFNjcmlwdFJlc3BvbnNlIHsgRGF0YSA9IG5ldyB7IHNraXBwZWQgPSB0cnVlLCByZWFzb24gPSAibm8tcm9vbUlkIiB9IH07CgogICAgICAgIHN0cmluZyB1c2VyID0gbnVsbDsKICAgICAgICB2YXIgcGVybWFuZW50Um9vbVBsYW4gPSBkYXRhLnBlcm1hbmVudFJvb21QbGFuOwogICAgICAgIGlmIChwZXJtYW5lbnRSb29tUGxhbiAhPSBudWxsKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHByb2Nlc3NlZEluZGV4ID0gMDsKICAgICAgICAgICAgaWYgKEhhc1Byb3BlcnR5KGRhdGEsICJwZXJtYW5lbnRQcm9jZXNzZWRJbmRleCIpKQogICAgICAgICAgICAgICAgaW50LlRyeVBhcnNlKGRhdGEucGVybWFuZW50UHJvY2Vzc2VkSW5kZXg/LlRvU3RyaW5nKCkgPz8gIjAiLCBvdXQgcHJvY2Vzc2VkSW5kZXgpOwoKICAgICAgICAgICAgdmFyIGl0ZW1zID0gcGVybWFuZW50Um9vbVBsYW4gYXMgSUVudW1lcmFibGU8b2JqZWN0PjsKICAgICAgICAgICAgaWYgKGl0ZW1zICE9IG51bGwpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZhciBpdGVtc0xpc3QgPSBpdGVtcy5Ub0xpc3QoKTsKICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzZWRJbmRleCA8IGl0ZW1zTGlzdC5Db3VudCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBkeW5hbWljIGN1cnJlbnRJdGVtID0gaXRlbXNMaXN0W3Byb2Nlc3NlZEluZGV4XTsKICAgICAgICAgICAgICAgICAgICB2YXIgY2hhdFJvb21LZXkgPSBjdXJyZW50SXRlbT8uY2hhdFJvb21LZXk/LlRvU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JFbXB0eShjaGF0Um9vbUtleSkpCiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIgPSBMb29rdXBVc2VyKGRhdGEsIGNoYXRSb29tS2V5KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPcldoaXRlU3BhY2UodXNlcikpCiAgICAgICAgICAgIHJldHVybiBuZXcgU2NyaXB0UmVzcG9uc2UgeyBEYXRhID0gbmV3IHsgc2tpcHBlZCA9IHRydWUsIHJlYXNvbiA9ICJuby11c2VyIiB9IH07CgogICAgICAgIHZhciBzZWNyZXROYW1lID0gR2V0Q29uZmlnVmFsdWUoIkRBUFJfU0VDUkVUX1NUT1JFX05BTUUiKTsKICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShzZWNyZXROYW1lKSkKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oIkRBUFJfU0VDUkVUX1NUT1JFX05BTUUgY29uZmlndXJhdGlvbiBpcyByZXF1aXJlZCIpOwoKICAgICAgICB2YXIgbWF0cml4QmFzZVVybCA9IGF3YWl0IEdldFNlY3JldEFzeW5jKHNlY3JldE5hbWUsICJ3b3JrZmxvdy1zZWNyZXQiLCAiTWF0cml4QmFzZVVybCIpOwogICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKG1hdHJpeEJhc2VVcmwpKQogICAgICAgICAgICByZXR1cm4gbmV3IFNjcmlwdFJlc3BvbnNlIHsgRGF0YSA9IG5ldyB7IHNraXBwZWQgPSB0cnVlLCByZWFzb24gPSAibm8tTWF0cml4QmFzZVVybCIgfSB9OwoKICAgICAgICB2YXIgZnVsbFVybCA9IG1hdHJpeEJhc2VVcmwuVHJpbUVuZCgnLycpICsKICAgICAgICAgICAgIi9fbWF0cml4L2NsaWVudC92My9yb29tcy8iICsgVXJpLkVzY2FwZURhdGFTdHJpbmcocm9vbUlkKSArCiAgICAgICAgICAgICIvbWVzc2FnZXM/
|
|
506
|
+
"code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7CnVzaW5nIEJCVC5Xb3JrZmxvdy5TY3JpcHRpbmc7CnVzaW5nIEJCVC5Xb3JrZmxvdy5EZWZpbml0aW9uczsKCi8vLyA8c3VtbWFyeT4KLy8vIE1hcHBpbmcgZm9yIGdldC1tYXRyaXgtcm9vbS1tZXNzYWdlcyBIdHRwVGFzayAoVHlwZSA2KSBpbiB0aGUgdGVybWluYXRpb24gdHJhbnNmZXIgbG9vcC4KLy8vIFJlYWRzIHJvb21JZCBmcm9tIHBlcm1hbmVudENoYXRSb29tcyAobWF0Y2hlZCBieSBjaGF0Um9vbUtleSkgYW5kIGZldGNoZXMgdGhlIGxhc3QgMTAwIG1lc3NhZ2VzLgovLy8gU3RvcmVzIGZvcm1hdHRlZCBtZXNzYWdlcyBpbiBsYXN0Um9vbU1lc3NhZ2VzIGZvciBBSSBzdW1tYXJpemF0aW9uLgovLy8gPC9zdW1tYXJ5PgpwdWJsaWMgY2xhc3MgRmV0Y2hSb29tTWVzc2FnZXNGb3JTdW1tYXJ5TWFwcGluZyA6IFNjcmlwdEJhc2UsIElNYXBwaW5nCnsKICAgIHB1YmxpYyBhc3luYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBJbnB1dEhhbmRsZXIoV29ya2Zsb3dUYXNrIHRhc2ssIFNjcmlwdENvbnRleHQgY29udGV4dCkKICAgIHsKICAgICAgICB2YXIgaHR0cFRhc2sgPSB0YXNrIGFzIEh0dHBUYXNrOwogICAgICAgIGlmIChodHRwVGFzayA9PSBudWxsKQogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigiVGFzayBtdXN0IGJlIGFuIEh0dHBUYXNrIik7CgogICAgICAgIHZhciBkYXRhID0gY29udGV4dC5JbnN0YW5jZT8uRGF0YTsKICAgICAgICBpZiAoZGF0YSA9PSBudWxsKQogICAgICAgICAgICByZXR1cm4gbmV3IFNjcmlwdFJlc3BvbnNlIHsgRGF0YSA9IG5ldyB7IHNraXBwZWQgPSB0cnVlLCByZWFzb24gPSAibm8taW5zdGFuY2UtZGF0YSIgfSB9OwoKICAgICAgICB2YXIgcm9vbUlkID0gR2V0U3RyaW5nKGRhdGEsICJsYXN0RGVhY3RpdmF0ZWRSb29tSWQiKTsKICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShyb29tSWQpKQogICAgICAgICAgICByZXR1cm4gbmV3IFNjcmlwdFJlc3BvbnNlIHsgRGF0YSA9IG5ldyB7IHNraXBwZWQgPSB0cnVlLCByZWFzb24gPSAibm8tcm9vbUlkIiB9IH07CgogICAgICAgIHN0cmluZyB1c2VyID0gbnVsbDsKICAgICAgICB2YXIgcGVybWFuZW50Um9vbVBsYW4gPSBkYXRhLnBlcm1hbmVudFJvb21QbGFuOwogICAgICAgIGlmIChwZXJtYW5lbnRSb29tUGxhbiAhPSBudWxsKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHByb2Nlc3NlZEluZGV4ID0gMDsKICAgICAgICAgICAgaWYgKEhhc1Byb3BlcnR5KGRhdGEsICJwZXJtYW5lbnRQcm9jZXNzZWRJbmRleCIpKQogICAgICAgICAgICAgICAgaW50LlRyeVBhcnNlKGRhdGEucGVybWFuZW50UHJvY2Vzc2VkSW5kZXg/LlRvU3RyaW5nKCkgPz8gIjAiLCBvdXQgcHJvY2Vzc2VkSW5kZXgpOwoKICAgICAgICAgICAgdmFyIGl0ZW1zID0gcGVybWFuZW50Um9vbVBsYW4gYXMgSUVudW1lcmFibGU8b2JqZWN0PjsKICAgICAgICAgICAgaWYgKGl0ZW1zICE9IG51bGwpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZhciBpdGVtc0xpc3QgPSBpdGVtcy5Ub0xpc3QoKTsKICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzZWRJbmRleCA8IGl0ZW1zTGlzdC5Db3VudCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBkeW5hbWljIGN1cnJlbnRJdGVtID0gaXRlbXNMaXN0W3Byb2Nlc3NlZEluZGV4XTsKICAgICAgICAgICAgICAgICAgICB2YXIgY2hhdFJvb21LZXkgPSBjdXJyZW50SXRlbT8uY2hhdFJvb21LZXk/LlRvU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JFbXB0eShjaGF0Um9vbUtleSkpCiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIgPSBMb29rdXBVc2VyKGRhdGEsIGNoYXRSb29tS2V5KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPcldoaXRlU3BhY2UodXNlcikpCiAgICAgICAgICAgIHJldHVybiBuZXcgU2NyaXB0UmVzcG9uc2UgeyBEYXRhID0gbmV3IHsgc2tpcHBlZCA9IHRydWUsIHJlYXNvbiA9ICJuby11c2VyIiB9IH07CgogICAgICAgIHZhciBzZWNyZXROYW1lID0gR2V0Q29uZmlnVmFsdWUoIkRBUFJfU0VDUkVUX1NUT1JFX05BTUUiKTsKICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShzZWNyZXROYW1lKSkKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oIkRBUFJfU0VDUkVUX1NUT1JFX05BTUUgY29uZmlndXJhdGlvbiBpcyByZXF1aXJlZCIpOwoKICAgICAgICB2YXIgbWF0cml4QmFzZVVybCA9IGF3YWl0IEdldFNlY3JldEFzeW5jKHNlY3JldE5hbWUsICJ3b3JrZmxvdy1zZWNyZXQiLCAiTWF0cml4QmFzZVVybCIpOwogICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKG1hdHJpeEJhc2VVcmwpKQogICAgICAgICAgICByZXR1cm4gbmV3IFNjcmlwdFJlc3BvbnNlIHsgRGF0YSA9IG5ldyB7IHNraXBwZWQgPSB0cnVlLCByZWFzb24gPSAibm8tTWF0cml4QmFzZVVybCIgfSB9OwoKICAgICAgICB2YXIgZnVsbFVybCA9IG1hdHJpeEJhc2VVcmwuVHJpbUVuZCgnLycpICsKICAgICAgICAgICAgIi9fbWF0cml4L2NsaWVudC92My9yb29tcy8iICsgVXJpLkVzY2FwZURhdGFTdHJpbmcocm9vbUlkKSArCiAgICAgICAgICAgICIvbWVzc2FnZXM/ZGlyPWImbGltaXQ9MTAwIjsKCiAgICAgICAgaHR0cFRhc2suU2V0VXJsKGZ1bGxVcmwpOwoKICAgICAgICBzdHJpbmcgc2Vzc2lvbklkID0gbnVsbDsKICAgICAgICBpZiAoSGFzUHJvcGVydHkoZGF0YSwgImNoYXRJbnRlZ3JhdGlvbiIpICYmIGRhdGEuY2hhdEludGVncmF0aW9uICE9IG51bGwpCiAgICAgICAgICAgIHNlc3Npb25JZCA9IEdldFN0cmluZyhkYXRhLmNoYXRJbnRlZ3JhdGlvbiwgInNlc3Npb25JZCIpOwoKICAgICAgICB2YXIgaGVhZGVycyA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPgogICAgICAgIHsKICAgICAgICAgICAgWyJBY2NlcHQiXSA9ICJhcHBsaWNhdGlvbi9qc29uIiwKICAgICAgICAgICAgWyJYLU1hdHJpeC1Vc2VyIl0gPSB1c2VyCiAgICAgICAgfTsKICAgICAgICBpZiAoIXN0cmluZy5Jc051bGxPcldoaXRlU3BhY2Uoc2Vzc2lvbklkKSkKICAgICAgICAgICAgaGVhZGVyc1siQXV0aG9yaXphdGlvbiJdID0gIkJlYXJlciAiICsgc2Vzc2lvbklkOwogICAgICAgIGh0dHBUYXNrLlNldEhlYWRlcnMoaGVhZGVycyk7CgogICAgICAgIHJldHVybiBuZXcgU2NyaXB0UmVzcG9uc2UoKTsKICAgIH0KCiAgICBwdWJsaWMgVGFzazxTY3JpcHRSZXNwb25zZT4gT3V0cHV0SGFuZGxlcihTY3JpcHRDb250ZXh0IGNvbnRleHQpCiAgICB7CiAgICAgICAgdmFyIGRhdGEgPSBjb250ZXh0Lkluc3RhbmNlPy5EYXRhOwogICAgICAgIHZhciByZXN1bHQgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIG9iamVjdD4oKTsKICAgICAgICBDb3B5QWxsRmllbGRzKHJlc3VsdCwgZGF0YSk7CgogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gY29udGV4dC5Cb2R5OwogICAgICAgICAgICB2YXIgYm9keURhdGEgPSByZXNwb25zZT8uZGF0YTsKCiAgICAgICAgICAgIHN0cmluZyBlcnJjb2RlID0gR2V0U3RyaW5nKGJvZHlEYXRhLCAiZXJyY29kZSIpOwogICAgICAgICAgICBpZiAoIXN0cmluZy5Jc051bGxPckVtcHR5KGVycmNvZGUpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXN1bHRbImxhc3RSb29tTWVzc2FnZXMiXSA9IG5ldyBMaXN0PHN0cmluZz4oKTsKICAgICAgICAgICAgICAgIHJlc3VsdFsibGFzdFJvb21NZXNzYWdlc1N1Y2Nlc3MiXSA9IGZhbHNlOwogICAgICAgICAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UgeyBEYXRhID0gcmVzdWx0IH0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgbWVzc2FnZXMgPSBuZXcgTGlzdDxzdHJpbmc+KCk7CiAgICAgICAgICAgIGlmIChib2R5RGF0YSAhPSBudWxsICYmIEhhc1Byb3BlcnR5KGJvZHlEYXRhLCAiY2h1bmsiKSAmJiBib2R5RGF0YS5jaHVuayAhPSBudWxsKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgZXZ0IGluIGJvZHlEYXRhLmNodW5rKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHZhciBldnRUeXBlID0gR2V0U3RyaW5nKGV2dCwgInR5cGUiKTsKICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0VHlwZSAhPSAibS5yb29tLm1lc3NhZ2UiKSBjb250aW51ZTsKCiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSBldnQ/LmNvbnRlbnQ7CiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRlbnQgPT0gbnVsbCkgY29udGludWU7CgogICAgICAgICAgICAgICAgICAgIHN0cmluZyBib2R5ID0gR2V0U3RyaW5nKGNvbnRlbnQsICJib2R5Iik7CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nIHNlbmRlciA9IEdldFN0cmluZyhldnQsICJzZW5kZXIiKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIXN0cmluZy5Jc051bGxPcldoaXRlU3BhY2UoYm9keSkgJiYgIXN0cmluZy5Jc051bGxPcldoaXRlU3BhY2Uoc2VuZGVyKSkKICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZXMuQWRkKHNlbmRlciArICI6ICIgKyBib2R5KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgbWVzc2FnZXMuUmV2ZXJzZSgpOwogICAgICAgICAgICByZXN1bHRbImxhc3RSb29tTWVzc2FnZXMiXSA9IG1lc3NhZ2VzOwogICAgICAgICAgICByZXN1bHRbImxhc3RSb29tTWVzc2FnZXNTdWNjZXNzIl0gPSBtZXNzYWdlcy5Db3VudCA+IDA7CiAgICAgICAgfQogICAgICAgIGNhdGNoCiAgICAgICAgewogICAgICAgICAgICByZXN1bHRbImxhc3RSb29tTWVzc2FnZXMiXSA9IG5ldyBMaXN0PHN0cmluZz4oKTsKICAgICAgICAgICAgcmVzdWx0WyJsYXN0Um9vbU1lc3NhZ2VzU3VjY2VzcyJdID0gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZSB7IERhdGEgPSByZXN1bHQgfSk7CiAgICB9CgogICAgcHJpdmF0ZSBzdHJpbmcgTG9va3VwVXNlcihkeW5hbWljIGRhdGEsIHN0cmluZyBjaGF0Um9vbUtleSkKICAgIHsKICAgICAgICBpZiAoIUhhc1Byb3BlcnR5KGRhdGEsICJwZXJtYW5lbnRDaGF0Um9vbXMiKSB8fCBkYXRhLnBlcm1hbmVudENoYXRSb29tcyA9PSBudWxsKQogICAgICAgICAgICByZXR1cm4gbnVsbDsKCiAgICAgICAgZm9yZWFjaCAodmFyIHJvb20gaW4gZGF0YS5wZXJtYW5lbnRDaGF0Um9vbXMpCiAgICAgICAgewogICAgICAgICAgICB2YXIga2V5ID0gR2V0U3RyaW5nKHJvb20sICJjaGF0Um9vbUtleSIpOwogICAgICAgICAgICBpZiAoc3RyaW5nLkVxdWFscyhrZXksIGNoYXRSb29tS2V5LCBTdHJpbmdDb21wYXJpc29uLk9yZGluYWxJZ25vcmVDYXNlKSkKICAgICAgICAgICAgICAgIHJldHVybiBHZXRTdHJpbmcocm9vbSwgInVzZXIiKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHJpdmF0ZSBzdHJpbmcgR2V0U3RyaW5nKGR5bmFtaWMgb2JqLCBzdHJpbmcgbmFtZSkKICAgIHsKICAgICAgICBpZiAob2JqID09IG51bGwpIHJldHVybiBudWxsOwogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgICAgaWYgKEhhc1Byb3BlcnR5KG9iaiwgbmFtZSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZhciB2ID0gR2V0UHJvcGVydHlWYWx1ZShvYmosIG5hbWUpOwogICAgICAgICAgICAgICAgcmV0dXJuIHY/LlRvU3RyaW5nKCk/LlRyaW0oKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjYXRjaCB7IH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwcml2YXRlIHZvaWQgQ29weUFsbEZpZWxkcyhEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PiByZXN1bHQsIGR5bmFtaWMgZGF0YSkKICAgIHsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgInRyYW5zZmVyUGxhbiIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAidmFsaWRhdGlvblJlc3VsdCIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAic291cmNlQWR2aXNvcklkIik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJhZHZpc29yVHlwZSIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAic3RhcnREYXRlIik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJlbmREYXRlIik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJ0cmFuc2ZlclR5cGUiKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgImVucmljaGVkUmV6ZXJ2YXRpb25zIik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJyZXpDaGF0Um9vbVBsYW4iKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgInBlcm1hbmVudFJvb21QbGFuIik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJwZXJtYW5lbnRDaGF0Um9vbXMiKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgInBlcm1hbmVudFByb2Nlc3NlZEluZGV4Iik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJsYXN0UGVybWFuZW50RGVhY3RpdmF0ZVN1Y2Nlc3MiKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgImxhc3REZWFjdGl2YXRlZFJvb21JZCIpOwogICAgfQoKICAgIHByaXZhdGUgdm9pZCBDb3B5SWZQcmVzZW50KERpY3Rpb25hcnk8c3RyaW5nLCBvYmplY3Q+IHRhcmdldCwgZHluYW1pYyBzb3VyY2UsIHN0cmluZyBuYW1lKQogICAgewogICAgICAgIGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuOwogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgICAgaWYgKEhhc1Byb3BlcnR5KHNvdXJjZSwgbmFtZSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZhciB2ID0gR2V0UHJvcGVydHlWYWx1ZShzb3VyY2UsIG5hbWUpOwogICAgICAgICAgICAgICAgaWYgKHYgIT0gbnVsbCkgdGFyZ2V0W25hbWVdID0gdjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjYXRjaCB7IH0KICAgIH0KfQo="
|
|
481
507
|
}
|
|
482
508
|
},
|
|
483
509
|
{
|
|
484
|
-
"order":
|
|
510
|
+
"order": 5,
|
|
485
511
|
"task": {
|
|
486
512
|
"domain": "morph-touch",
|
|
487
513
|
"flow": "sys-tasks",
|
|
@@ -494,7 +520,7 @@
|
|
|
494
520
|
}
|
|
495
521
|
},
|
|
496
522
|
{
|
|
497
|
-
"order":
|
|
523
|
+
"order": 6,
|
|
498
524
|
"task": {
|
|
499
525
|
"domain": "morph-touch",
|
|
500
526
|
"flow": "sys-tasks",
|
|
@@ -507,7 +533,7 @@
|
|
|
507
533
|
}
|
|
508
534
|
},
|
|
509
535
|
{
|
|
510
|
-
"order":
|
|
536
|
+
"order": 7,
|
|
511
537
|
"task": {
|
|
512
538
|
"domain": "morph-touch",
|
|
513
539
|
"flow": "sys-tasks",
|
|
@@ -516,7 +542,7 @@
|
|
|
516
542
|
},
|
|
517
543
|
"mapping": {
|
|
518
544
|
"location": "./src/SendSummaryToNewRoomMapping.csx",
|
|
519
|
-
"code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7CnVzaW5nIEJCVC5Xb3JrZmxvdy5TY3JpcHRpbmc7CnVzaW5nIEJCVC5Xb3JrZmxvdy5EZWZpbml0aW9uczsKCi8vLyA8c3VtbWFyeT4KLy8vIE1hcHBpbmcgZm9yIHNlbmQtbWF0cml4LXJvb20tbWVzc2FnZSBIdHRwVGFzayAoVHlwZSA2KSBpbiB0aGUgdGVybWluYXRpb24gdHJhbnNmZXIgbG9vcC4KLy8vIFNlbmRzIHRoZSBBSS1nZW5lcmF0ZWQgY2hhdFN1bW1hcnkgYXMgdGhlIGZpcnN0IG1lc3NhZ2UgaW4gdGhlIG5ld2x5IGNyZWF0ZWQgcm9vbS4KLy8vIFNraXBzIGdyYWNlZnVsbHkgaWYgbm8gc3VtbWFyeSBpcyBhdmFpbGFibGUgLS0gdHJhbnNmZXIgaXMgbmV2ZXIgYmxvY2tlZC4KLy8vIDwvc3VtbWFyeT4KcHVibGljIGNsYXNzIFNlbmRTdW1tYXJ5VG9OZXdSb29tTWFwcGluZyA6IFNjcmlwdEJhc2UsIElNYXBwaW5nCnsKICAgIHB1YmxpYyBhc3luYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBJbnB1dEhhbmRsZXIoV29ya2Zsb3dUYXNrIHRhc2ssIFNjcmlwdENvbnRleHQgY29udGV4dCkKICAgIHsKICAgICAgICB2YXIgaHR0cFRhc2sgPSB0YXNrIGFzIEh0dHBUYXNrOwogICAgICAgIGlmIChodHRwVGFzayA9PSBudWxsKQogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigiVGFzayBtdXN0IGJlIGFuIEh0dHBUYXNrIik7CgogICAgICAgIHZhciBkYXRhID0gY29udGV4dC5JbnN0YW5jZT8uRGF0YTsKICAgICAgICBpZiAoZGF0YSA9PSBudWxsKQogICAgICAgICAgICByZXR1cm4gbmV3IFNjcmlwdFJlc3BvbnNlIHsgRGF0YSA9IG5ldyB7IHNraXBwZWQgPSB0cnVlLCByZWFzb24gPSAibm8taW5zdGFuY2UtZGF0YSIgfSB9OwoKICAgICAgICB2YXIgY2hhdFN1bW1hcnkgPSBHZXRTdHJpbmcoZGF0YSwgImNoYXRTdW1tYXJ5Iik7CiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPcldoaXRlU3BhY2UoY2hhdFN1bW1hcnkpKQogICAgICAgICAgICByZXR1cm4gbmV3IFNjcmlwdFJlc3BvbnNlIHsgRGF0YSA9IG5ldyB7IHNraXBwZWQgPSB0cnVlLCByZWFzb24gPSAibm8tY2hhdFN1bW1hcnkiIH0gfTsKCiAgICAgICAgdmFyIG5ld1Jvb21JZCA9IEdldFN0cmluZyhkYXRhLCAibmV3Um9vbUlkIik7CiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPcldoaXRlU3BhY2UobmV3Um9vbUlkKSkKICAgICAgICAgICAgcmV0dXJuIG5ldyBTY3JpcHRSZXNwb25zZSB7IERhdGEgPSBuZXcgeyBza2lwcGVkID0gdHJ1ZSwgcmVhc29uID0gIm5vLW5ld1Jvb21JZCIgfSB9OwoKICAgICAgICBzdHJpbmcgdXNlciA9IG51bGw7CiAgICAgICAgdmFyIHBlcm1hbmVudFJvb21QbGFuID0gZGF0YS5wZXJtYW5lbnRSb29tUGxhbjsKICAgICAgICBpZiAocGVybWFuZW50Um9vbVBsYW4gIT0gbnVsbCkKICAgICAgICB7CiAgICAgICAgICAgIGludCBwcm9jZXNzZWRJbmRleCA9IDA7CiAgICAgICAgICAgIGlmIChIYXNQcm9wZXJ0eShkYXRhLCAicGVybWFuZW50UHJvY2Vzc2VkSW5kZXgiKSkKICAgICAgICAgICAgICAgIGludC5UcnlQYXJzZShkYXRhLnBlcm1hbmVudFByb2Nlc3NlZEluZGV4Py5Ub1N0cmluZygpID8/ICIwIiwgb3V0IHByb2Nlc3NlZEluZGV4KTsKCiAgICAgICAgICAgIHZhciBpdGVtcyA9IHBlcm1hbmVudFJvb21QbGFuIGFzIElFbnVtZXJhYmxlPG9iamVjdD47CiAgICAgICAgICAgIGlmIChpdGVtcyAhPSBudWxsKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB2YXIgaXRlbXNMaXN0ID0gaXRlbXMuVG9MaXN0KCk7CiAgICAgICAgICAgICAgICBpZiAocHJvY2Vzc2VkSW5kZXggPCBpdGVtc0xpc3QuQ291bnQpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgZHluYW1pYyBjdXJyZW50SXRlbSA9IGl0ZW1zTGlzdFtwcm9jZXNzZWRJbmRleF07CiAgICAgICAgICAgICAgICAgICAgdmFyIGNoYXRSb29tS2V5ID0gY3VycmVudEl0ZW0/
|
|
545
|
+
"code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7CnVzaW5nIEJCVC5Xb3JrZmxvdy5TY3JpcHRpbmc7CnVzaW5nIEJCVC5Xb3JrZmxvdy5EZWZpbml0aW9uczsKCi8vLyA8c3VtbWFyeT4KLy8vIE1hcHBpbmcgZm9yIHNlbmQtbWF0cml4LXJvb20tbWVzc2FnZSBIdHRwVGFzayAoVHlwZSA2KSBpbiB0aGUgdGVybWluYXRpb24gdHJhbnNmZXIgbG9vcC4KLy8vIFNlbmRzIHRoZSBBSS1nZW5lcmF0ZWQgY2hhdFN1bW1hcnkgYXMgdGhlIGZpcnN0IG1lc3NhZ2UgaW4gdGhlIG5ld2x5IGNyZWF0ZWQgcm9vbS4KLy8vIFNraXBzIGdyYWNlZnVsbHkgaWYgbm8gc3VtbWFyeSBpcyBhdmFpbGFibGUgLS0gdHJhbnNmZXIgaXMgbmV2ZXIgYmxvY2tlZC4KLy8vIDwvc3VtbWFyeT4KcHVibGljIGNsYXNzIFNlbmRTdW1tYXJ5VG9OZXdSb29tTWFwcGluZyA6IFNjcmlwdEJhc2UsIElNYXBwaW5nCnsKICAgIHB1YmxpYyBhc3luYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBJbnB1dEhhbmRsZXIoV29ya2Zsb3dUYXNrIHRhc2ssIFNjcmlwdENvbnRleHQgY29udGV4dCkKICAgIHsKICAgICAgICB2YXIgaHR0cFRhc2sgPSB0YXNrIGFzIEh0dHBUYXNrOwogICAgICAgIGlmIChodHRwVGFzayA9PSBudWxsKQogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigiVGFzayBtdXN0IGJlIGFuIEh0dHBUYXNrIik7CgogICAgICAgIHZhciBkYXRhID0gY29udGV4dC5JbnN0YW5jZT8uRGF0YTsKICAgICAgICBpZiAoZGF0YSA9PSBudWxsKQogICAgICAgICAgICByZXR1cm4gbmV3IFNjcmlwdFJlc3BvbnNlIHsgRGF0YSA9IG5ldyB7IHNraXBwZWQgPSB0cnVlLCByZWFzb24gPSAibm8taW5zdGFuY2UtZGF0YSIgfSB9OwoKICAgICAgICB2YXIgY2hhdFN1bW1hcnkgPSBHZXRTdHJpbmcoZGF0YSwgImNoYXRTdW1tYXJ5Iik7CiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPcldoaXRlU3BhY2UoY2hhdFN1bW1hcnkpKQogICAgICAgICAgICByZXR1cm4gbmV3IFNjcmlwdFJlc3BvbnNlIHsgRGF0YSA9IG5ldyB7IHNraXBwZWQgPSB0cnVlLCByZWFzb24gPSAibm8tY2hhdFN1bW1hcnkiIH0gfTsKCiAgICAgICAgdmFyIG5ld1Jvb21JZCA9IEdldFN0cmluZyhkYXRhLCAibmV3Um9vbUlkIik7CiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPcldoaXRlU3BhY2UobmV3Um9vbUlkKSkKICAgICAgICAgICAgcmV0dXJuIG5ldyBTY3JpcHRSZXNwb25zZSB7IERhdGEgPSBuZXcgeyBza2lwcGVkID0gdHJ1ZSwgcmVhc29uID0gIm5vLW5ld1Jvb21JZCIgfSB9OwoKICAgICAgICBzdHJpbmcgdXNlciA9IG51bGw7CiAgICAgICAgdmFyIHBlcm1hbmVudFJvb21QbGFuID0gZGF0YS5wZXJtYW5lbnRSb29tUGxhbjsKICAgICAgICBpZiAocGVybWFuZW50Um9vbVBsYW4gIT0gbnVsbCkKICAgICAgICB7CiAgICAgICAgICAgIGludCBwcm9jZXNzZWRJbmRleCA9IDA7CiAgICAgICAgICAgIGlmIChIYXNQcm9wZXJ0eShkYXRhLCAicGVybWFuZW50UHJvY2Vzc2VkSW5kZXgiKSkKICAgICAgICAgICAgICAgIGludC5UcnlQYXJzZShkYXRhLnBlcm1hbmVudFByb2Nlc3NlZEluZGV4Py5Ub1N0cmluZygpID8/ICIwIiwgb3V0IHByb2Nlc3NlZEluZGV4KTsKCiAgICAgICAgICAgIHZhciBpdGVtcyA9IHBlcm1hbmVudFJvb21QbGFuIGFzIElFbnVtZXJhYmxlPG9iamVjdD47CiAgICAgICAgICAgIGlmIChpdGVtcyAhPSBudWxsKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB2YXIgaXRlbXNMaXN0ID0gaXRlbXMuVG9MaXN0KCk7CiAgICAgICAgICAgICAgICBpZiAocHJvY2Vzc2VkSW5kZXggPCBpdGVtc0xpc3QuQ291bnQpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgZHluYW1pYyBjdXJyZW50SXRlbSA9IGl0ZW1zTGlzdFtwcm9jZXNzZWRJbmRleF07CiAgICAgICAgICAgICAgICAgICAgdmFyIGNoYXRSb29tS2V5ID0gY3VycmVudEl0ZW0/LmNoYXRSb29tS2V5Py5Ub1N0cmluZygpOwogICAgICAgICAgICAgICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yRW1wdHkoY2hhdFJvb21LZXkpKQogICAgICAgICAgICAgICAgICAgICAgICB1c2VyID0gTG9va3VwVXNlcihkYXRhLCBjaGF0Um9vbUtleSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKHVzZXIpKQogICAgICAgICAgICByZXR1cm4gbmV3IFNjcmlwdFJlc3BvbnNlIHsgRGF0YSA9IG5ldyB7IHNraXBwZWQgPSB0cnVlLCByZWFzb24gPSAibm8tdXNlciIgfSB9OwoKICAgICAgICB2YXIgc2VjcmV0TmFtZSA9IEdldENvbmZpZ1ZhbHVlKCJEQVBSX1NFQ1JFVF9TVE9SRV9OQU1FIik7CiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPcldoaXRlU3BhY2Uoc2VjcmV0TmFtZSkpCiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKCJEQVBSX1NFQ1JFVF9TVE9SRV9OQU1FIGNvbmZpZ3VyYXRpb24gaXMgcmVxdWlyZWQiKTsKCiAgICAgICAgdmFyIG1hdHJpeEJhc2VVcmwgPSBhd2FpdCBHZXRTZWNyZXRBc3luYyhzZWNyZXROYW1lLCAid29ya2Zsb3ctc2VjcmV0IiwgIk1hdHJpeEJhc2VVcmwiKTsKICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShtYXRyaXhCYXNlVXJsKSkKICAgICAgICAgICAgcmV0dXJuIG5ldyBTY3JpcHRSZXNwb25zZSB7IERhdGEgPSBuZXcgeyBza2lwcGVkID0gdHJ1ZSwgcmVhc29uID0gIm5vLU1hdHJpeEJhc2VVcmwiIH0gfTsKCiAgICAgICAgdmFyIHR4bklkID0gR3VpZC5OZXdHdWlkKCkuVG9TdHJpbmcoIk4iKTsKICAgICAgICB2YXIgZnVsbFVybCA9IG1hdHJpeEJhc2VVcmwuVHJpbUVuZCgnLycpICsKICAgICAgICAgICAgIi9fbWF0cml4L2NsaWVudC92My9yb29tcy8iICsgVXJpLkVzY2FwZURhdGFTdHJpbmcobmV3Um9vbUlkKSArCiAgICAgICAgICAgICIvc2VuZC9tLnJvb20ubWVzc2FnZS8iICsgdHhuSWQ7CgogICAgICAgIGh0dHBUYXNrLlNldFVybChmdWxsVXJsKTsKCiAgICAgICAgc3RyaW5nIHNlc3Npb25JZCA9IG51bGw7CiAgICAgICAgaWYgKEhhc1Byb3BlcnR5KGRhdGEsICJjaGF0SW50ZWdyYXRpb24iKSAmJiBkYXRhLmNoYXRJbnRlZ3JhdGlvbiAhPSBudWxsKQogICAgICAgICAgICBzZXNzaW9uSWQgPSBHZXRTdHJpbmcoZGF0YS5jaGF0SW50ZWdyYXRpb24sICJzZXNzaW9uSWQiKTsKCiAgICAgICAgdmFyIHNlbmRIZWFkZXJzID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBzdHJpbmc+CiAgICAgICAgewogICAgICAgICAgICBbIkNvbnRlbnQtVHlwZSJdID0gImFwcGxpY2F0aW9uL2pzb24iLAogICAgICAgICAgICBbIkFjY2VwdCJdID0gImFwcGxpY2F0aW9uL2pzb24iLAogICAgICAgICAgICBbIlgtTWF0cml4LVVzZXIiXSA9IHVzZXIKICAgICAgICB9OwogICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShzZXNzaW9uSWQpKQogICAgICAgICAgICBzZW5kSGVhZGVyc1siQXV0aG9yaXphdGlvbiJdID0gIkJlYXJlciAiICsgc2Vzc2lvbklkOwogICAgICAgIGh0dHBUYXNrLlNldEhlYWRlcnMoc2VuZEhlYWRlcnMpOwoKICAgICAgICB2YXIgbWVzc2FnZUJvZHkgPQogICAgICAgICAgICAiT25jZWtpIGRhbmlzbWFuIGlsZSB5YXBpbGFuIGdvcnVzbWUgb3pldGk6XG5cbiIgKwogICAgICAgICAgICBjaGF0U3VtbWFyeSArICJcblxuIiArCiAgICAgICAgICAgICItLS1cbiIgKwogICAgICAgICAgICAiQnUgb3pldCBvdG9tYXRpayBvbGFyYWsgb2x1c3R1cnVsbXVzdHVyLiI7CgogICAgICAgIGh0dHBUYXNrLlNldEJvZHkobmV3CiAgICAgICAgewogICAgICAgICAgICBtc2d0eXBlID0gIm0udGV4dCIsCiAgICAgICAgICAgIGJvZHkgPSBtZXNzYWdlQm9keQogICAgICAgIH0pOwoKICAgICAgICByZXR1cm4gbmV3IFNjcmlwdFJlc3BvbnNlKCk7CiAgICB9CgogICAgcHVibGljIFRhc2s8U2NyaXB0UmVzcG9uc2U+IE91dHB1dEhhbmRsZXIoU2NyaXB0Q29udGV4dCBjb250ZXh0KQogICAgewogICAgICAgIHZhciBkYXRhID0gY29udGV4dC5JbnN0YW5jZT8uRGF0YTsKICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBvYmplY3Q+KCk7CiAgICAgICAgQ29weUFsbEZpZWxkcyhyZXN1bHQsIGRhdGEpOwoKICAgICAgICB0cnkKICAgICAgICB7CiAgICAgICAgICAgIHZhciByZXNwb25zZSA9IGNvbnRleHQuQm9keTsKICAgICAgICAgICAgdmFyIGJvZHlEYXRhID0gcmVzcG9uc2U/LmRhdGE7CiAgICAgICAgICAgIHN0cmluZyBlcnJjb2RlID0gR2V0U3RyaW5nKGJvZHlEYXRhLCAiZXJyY29kZSIpOwoKICAgICAgICAgICAgcmVzdWx0WyJzZW5kU3VtbWFyeVN1Y2Nlc3MiXSA9IHN0cmluZy5Jc051bGxPckVtcHR5KGVycmNvZGUpOwogICAgICAgIH0KICAgICAgICBjYXRjaAogICAgICAgIHsKICAgICAgICAgICAgcmVzdWx0WyJzZW5kU3VtbWFyeVN1Y2Nlc3MiXSA9IGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UgeyBEYXRhID0gcmVzdWx0IH0pOwogICAgfQoKICAgIHByaXZhdGUgc3RyaW5nIExvb2t1cFVzZXIoZHluYW1pYyBkYXRhLCBzdHJpbmcgY2hhdFJvb21LZXkpCiAgICB7CiAgICAgICAgaWYgKCFIYXNQcm9wZXJ0eShkYXRhLCAicGVybWFuZW50Q2hhdFJvb21zIikgfHwgZGF0YS5wZXJtYW5lbnRDaGF0Um9vbXMgPT0gbnVsbCkKICAgICAgICAgICAgcmV0dXJuIG51bGw7CgogICAgICAgIGZvcmVhY2ggKHZhciByb29tIGluIGRhdGEucGVybWFuZW50Q2hhdFJvb21zKQogICAgICAgIHsKICAgICAgICAgICAgdmFyIGtleSA9IEdldFN0cmluZyhyb29tLCAiY2hhdFJvb21LZXkiKTsKICAgICAgICAgICAgaWYgKHN0cmluZy5FcXVhbHMoa2V5LCBjaGF0Um9vbUtleSwgU3RyaW5nQ29tcGFyaXNvbi5PcmRpbmFsSWdub3JlQ2FzZSkpCiAgICAgICAgICAgICAgICByZXR1cm4gR2V0U3RyaW5nKHJvb20sICJ1c2VyIik7CiAgICAgICAgfQogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHByaXZhdGUgc3RyaW5nIEdldFN0cmluZyhkeW5hbWljIG9iaiwgc3RyaW5nIG5hbWUpCiAgICB7CiAgICAgICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gbnVsbDsKICAgICAgICB0cnkKICAgICAgICB7CiAgICAgICAgICAgIGlmIChIYXNQcm9wZXJ0eShvYmosIG5hbWUpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB2YXIgdiA9IEdldFByb3BlcnR5VmFsdWUob2JqLCBuYW1lKTsKICAgICAgICAgICAgICAgIHJldHVybiB2Py5Ub1N0cmluZygpPy5UcmltKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY2F0Y2ggeyB9CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHJpdmF0ZSB2b2lkIENvcHlBbGxGaWVsZHMoRGljdGlvbmFyeTxzdHJpbmcsIG9iamVjdD4gcmVzdWx0LCBkeW5hbWljIGRhdGEpCiAgICB7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJ0cmFuc2ZlclBsYW4iKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgInZhbGlkYXRpb25SZXN1bHQiKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgInNvdXJjZUFkdmlzb3JJZCIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAiYWR2aXNvclR5cGUiKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgInN0YXJ0RGF0ZSIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAiZW5kRGF0ZSIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAidHJhbnNmZXJUeXBlIik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJlbnJpY2hlZFJlemVydmF0aW9ucyIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAicmV6Q2hhdFJvb21QbGFuIik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJwZXJtYW5lbnRSb29tUGxhbiIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAicGVybWFuZW50Q2hhdFJvb21zIik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJwZXJtYW5lbnRQcm9jZXNzZWRJbmRleCIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAibGFzdFBlcm1hbmVudERlYWN0aXZhdGVTdWNjZXNzIik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJsYXN0RGVhY3RpdmF0ZWRSb29tSWQiKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgImxhc3RSb29tTWVzc2FnZXMiKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgImxhc3RSb29tTWVzc2FnZXNTdWNjZXNzIik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJjaGF0U3VtbWFyeSIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAiY2hhdFN1bW1hcnlTdWNjZXNzIik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJuZXdSb29tSWQiKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgImxhc3RQZXJtYW5lbnRDaGF0Um9vbVN1Y2Nlc3MiKTsKICAgIH0KCiAgICBwcml2YXRlIHZvaWQgQ29weUlmUHJlc2VudChEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PiB0YXJnZXQsIGR5bmFtaWMgc291cmNlLCBzdHJpbmcgbmFtZSkKICAgIHsKICAgICAgICBpZiAoc291cmNlID09IG51bGwpIHJldHVybjsKICAgICAgICB0cnkKICAgICAgICB7CiAgICAgICAgICAgIGlmIChIYXNQcm9wZXJ0eShzb3VyY2UsIG5hbWUpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB2YXIgdiA9IEdldFByb3BlcnR5VmFsdWUoc291cmNlLCBuYW1lKTsKICAgICAgICAgICAgICAgIGlmICh2ICE9IG51bGwpIHRhcmdldFtuYW1lXSA9IHY7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY2F0Y2ggeyB9CiAgICB9Cn0K"
|
|
520
546
|
}
|
|
521
547
|
}
|
|
522
548
|
]
|
|
@@ -196,7 +196,7 @@
|
|
|
196
196
|
},
|
|
197
197
|
"mapping": {
|
|
198
198
|
"location": "./src/ValidateDateForRezervationMapping.csx",
|
|
199
|
-
"code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzOwp1c2luZyBCQlQuV29ya2Zsb3cuU2NyaXB0aW5nOwp1c2luZyBCQlQuV29ya2Zsb3cuRGVmaW5pdGlvbnM7CgovLy8gPHN1bW1hcnk+Ci8vLyBTY3JpcHQgVGFzayAodHlwZSA3KSBtYXBwaW5nIGZvciB2YWxpZGF0ZS1kYXRlLWZvci1yZXplcnZhdGlvbi4KLy8vIFZhbGlkYXRlcyBzdGFydERhdGVUaW1lIGFuZCBlbmREYXRlVGltZSBmcm9tIHJlemVydmF0aW9uIGluc3RhbmNlIGRhdGEuCi8vLyBUaHJvd3MgQXJndW1lbnRFeGNlcHRpb24gaWYgZGF0ZSBpcyBpbiB0aGUgcGFzdCBvciBpbnZhbGlkOyBvdGhlcndpc2UgcmV0dXJucyBzdWNjZXNzLgovLy8gUnVucyBiZWZvcmUgdmFsaWRhdGUtc2xvdC1mb3ItcmV6ZXJ2YXRpb24gdG8gYXZvaWQgY2FsbGluZyBnZXQtYXZhaWxhYmxlLXNsb3RzIHdpdGggaW52YWxpZCBkYXRlLgovLy8gPC9zdW1tYXJ5PgpwdWJsaWMgY2xhc3MgVmFsaWRhdGVEYXRlRm9yUmV6ZXJ2YXRpb25NYXBwaW5nIDogU2NyaXB0QmFzZSwgSU1hcHBpbmcKewogICAgcHVibGljIFRhc2s8U2NyaXB0UmVzcG9uc2U+
|
|
199
|
+
"code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzOwp1c2luZyBCQlQuV29ya2Zsb3cuU2NyaXB0aW5nOwp1c2luZyBCQlQuV29ya2Zsb3cuRGVmaW5pdGlvbnM7CgovLy8gPHN1bW1hcnk+Ci8vLyBTY3JpcHQgVGFzayAodHlwZSA3KSBtYXBwaW5nIGZvciB2YWxpZGF0ZS1kYXRlLWZvci1yZXplcnZhdGlvbi4KLy8vIFZhbGlkYXRlcyBzdGFydERhdGVUaW1lIGFuZCBlbmREYXRlVGltZSBmcm9tIHJlemVydmF0aW9uIGluc3RhbmNlIGRhdGEuCi8vLyBUaHJvd3MgQXJndW1lbnRFeGNlcHRpb24gaWYgZGF0ZSBpcyBpbiB0aGUgcGFzdCBvciBpbnZhbGlkOyBvdGhlcndpc2UgcmV0dXJucyBzdWNjZXNzLgovLy8gUnVucyBiZWZvcmUgdmFsaWRhdGUtc2xvdC1mb3ItcmV6ZXJ2YXRpb24gdG8gYXZvaWQgY2FsbGluZyBnZXQtYXZhaWxhYmxlLXNsb3RzIHdpdGggaW52YWxpZCBkYXRlLgovLy8gPC9zdW1tYXJ5PgpwdWJsaWMgY2xhc3MgVmFsaWRhdGVEYXRlRm9yUmV6ZXJ2YXRpb25NYXBwaW5nIDogU2NyaXB0QmFzZSwgSU1hcHBpbmcKewogICAgcHVibGljIFRhc2s8U2NyaXB0UmVzcG9uc2U+IElucHV0SGFuZGxlcihXb3JrZmxvd1Rhc2sgdGFzaywgU2NyaXB0Q29udGV4dCBjb250ZXh0KQogICAgewogICAgICAgIHZhciBkYXRhID0gY29udGV4dC5JbnN0YW5jZT8uRGF0YTsKICAgICAgICBpZiAoZGF0YSA9PSBudWxsKQogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigiSW5zdGFuY2UgZGF0YSBpcyByZXF1aXJlZC4iKTsKCiAgICAgICAgdmFyIHN0YXJ0RGF0ZVRpbWVTdHIgPSBHZXRTdHJpbmcoZGF0YSwgInN0YXJ0RGF0ZVRpbWUiKTsKICAgICAgICB2YXIgZW5kRGF0ZVRpbWVTdHIgPSBHZXRTdHJpbmcoZGF0YSwgImVuZERhdGVUaW1lIik7CiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPckVtcHR5KHN0YXJ0RGF0ZVRpbWVTdHIpIHx8IHN0cmluZy5Jc051bGxPckVtcHR5KGVuZERhdGVUaW1lU3RyKSkKICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50RXhjZXB0aW9uKCJzdGFydERhdGVUaW1lIGFuZCBlbmREYXRlVGltZSBhcmUgcmVxdWlyZWQuIiwgImRhdGUiKTsKCiAgICAgICAgRGF0ZVRpbWUgc3RhcnREdDsKICAgICAgICBpZiAoIVRyeVBhcnNlVG9VdGMoc3RhcnREYXRlVGltZVN0ciwgb3V0IHN0YXJ0RHQpKQogICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgc3RhcnREYXRlVGltZSBmb3JtYXQuIiwgInN0YXJ0RGF0ZVRpbWUiKTsKICAgICAgICBEYXRlVGltZSBlbmREdDsKICAgICAgICBpZiAoIVRyeVBhcnNlVG9VdGMoZW5kRGF0ZVRpbWVTdHIsIG91dCBlbmREdCkpCiAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBlbmREYXRlVGltZSBmb3JtYXQuIiwgImVuZERhdGVUaW1lIik7CgogICAgICAgIHZhciBub3cgPSBEYXRlVGltZS5VdGNOb3c7CiAgICAgICAgaWYgKHN0YXJ0RHQgPCBub3cgfHwgZW5kRHQgPCBub3cpCiAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudEV4Y2VwdGlvbigiRGF0ZSBjYW5ub3QgYmUgaW4gdGhlIHBhc3QuIiwgImRhdGUiKTsKICAgICAgICBpZiAoZW5kRHQgPD0gc3RhcnREdCkKICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50RXhjZXB0aW9uKCJlbmREYXRlVGltZSBtdXN0IGJlIGFmdGVyIHN0YXJ0RGF0ZVRpbWUuIiwgImRhdGUiKTsKCiAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UoKSk7CiAgICB9CgogICAgcHVibGljIFRhc2s8U2NyaXB0UmVzcG9uc2U+IE91dHB1dEhhbmRsZXIoU2NyaXB0Q29udGV4dCBjb250ZXh0KQogICAgewogICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlKCkpOwogICAgfQoKICAgIHByaXZhdGUgYm9vbCBUcnlQYXJzZVRvVXRjKHN0cmluZyBkYXRlU3RyLCBvdXQgRGF0ZVRpbWUgdXRjRGF0ZVRpbWUpCiAgICB7CiAgICAgICAgdXRjRGF0ZVRpbWUgPSBkZWZhdWx0OwogICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JFbXB0eShkYXRlU3RyKSkgcmV0dXJuIGZhbHNlOwogICAgICAgIGlmIChEYXRlVGltZU9mZnNldC5UcnlQYXJzZShkYXRlU3RyLAogICAgICAgICAgICBTeXN0ZW0uR2xvYmFsaXphdGlvbi5DdWx0dXJlSW5mby5JbnZhcmlhbnRDdWx0dXJlLAogICAgICAgICAgICBTeXN0ZW0uR2xvYmFsaXphdGlvbi5EYXRlVGltZVN0eWxlcy5Ob25lLCBvdXQgdmFyIGR0bykpCiAgICAgICAgewogICAgICAgICAgICB1dGNEYXRlVGltZSA9IGR0by5VdGNEYXRlVGltZTsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwcml2YXRlIHN0cmluZyBHZXRTdHJpbmcoZHluYW1pYyBvYmosIHN0cmluZyBuYW1lKQogICAgewogICAgICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIG51bGw7CiAgICAgICAgdHJ5CiAgICAgICAgewogICAgICAgICAgICBpZiAoSGFzUHJvcGVydHkob2JqLCBuYW1lKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdmFyIHYgPSBHZXRQcm9wZXJ0eVZhbHVlKG9iaiwgbmFtZSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdj8uVG9TdHJpbmcoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjYXRjaCB7IH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KfQo="
|
|
200
200
|
}
|
|
201
201
|
},
|
|
202
202
|
{
|
|
@@ -209,7 +209,7 @@
|
|
|
209
209
|
},
|
|
210
210
|
"mapping": {
|
|
211
211
|
"location": "./src/ValidateSlotForRandevuUpdateMapping.csx",
|
|
212
|
-
"code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7CnVzaW5nIEJCVC5Xb3JrZmxvdy5TY3JpcHRpbmc7CnVzaW5nIEJCVC5Xb3JrZmxvdy5EZWZpbml0aW9uczsKCi8vLyA8c3VtbWFyeT4KLy8vIE1hcHBpbmcgZm9yIHZhbGlkYXRlLXNsb3QtZm9yLXJlemVydmF0aW9uIHRhc2sgaW4gcmFuZGV2dS11cGRhdGUgZmxvdy4KLy8vIFNhbWUgbG9naWMgYXMgVmFsaWRhdGVTbG90Rm9yUmV6ZXJ2YXRpb25NYXBwaW5nIC0gdXNlcyBhZHZpc29yLCBzdGFydERhdGVUaW1lLCBlbmREYXRlVGltZSBmcm9tIGluc3RhbmNlLgovLy8gPC9zdW1tYXJ5PgppbnRlcm5hbCBzZWFsZWQgY2xhc3MgR2V0QXZhaWxhYmxlU2xvdHNFeGNlcHRpb25SYW5kZXZ1VXBkYXRlIDogRXhjZXB0aW9uCnsKICAgIHB1YmxpYyBHZXRBdmFpbGFibGVTbG90c0V4Y2VwdGlvblJhbmRldnVVcGRhdGUoc3RyaW5nIG1lc3NhZ2UpIDogYmFzZShtZXNzYWdlKSB7IH0KfQoKcHVibGljIGNsYXNzIFZhbGlkYXRlU2xvdEZvclJhbmRldnVVcGRhdGVNYXBwaW5nIDogU2NyaXB0QmFzZSwgSU1hcHBpbmcKewogICAgcHVibGljIFRhc2s8U2NyaXB0UmVzcG9uc2U+IElucHV0SGFuZGxlcihXb3JrZmxvd1Rhc2sgdGFzaywgU2NyaXB0Q29udGV4dCBjb250ZXh0KQogICAgewogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgICAgdmFyIHNlcnZpY2VUYXNrID0gdGFzayBhcyBEYXByU2VydmljZVRhc2s7CiAgICAgICAgICAgIGlmIChzZXJ2aWNlVGFzayA9PSBudWxsKQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oIlRhc2sgbXVzdCBiZSBhIERhcHJTZXJ2aWNlVGFzayIpOwoKICAgICAgICAgICAgdmFyIGFwcElkID0gR2V0Q29uZmlnVmFsdWUoIkRBUFJfQVBQX0lEIik7CiAgICAgICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yRW1wdHkoYXBwSWQpKQogICAgICAgICAgICAgICAgc2VydmljZVRhc2suU2V0QXBwSWQoYXBwSWQpOwoKICAgICAgICAgICAgdmFyIGRhdGEgPSBjb250ZXh0Lkluc3RhbmNlPy5EYXRhOwogICAgICAgICAgICBpZiAoZGF0YSA9PSBudWxsKQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oIkluc3RhbmNlIGRhdGEgaXMgcmVxdWlyZWQiKTsKCiAgICAgICAgICAgIHZhciBhZHZpc29yID0gR2V0U3RyaW5nKGRhdGEsICJhZHZpc29yIik7CiAgICAgICAgICAgIHZhciBzdGFydERhdGVUaW1lU3RyID0gR2V0U3RyaW5nKGRhdGEsICJzdGFydERhdGVUaW1lIik7CiAgICAgICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JFbXB0eShhZHZpc29yKSB8fCBzdHJpbmcuSXNOdWxsT3JFbXB0eShzdGFydERhdGVUaW1lU3RyKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPSAidmFsaWRhdGlvbi1lcnJvciIsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9IG5ldyB7IHNsb3RDaGVja1Jlc3VsdCA9IG5ldyB7IGF2YWlsYWJsZSA9IGZhbHNlLCBrZXkgPSAidmFsaWRhdGlvbi1lcnJvciIgfSB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgRGF0ZVRpbWUgc3RhcnREYXRlVGltZTsKICAgICAgICAgICAgaWYgKCFEYXRlVGltZS5UcnlQYXJzZShzdGFydERhdGVUaW1lU3RyLCBvdXQgc3RhcnREYXRlVGltZSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0gInZhbGlkYXRpb24tZXJyb3IiLAogICAgICAgICAgICAgICAgICAgIERhdGEgPSBuZXcgeyBzbG90Q2hlY2tSZXN1bHQgPSBuZXcgeyBhdmFpbGFibGUgPSBmYWxzZSwga2V5ID0gInZhbGlkYXRpb24tZXJyb3IiIH0gfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciBkYXRlU3RyID0gc3RhcnREYXRlVGltZS5Ub1N0cmluZygieXl5eS1NTS1kZCIpOwogICAgICAgICAgICB2YXIgcXVlcnlQYXJhbXMgPSBuZXcgTGlzdDxzdHJpbmc+CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJhZHZpc29ySWQ9IiArIFVyaS5Fc2NhcGVEYXRhU3RyaW5nKGFkdmlzb3IpLAogICAgICAgICAgICAgICAgImRhdGU9IiArIFVyaS5Fc2NhcGVEYXRhU3RyaW5nKGRhdGVTdHIpCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHNlcnZpY2VUYXNrLlNldFF1ZXJ5U3RyaW5nKHN0cmluZy5Kb2luKCImIiwgcXVlcnlQYXJhbXMpKTsKCiAgICAgICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlKCkpOwogICAgICAgIH0KICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGV4KQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ID0gImlucHV0LWVycm9yIiwKICAgICAgICAgICAgICAgIERhdGEgPSBuZXcgeyBzbG90Q2hlY2tSZXN1bHQgPSBuZXcgeyBhdmFpbGFibGUgPSBmYWxzZSwga2V5ID0gImlucHV0LWVycm9yIiwgZXJyb3IgPSBleC5NZXNzYWdlIH0gfQogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIFRhc2s8U2NyaXB0UmVzcG9uc2U+IE91dHB1dEhhbmRsZXIoU2NyaXB0Q29udGV4dCBjb250ZXh0KQogICAgewogICAgICAgIHZhciBib2R5ID0gY29udGV4dC5Cb2R5OwogICAgICAgIGlmIChib2R5ICE9IG51bGwgJiYgYm9keS5pc1N1Y2Nlc3MgPT0gZmFsc2UpCiAgICAgICAgewogICAgICAgICAgICB2YXIgZGF0YU5vZGUgPSBib2R5LmRhdGEgPz8gYm9keS5EYXRhOwogICAgICAgICAgICB2YXIgZGV0YWlsID0gR2V0U3RyaW5nKGRhdGFOb2RlLCAiZGV0YWlsIikgPz8gR2V0U3RyaW5nKGJvZHksICJlcnJvck1lc3NhZ2UiKSA/PyBHZXRTdHJpbmcoYm9keSwgImRldGFpbCIpOwogICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnRFeGNlcHRpb24oZGV0YWlsID8/ICIiLCAiIik7CiAgICAgICAgfQogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgICAgdmFyIGRhdGEgPSBjb250ZXh0Lkluc3RhbmNlPy5EYXRhOwogICAgICAgICAgICBpZiAoZGF0YSA9PSBudWxsKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIERhdGEgPSBuZXcgeyBzbG90Q2hlY2tSZXN1bHQgPSBuZXcgeyBhdmFpbGFibGUgPSBmYWxzZSwga2V5ID0gIm5vLWluc3RhbmNlLWRhdGEiIH0gfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciBzdGFydERhdGVUaW1lU3RyID0gR2V0U3RyaW5nKGRhdGEsICJzdGFydERhdGVUaW1lIik7CiAgICAgICAgICAgIHZhciBlbmREYXRlVGltZVN0ciA9IEdldFN0cmluZyhkYXRhLCAiZW5kRGF0ZVRpbWUiKTsKICAgICAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPckVtcHR5KHN0YXJ0RGF0ZVRpbWVTdHIpIHx8IHN0cmluZy5Jc051bGxPckVtcHR5KGVuZERhdGVUaW1lU3RyKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBEYXRhID0gbmV3IHsgc2xvdENoZWNrUmVzdWx0ID0gbmV3IHsgYXZhaWxhYmxlID0gZmFsc2UsIGtleSA9ICJ2YWxpZGF0aW9uLWVycm9yIiB9IH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICBEYXRlVGltZSBzdGFydER0ID0gRGF0ZVRpbWUuTWluVmFsdWU7CiAgICAgICAgICAgIERhdGVUaW1lIGVuZER0ID0gRGF0ZVRpbWUuTWluVmFsdWU7CiAgICAgICAgICAgIHRyeQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBzdGFydER0ID0gRGF0ZVRpbWUuUGFyc2Uoc3RhcnREYXRlVGltZVN0cik7CiAgICAgICAgICAgICAgICBlbmREdCA9IERhdGVUaW1lLlBhcnNlKGVuZERhdGVUaW1lU3RyKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaCAoRXhjZXB0aW9uKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIERhdGEgPSBuZXcgeyBzbG90Q2hlY2tSZXN1bHQgPSBuZXcgeyBhdmFpbGFibGUgPSBmYWxzZSwga2V5ID0gInZhbGlkYXRpb24tZXJyb3IiIH0gfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciB0eiA9IFJlc29sdmVCdXNpbmVzc1RpbWVab25lKCk7CiAgICAgICAgICAgIHZhciBsb2NhbFN0YXJ0ID0gQ29udmVydFRvVGltZVpvbmUoc3RhcnREdCwgc3RhcnREYXRlVGltZVN0ciwgdHopOwogICAgICAgICAgICB2YXIgbG9jYWxFbmQgPSBDb252ZXJ0VG9UaW1lWm9uZShlbmREdCwgZW5kRGF0ZVRpbWVTdHIsIHR6KTsKICAgICAgICAgICAgdmFyIHJlcXVlc3RlZFNsb3QgPSBsb2NhbFN0YXJ0LlRvU3RyaW5nKCJISDptbSIpICsgIi0iICsgbG9jYWxFbmQuVG9TdHJpbmcoIkhIOm1tIik7CiAgICAgICAgICAgIGJvb2wgYXZhaWxhYmxlID0gZmFsc2U7CiAgICAgICAgICAgIHN0cmluZyByZXNwb25zZUtleSA9IG51bGw7CgogICAgICAgICAgICBpZiAoYm9keSAhPSBudWxsKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXNwb25zZUtleSA9IEdldFN0cmluZyhib2R5LCAia2V5IikgPz8gR2V0U3RyaW5nKGJvZHksICJLZXkiKTsKICAgICAgICAgICAgICAgIHZhciBkYXRhTm9kZSA9IGJvZHkuZGF0YSA/PyBib2R5LkRhdGEgPz8gYm9keTsKICAgICAgICAgICAgICAgIGlmIChkYXRhTm9kZSAhPSBudWxsICYmIEhhc1Byb3BlcnR5KGRhdGFOb2RlLCAiZ2V0QXZhaWxhYmxlU2xvdHMiKSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZ2V0QXZhaWxhYmxlU2xvdHMgPSBkYXRhTm9kZS5nZXRBdmFpbGFibGVTbG90czsKICAgICAgICAgICAgICAgICAgICBpZiAoSGFzUHJvcGVydHkoZ2V0QXZhaWxhYmxlU2xvdHMsICJhdmFpbGFibGVTbG90cyIpKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF2YWlsYWJsZVNsb3RzID0gZ2V0QXZhaWxhYmxlU2xvdHMuYXZhaWxhYmxlU2xvdHM7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdmFpbGFibGVTbG90cyAhPSBudWxsKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGlzdCA9IGF2YWlsYWJsZVNsb3RzIGFzIElFbnVtZXJhYmxlPG9iamVjdD47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGlzdCAhPSBudWxsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciBzIGluIGxpc3QpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocz8uVG9TdHJpbmcoKSA9PSByZXF1ZXN0ZWRTbG90KSB7IGF2YWlsYWJsZSA9IHRydWU7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkZXRhaWxNc2cgPSBHZXRTdHJpbmcoZGF0YU5vZGUsICJkZXRhaWwiKSA/PyBHZXRTdHJpbmcoYm9keSwgImRldGFpbCIpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0cmluZy5Jc051bGxPckVtcHR5KGRldGFpbE1zZykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgR2V0QXZhaWxhYmxlU2xvdHNFeGNlcHRpb25SYW5kZXZ1VXBkYXRlKGRldGFpbE1zZyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPSBuZXcgeyBzbG90Q2hlY2tSZXN1bHQgPSBuZXcgeyBhdmFpbGFibGUgPSBmYWxzZSwga2V5ID0gInZhbGlkYXRpb24tZXJyb3IiIH0gfQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2VLZXkgPT0gbnVsbCAmJiBib2R5LmlzU3VjY2VzcyA9PSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGUgPSBmYWxzZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgRGF0YSA9IG5ldwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHNsb3RDaGVja1Jlc3VsdCA9IG5ldwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICBrZXkgPSByZXNwb25zZUtleSA/PyAoYXZhaWxhYmxlID8gImF2YWlsYWJsZS1zbG90cy1zdWNjZXNzIiA6ICJzbG90LXVuYXZhaWxhYmxlIiksCiAgICAgICAgICAgICAgICAgICAgICAgIHNsb3RzID0gYm9keT8uZGF0YT8uZ2V0QXZhaWxhYmxlU2xvdHM/LmF2YWlsYWJsZVNsb3RzID8/IGJvZHk/LmdldEF2YWlsYWJsZVNsb3RzPy5hdmFpbGFibGVTbG90cwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIGNhdGNoIChHZXRBdmFpbGFibGVTbG90c0V4Y2VwdGlvblJhbmRldnVVcGRhdGUpCiAgICAgICAgewogICAgICAgICAgICB0aHJvdzsKICAgICAgICB9CiAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBleCkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIERhdGEgPSBuZXcKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBzbG90Q2hlY2tSZXN1bHQgPSBuZXcKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZSA9IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICBrZXkgPSAib3V0cHV0LWVycm9yIiwKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBleC5NZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICB1bmF2YWlsYWJsZSA9IGNvbnRleHQuQm9keQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgVGltZVpvbmVJbmZvIFJlc29sdmVCdXNpbmVzc1RpbWVab25lKCkKICAgIHsKICAgICAgICB2YXIgaWQgPSBHZXRDb25maWdWYWx1ZSgiQXBwb2ludG1lbnRzOlRpbWVab25lIikgPz8gR2V0Q29uZmlnVmFsdWUoIkFQUE9JTlRNRU5UX1RJTUVaT05FIik7CiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPcldoaXRlU3BhY2UoaWQpKQogICAgICAgICAgICBpZCA9ICJFdXJvcGUvSXN0YW5idWwiOwoKICAgICAgICB0cnkgeyByZXR1cm4gVGltZVpvbmVJbmZvLkZpbmRTeXN0ZW1UaW1lWm9uZUJ5SWQoaWQuVHJpbSgpKTsgfSBjYXRjaCB7IH0KICAgICAgICB0cnkgeyByZXR1cm4gVGltZVpvbmVJbmZvLkZpbmRTeXN0ZW1UaW1lWm9uZUJ5SWQoIlR1cmtleSBTdGFuZGFyZCBUaW1lIik7IH0gY2F0Y2ggeyB9CiAgICAgICAgcmV0dXJuIFRpbWVab25lSW5mby5DcmVhdGVDdXN0b21UaW1lWm9uZSgiVFJUIiwgVGltZVNwYW4uRnJvbUhvdXJzKDMpLCAiVFJUIChVVEMrMykiLCAiVFJUIChVVEMrMykiKTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBEYXRlVGltZSBDb252ZXJ0VG9UaW1lWm9uZShEYXRlVGltZSBkdCwgc3RyaW5nIG9yaWdpbmFsLCBUaW1lWm9uZUluZm8gdHopCiAgICB7CiAgICAgICAgaWYgKGR0LktpbmQgPT0gRGF0ZVRpbWVLaW5kLlV0YykKICAgICAgICAgICAgcmV0dXJuIFRpbWVab25lSW5mby5Db252ZXJ0VGltZUZyb21VdGMoZHQsIHR6KTsKCiAgICAgICAgaWYgKERhdGVUaW1lT2Zmc2V0LlRyeVBhcnNlKG9yaWdpbmFsLCBvdXQgdmFyIGR0bykpCiAgICAgICAgewogICAgICAgICAgICB2YXIgdXRjID0gZHRvLlV0Y0RhdGVUaW1lOwogICAgICAgICAgICByZXR1cm4gVGltZVpvbmVJbmZvLkNvbnZlcnRUaW1lRnJvbVV0Yyh1dGMsIHR6KTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBkdDsKICAgIH0KCiAgICBwcml2YXRlIHN0cmluZyBHZXRTdHJpbmcoZHluYW1pYyBvYmosIHN0cmluZyBuYW1lKQogICAgewogICAgICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIG51bGw7CiAgICAgICAgdHJ5CiAgICAgICAgewogICAgICAgICAgICBpZiAoSGFzUHJvcGVydHkob2JqLCBuYW1lKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdmFyIHYgPSBHZXRQcm9wZXJ0eVZhbHVlKG9iaiwgbmFtZSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdj8uVG9TdHJpbmcoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjYXRjaCB7IH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KfQo="
|
|
212
|
+
"code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7CnVzaW5nIEJCVC5Xb3JrZmxvdy5TY3JpcHRpbmc7CnVzaW5nIEJCVC5Xb3JrZmxvdy5EZWZpbml0aW9uczsKCi8vLyA8c3VtbWFyeT4KLy8vIE1hcHBpbmcgZm9yIHZhbGlkYXRlLXNsb3QtZm9yLXJlemVydmF0aW9uIHRhc2sgaW4gcmFuZGV2dS11cGRhdGUgZmxvdy4KLy8vIFNhbWUgbG9naWMgYXMgVmFsaWRhdGVTbG90Rm9yUmV6ZXJ2YXRpb25NYXBwaW5nIC0gdXNlcyBhZHZpc29yLCBzdGFydERhdGVUaW1lLCBlbmREYXRlVGltZSBmcm9tIGluc3RhbmNlLgovLy8gPC9zdW1tYXJ5PgppbnRlcm5hbCBzZWFsZWQgY2xhc3MgR2V0QXZhaWxhYmxlU2xvdHNFeGNlcHRpb25SYW5kZXZ1VXBkYXRlIDogRXhjZXB0aW9uCnsKICAgIHB1YmxpYyBHZXRBdmFpbGFibGVTbG90c0V4Y2VwdGlvblJhbmRldnVVcGRhdGUoc3RyaW5nIG1lc3NhZ2UpIDogYmFzZShtZXNzYWdlKSB7IH0KfQoKcHVibGljIGNsYXNzIFZhbGlkYXRlU2xvdEZvclJhbmRldnVVcGRhdGVNYXBwaW5nIDogU2NyaXB0QmFzZSwgSU1hcHBpbmcKewogICAgcHVibGljIFRhc2s8U2NyaXB0UmVzcG9uc2U+IElucHV0SGFuZGxlcihXb3JrZmxvd1Rhc2sgdGFzaywgU2NyaXB0Q29udGV4dCBjb250ZXh0KQogICAgewogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgICAgdmFyIHNlcnZpY2VUYXNrID0gdGFzayBhcyBEYXByU2VydmljZVRhc2s7CiAgICAgICAgICAgIGlmIChzZXJ2aWNlVGFzayA9PSBudWxsKQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oIlRhc2sgbXVzdCBiZSBhIERhcHJTZXJ2aWNlVGFzayIpOwoKICAgICAgICAgICAgdmFyIGFwcElkID0gR2V0Q29uZmlnVmFsdWUoIkRBUFJfQVBQX0lEIik7CiAgICAgICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yRW1wdHkoYXBwSWQpKQogICAgICAgICAgICAgICAgc2VydmljZVRhc2suU2V0QXBwSWQoYXBwSWQpOwoKICAgICAgICAgICAgdmFyIGRhdGEgPSBjb250ZXh0Lkluc3RhbmNlPy5EYXRhOwogICAgICAgICAgICBpZiAoZGF0YSA9PSBudWxsKQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oIkluc3RhbmNlIGRhdGEgaXMgcmVxdWlyZWQiKTsKCiAgICAgICAgICAgIHZhciBhZHZpc29yID0gR2V0U3RyaW5nKGRhdGEsICJhZHZpc29yIik7CiAgICAgICAgICAgIHZhciBzdGFydERhdGVUaW1lU3RyID0gR2V0U3RyaW5nKGRhdGEsICJzdGFydERhdGVUaW1lIik7CiAgICAgICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JFbXB0eShhZHZpc29yKSB8fCBzdHJpbmcuSXNOdWxsT3JFbXB0eShzdGFydERhdGVUaW1lU3RyKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPSAidmFsaWRhdGlvbi1lcnJvciIsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9IG5ldyB7IHNsb3RDaGVja1Jlc3VsdCA9IG5ldyB7IGF2YWlsYWJsZSA9IGZhbHNlLCBrZXkgPSAidmFsaWRhdGlvbi1lcnJvciIgfSB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgRGF0ZVRpbWUgc3RhcnREYXRlVGltZTsKICAgICAgICAgICAgaWYgKCFUcnlQYXJzZVRvVXRjKHN0YXJ0RGF0ZVRpbWVTdHIsIG91dCBzdGFydERhdGVUaW1lKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPSAidmFsaWRhdGlvbi1lcnJvciIsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9IG5ldyB7IHNsb3RDaGVja1Jlc3VsdCA9IG5ldyB7IGF2YWlsYWJsZSA9IGZhbHNlLCBrZXkgPSAidmFsaWRhdGlvbi1lcnJvciIgfSB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIGRhdGVTdHIgPSBzdGFydERhdGVUaW1lLlRvU3RyaW5nKCJ5eXl5LU1NLWRkIik7CiAgICAgICAgICAgIHZhciBxdWVyeVBhcmFtcyA9IG5ldyBMaXN0PHN0cmluZz4KICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImFkdmlzb3JJZD0iICsgVXJpLkVzY2FwZURhdGFTdHJpbmcoYWR2aXNvciksCiAgICAgICAgICAgICAgICAiZGF0ZT0iICsgVXJpLkVzY2FwZURhdGFTdHJpbmcoZGF0ZVN0cikKICAgICAgICAgICAgfTsKICAgICAgICAgICAgc2VydmljZVRhc2suU2V0UXVlcnlTdHJpbmcoc3RyaW5nLkpvaW4oIiYiLCBxdWVyeVBhcmFtcykpOwoKICAgICAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UoKSk7CiAgICAgICAgfQogICAgICAgIGNhdGNoIChFeGNlcHRpb24gZXgpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgPSAiaW5wdXQtZXJyb3IiLAogICAgICAgICAgICAgICAgRGF0YSA9IG5ldyB7IHNsb3RDaGVja1Jlc3VsdCA9IG5ldyB7IGF2YWlsYWJsZSA9IGZhbHNlLCBrZXkgPSAiaW5wdXQtZXJyb3IiLCBlcnJvciA9IGV4Lk1lc3NhZ2UgfSB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgVGFzazxTY3JpcHRSZXNwb25zZT4gT3V0cHV0SGFuZGxlcihTY3JpcHRDb250ZXh0IGNvbnRleHQpCiAgICB7CiAgICAgICAgdmFyIGJvZHkgPSBjb250ZXh0LkJvZHk7CiAgICAgICAgaWYgKGJvZHkgIT0gbnVsbCAmJiBib2R5LmlzU3VjY2VzcyA9PSBmYWxzZSkKICAgICAgICB7CiAgICAgICAgICAgIHZhciBkYXRhTm9kZSA9IGJvZHkuZGF0YSA/PyBib2R5LkRhdGE7CiAgICAgICAgICAgIHZhciBkZXRhaWwgPSBHZXRTdHJpbmcoZGF0YU5vZGUsICJkZXRhaWwiKSA/PyBHZXRTdHJpbmcoYm9keSwgImVycm9yTWVzc2FnZSIpID8/IEdldFN0cmluZyhib2R5LCAiZGV0YWlsIik7CiAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudEV4Y2VwdGlvbihkZXRhaWwgPz8gIiIsICIiKTsKICAgICAgICB9CiAgICAgICAgdHJ5CiAgICAgICAgewogICAgICAgICAgICB2YXIgZGF0YSA9IGNvbnRleHQuSW5zdGFuY2U/LkRhdGE7CiAgICAgICAgICAgIGlmIChkYXRhID09IG51bGwpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgRGF0YSA9IG5ldyB7IHNsb3RDaGVja1Jlc3VsdCA9IG5ldyB7IGF2YWlsYWJsZSA9IGZhbHNlLCBrZXkgPSAibm8taW5zdGFuY2UtZGF0YSIgfSB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIHN0YXJ0RGF0ZVRpbWVTdHIgPSBHZXRTdHJpbmcoZGF0YSwgInN0YXJ0RGF0ZVRpbWUiKTsKICAgICAgICAgICAgdmFyIGVuZERhdGVUaW1lU3RyID0gR2V0U3RyaW5nKGRhdGEsICJlbmREYXRlVGltZSIpOwogICAgICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yRW1wdHkoc3RhcnREYXRlVGltZVN0cikgfHwgc3RyaW5nLklzTnVsbE9yRW1wdHkoZW5kRGF0ZVRpbWVTdHIpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIERhdGEgPSBuZXcgeyBzbG90Q2hlY2tSZXN1bHQgPSBuZXcgeyBhdmFpbGFibGUgPSBmYWxzZSwga2V5ID0gInZhbGlkYXRpb24tZXJyb3IiIH0gfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIERhdGVUaW1lIHN0YXJ0RHRVdGMgPSBEYXRlVGltZS5NaW5WYWx1ZTsKICAgICAgICAgICAgRGF0ZVRpbWUgZW5kRHRVdGMgPSBEYXRlVGltZS5NaW5WYWx1ZTsKICAgICAgICAgICAgdHJ5CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHN0YXJ0RHRVdGMgPSBQYXJzZVRvVXRjKHN0YXJ0RGF0ZVRpbWVTdHIpOwogICAgICAgICAgICAgICAgZW5kRHRVdGMgPSBQYXJzZVRvVXRjKGVuZERhdGVUaW1lU3RyKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaCAoRXhjZXB0aW9uKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIERhdGEgPSBuZXcgeyBzbG90Q2hlY2tSZXN1bHQgPSBuZXcgeyBhdmFpbGFibGUgPSBmYWxzZSwga2V5ID0gInZhbGlkYXRpb24tZXJyb3IiIH0gfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciB0eiA9IFJlc29sdmVCdXNpbmVzc1RpbWVab25lKCk7CiAgICAgICAgICAgIHZhciBsb2NhbFN0YXJ0ID0gVGltZVpvbmVJbmZvLkNvbnZlcnRUaW1lRnJvbVV0YyhzdGFydER0VXRjLCB0eik7CiAgICAgICAgICAgIHZhciBsb2NhbEVuZCA9IFRpbWVab25lSW5mby5Db252ZXJ0VGltZUZyb21VdGMoZW5kRHRVdGMsIHR6KTsKICAgICAgICAgICAgdmFyIHJlcXVlc3RlZFNsb3QgPSBsb2NhbFN0YXJ0LlRvU3RyaW5nKCJISDptbSIpICsgIi0iICsgbG9jYWxFbmQuVG9TdHJpbmcoIkhIOm1tIik7CiAgICAgICAgICAgIGJvb2wgYXZhaWxhYmxlID0gZmFsc2U7CiAgICAgICAgICAgIHN0cmluZyByZXNwb25zZUtleSA9IG51bGw7CgogICAgICAgICAgICBpZiAoYm9keSAhPSBudWxsKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXNwb25zZUtleSA9IEdldFN0cmluZyhib2R5LCAia2V5IikgPz8gR2V0U3RyaW5nKGJvZHksICJLZXkiKTsKICAgICAgICAgICAgICAgIHZhciBkYXRhTm9kZSA9IGJvZHkuZGF0YSA/PyBib2R5LkRhdGEgPz8gYm9keTsKICAgICAgICAgICAgICAgIGlmIChkYXRhTm9kZSAhPSBudWxsICYmIEhhc1Byb3BlcnR5KGRhdGFOb2RlLCAiZ2V0QXZhaWxhYmxlU2xvdHMiKSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZ2V0QXZhaWxhYmxlU2xvdHMgPSBkYXRhTm9kZS5nZXRBdmFpbGFibGVTbG90czsKICAgICAgICAgICAgICAgICAgICBpZiAoSGFzUHJvcGVydHkoZ2V0QXZhaWxhYmxlU2xvdHMsICJhdmFpbGFibGVTbG90cyIpKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF2YWlsYWJsZVNsb3RzID0gZ2V0QXZhaWxhYmxlU2xvdHMuYXZhaWxhYmxlU2xvdHM7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdmFpbGFibGVTbG90cyAhPSBudWxsKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGlzdCA9IGF2YWlsYWJsZVNsb3RzIGFzIElFbnVtZXJhYmxlPG9iamVjdD47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGlzdCAhPSBudWxsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciBzIGluIGxpc3QpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocz8uVG9TdHJpbmcoKSA9PSByZXF1ZXN0ZWRTbG90KSB7IGF2YWlsYWJsZSA9IHRydWU7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkZXRhaWxNc2cgPSBHZXRTdHJpbmcoZGF0YU5vZGUsICJkZXRhaWwiKSA/PyBHZXRTdHJpbmcoYm9keSwgImRldGFpbCIpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0cmluZy5Jc051bGxPckVtcHR5KGRldGFpbE1zZykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgR2V0QXZhaWxhYmxlU2xvdHNFeGNlcHRpb25SYW5kZXZ1VXBkYXRlKGRldGFpbE1zZyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPSBuZXcgeyBzbG90Q2hlY2tSZXN1bHQgPSBuZXcgeyBhdmFpbGFibGUgPSBmYWxzZSwga2V5ID0gInZhbGlkYXRpb24tZXJyb3IiIH0gfQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2VLZXkgPT0gbnVsbCAmJiBib2R5LmlzU3VjY2VzcyA9PSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGUgPSBmYWxzZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgRGF0YSA9IG5ldwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHNsb3RDaGVja1Jlc3VsdCA9IG5ldwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICBrZXkgPSByZXNwb25zZUtleSA/PyAoYXZhaWxhYmxlID8gImF2YWlsYWJsZS1zbG90cy1zdWNjZXNzIiA6ICJzbG90LXVuYXZhaWxhYmxlIiksCiAgICAgICAgICAgICAgICAgICAgICAgIHNsb3RzID0gYm9keT8uZGF0YT8uZ2V0QXZhaWxhYmxlU2xvdHM/LmF2YWlsYWJsZVNsb3RzID8/IGJvZHk/LmdldEF2YWlsYWJsZVNsb3RzPy5hdmFpbGFibGVTbG90cwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIGNhdGNoIChHZXRBdmFpbGFibGVTbG90c0V4Y2VwdGlvblJhbmRldnVVcGRhdGUpCiAgICAgICAgewogICAgICAgICAgICB0aHJvdzsKICAgICAgICB9CiAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBleCkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIERhdGEgPSBuZXcKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBzbG90Q2hlY2tSZXN1bHQgPSBuZXcKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZSA9IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICBrZXkgPSAib3V0cHV0LWVycm9yIiwKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBleC5NZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICB1bmF2YWlsYWJsZSA9IGNvbnRleHQuQm9keQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgVGltZVpvbmVJbmZvIFJlc29sdmVCdXNpbmVzc1RpbWVab25lKCkKICAgIHsKICAgICAgICB2YXIgaWQgPSBHZXRDb25maWdWYWx1ZSgiQXBwb2ludG1lbnRzOlRpbWVab25lIikgPz8gR2V0Q29uZmlnVmFsdWUoIkFQUE9JTlRNRU5UX1RJTUVaT05FIik7CiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPcldoaXRlU3BhY2UoaWQpKQogICAgICAgICAgICBpZCA9ICJFdXJvcGUvSXN0YW5idWwiOwoKICAgICAgICB0cnkgeyByZXR1cm4gVGltZVpvbmVJbmZvLkZpbmRTeXN0ZW1UaW1lWm9uZUJ5SWQoaWQuVHJpbSgpKTsgfSBjYXRjaCB7IH0KICAgICAgICB0cnkgeyByZXR1cm4gVGltZVpvbmVJbmZvLkZpbmRTeXN0ZW1UaW1lWm9uZUJ5SWQoIlR1cmtleSBTdGFuZGFyZCBUaW1lIik7IH0gY2F0Y2ggeyB9CiAgICAgICAgcmV0dXJuIFRpbWVab25lSW5mby5DcmVhdGVDdXN0b21UaW1lWm9uZSgiVFJUIiwgVGltZVNwYW4uRnJvbUhvdXJzKDMpLCAiVFJUIChVVEMrMykiLCAiVFJUIChVVEMrMykiKTsKICAgIH0KCiAgICBwcml2YXRlIGJvb2wgVHJ5UGFyc2VUb1V0YyhzdHJpbmcgZGF0ZVN0ciwgb3V0IERhdGVUaW1lIHV0Y0RhdGVUaW1lKQogICAgewogICAgICAgIHV0Y0RhdGVUaW1lID0gZGVmYXVsdDsKICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yRW1wdHkoZGF0ZVN0cikpIHJldHVybiBmYWxzZTsKICAgICAgICBpZiAoRGF0ZVRpbWVPZmZzZXQuVHJ5UGFyc2UoZGF0ZVN0ciwKICAgICAgICAgICAgU3lzdGVtLkdsb2JhbGl6YXRpb24uQ3VsdHVyZUluZm8uSW52YXJpYW50Q3VsdHVyZSwKICAgICAgICAgICAgU3lzdGVtLkdsb2JhbGl6YXRpb24uRGF0ZVRpbWVTdHlsZXMuTm9uZSwgb3V0IHZhciBkdG8pKQogICAgICAgIHsKICAgICAgICAgICAgdXRjRGF0ZVRpbWUgPSBkdG8uVXRjRGF0ZVRpbWU7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHJpdmF0ZSBEYXRlVGltZSBQYXJzZVRvVXRjKHN0cmluZyBkYXRlU3RyKQogICAgewogICAgICAgIHZhciBkdG8gPSBEYXRlVGltZU9mZnNldC5QYXJzZShkYXRlU3RyLAogICAgICAgICAgICBTeXN0ZW0uR2xvYmFsaXphdGlvbi5DdWx0dXJlSW5mby5JbnZhcmlhbnRDdWx0dXJlKTsKICAgICAgICByZXR1cm4gZHRvLlV0Y0RhdGVUaW1lOwogICAgfQoKICAgIHByaXZhdGUgc3RyaW5nIEdldFN0cmluZyhkeW5hbWljIG9iaiwgc3RyaW5nIG5hbWUpCiAgICB7CiAgICAgICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gbnVsbDsKICAgICAgICB0cnkKICAgICAgICB7CiAgICAgICAgICAgIGlmIChIYXNQcm9wZXJ0eShvYmosIG5hbWUpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB2YXIgdiA9IEdldFByb3BlcnR5VmFsdWUob2JqLCBuYW1lKTsKICAgICAgICAgICAgICAgIHJldHVybiB2Py5Ub1N0cmluZygpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNhdGNoIHsgfQogICAgICAgIHJldHVybiBudWxsOwogICAgfQp9Cg=="
|
|
213
213
|
}
|
|
214
214
|
}
|
|
215
215
|
]
|
|
@@ -277,7 +277,7 @@
|
|
|
277
277
|
},
|
|
278
278
|
"mapping": {
|
|
279
279
|
"location": "./src/ValidateDateForRezervationMapping.csx",
|
|
280
|
-
"code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzOwp1c2luZyBCQlQuV29ya2Zsb3cuU2NyaXB0aW5nOwp1c2luZyBCQlQuV29ya2Zsb3cuRGVmaW5pdGlvbnM7CgovLy8gPHN1bW1hcnk+Ci8vLyBTY3JpcHQgVGFzayAodHlwZSA3KSBtYXBwaW5nIGZvciB2YWxpZGF0ZS1kYXRlLWZvci1yZXplcnZhdGlvbi4KLy8vIFZhbGlkYXRlcyBzdGFydERhdGVUaW1lIGFuZCBlbmREYXRlVGltZSBmcm9tIHJlemVydmF0aW9uIGluc3RhbmNlIGRhdGEuCi8vLyBUaHJvd3MgQXJndW1lbnRFeGNlcHRpb24gaWYgZGF0ZSBpcyBpbiB0aGUgcGFzdCBvciBpbnZhbGlkOyBvdGhlcndpc2UgcmV0dXJucyBzdWNjZXNzLgovLy8gUnVucyBiZWZvcmUgdmFsaWRhdGUtc2xvdC1mb3ItcmV6ZXJ2YXRpb24gdG8gYXZvaWQgY2FsbGluZyBnZXQtYXZhaWxhYmxlLXNsb3RzIHdpdGggaW52YWxpZCBkYXRlLgovLy8gPC9zdW1tYXJ5PgpwdWJsaWMgY2xhc3MgVmFsaWRhdGVEYXRlRm9yUmV6ZXJ2YXRpb25NYXBwaW5nIDogU2NyaXB0QmFzZSwgSU1hcHBpbmcKewogICAgcHVibGljIFRhc2s8U2NyaXB0UmVzcG9uc2U+
|
|
280
|
+
"code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzOwp1c2luZyBCQlQuV29ya2Zsb3cuU2NyaXB0aW5nOwp1c2luZyBCQlQuV29ya2Zsb3cuRGVmaW5pdGlvbnM7CgovLy8gPHN1bW1hcnk+Ci8vLyBTY3JpcHQgVGFzayAodHlwZSA3KSBtYXBwaW5nIGZvciB2YWxpZGF0ZS1kYXRlLWZvci1yZXplcnZhdGlvbi4KLy8vIFZhbGlkYXRlcyBzdGFydERhdGVUaW1lIGFuZCBlbmREYXRlVGltZSBmcm9tIHJlemVydmF0aW9uIGluc3RhbmNlIGRhdGEuCi8vLyBUaHJvd3MgQXJndW1lbnRFeGNlcHRpb24gaWYgZGF0ZSBpcyBpbiB0aGUgcGFzdCBvciBpbnZhbGlkOyBvdGhlcndpc2UgcmV0dXJucyBzdWNjZXNzLgovLy8gUnVucyBiZWZvcmUgdmFsaWRhdGUtc2xvdC1mb3ItcmV6ZXJ2YXRpb24gdG8gYXZvaWQgY2FsbGluZyBnZXQtYXZhaWxhYmxlLXNsb3RzIHdpdGggaW52YWxpZCBkYXRlLgovLy8gPC9zdW1tYXJ5PgpwdWJsaWMgY2xhc3MgVmFsaWRhdGVEYXRlRm9yUmV6ZXJ2YXRpb25NYXBwaW5nIDogU2NyaXB0QmFzZSwgSU1hcHBpbmcKewogICAgcHVibGljIFRhc2s8U2NyaXB0UmVzcG9uc2U+IElucHV0SGFuZGxlcihXb3JrZmxvd1Rhc2sgdGFzaywgU2NyaXB0Q29udGV4dCBjb250ZXh0KQogICAgewogICAgICAgIHZhciBkYXRhID0gY29udGV4dC5JbnN0YW5jZT8uRGF0YTsKICAgICAgICBpZiAoZGF0YSA9PSBudWxsKQogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigiSW5zdGFuY2UgZGF0YSBpcyByZXF1aXJlZC4iKTsKCiAgICAgICAgdmFyIHN0YXJ0RGF0ZVRpbWVTdHIgPSBHZXRTdHJpbmcoZGF0YSwgInN0YXJ0RGF0ZVRpbWUiKTsKICAgICAgICB2YXIgZW5kRGF0ZVRpbWVTdHIgPSBHZXRTdHJpbmcoZGF0YSwgImVuZERhdGVUaW1lIik7CiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPckVtcHR5KHN0YXJ0RGF0ZVRpbWVTdHIpIHx8IHN0cmluZy5Jc051bGxPckVtcHR5KGVuZERhdGVUaW1lU3RyKSkKICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50RXhjZXB0aW9uKCJzdGFydERhdGVUaW1lIGFuZCBlbmREYXRlVGltZSBhcmUgcmVxdWlyZWQuIiwgImRhdGUiKTsKCiAgICAgICAgRGF0ZVRpbWUgc3RhcnREdDsKICAgICAgICBpZiAoIVRyeVBhcnNlVG9VdGMoc3RhcnREYXRlVGltZVN0ciwgb3V0IHN0YXJ0RHQpKQogICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgc3RhcnREYXRlVGltZSBmb3JtYXQuIiwgInN0YXJ0RGF0ZVRpbWUiKTsKICAgICAgICBEYXRlVGltZSBlbmREdDsKICAgICAgICBpZiAoIVRyeVBhcnNlVG9VdGMoZW5kRGF0ZVRpbWVTdHIsIG91dCBlbmREdCkpCiAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBlbmREYXRlVGltZSBmb3JtYXQuIiwgImVuZERhdGVUaW1lIik7CgogICAgICAgIHZhciBub3cgPSBEYXRlVGltZS5VdGNOb3c7CiAgICAgICAgaWYgKHN0YXJ0RHQgPCBub3cgfHwgZW5kRHQgPCBub3cpCiAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudEV4Y2VwdGlvbigiRGF0ZSBjYW5ub3QgYmUgaW4gdGhlIHBhc3QuIiwgImRhdGUiKTsKICAgICAgICBpZiAoZW5kRHQgPD0gc3RhcnREdCkKICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50RXhjZXB0aW9uKCJlbmREYXRlVGltZSBtdXN0IGJlIGFmdGVyIHN0YXJ0RGF0ZVRpbWUuIiwgImRhdGUiKTsKCiAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UoKSk7CiAgICB9CgogICAgcHVibGljIFRhc2s8U2NyaXB0UmVzcG9uc2U+IE91dHB1dEhhbmRsZXIoU2NyaXB0Q29udGV4dCBjb250ZXh0KQogICAgewogICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlKCkpOwogICAgfQoKICAgIHByaXZhdGUgYm9vbCBUcnlQYXJzZVRvVXRjKHN0cmluZyBkYXRlU3RyLCBvdXQgRGF0ZVRpbWUgdXRjRGF0ZVRpbWUpCiAgICB7CiAgICAgICAgdXRjRGF0ZVRpbWUgPSBkZWZhdWx0OwogICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JFbXB0eShkYXRlU3RyKSkgcmV0dXJuIGZhbHNlOwogICAgICAgIGlmIChEYXRlVGltZU9mZnNldC5UcnlQYXJzZShkYXRlU3RyLAogICAgICAgICAgICBTeXN0ZW0uR2xvYmFsaXphdGlvbi5DdWx0dXJlSW5mby5JbnZhcmlhbnRDdWx0dXJlLAogICAgICAgICAgICBTeXN0ZW0uR2xvYmFsaXphdGlvbi5EYXRlVGltZVN0eWxlcy5Ob25lLCBvdXQgdmFyIGR0bykpCiAgICAgICAgewogICAgICAgICAgICB1dGNEYXRlVGltZSA9IGR0by5VdGNEYXRlVGltZTsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwcml2YXRlIHN0cmluZyBHZXRTdHJpbmcoZHluYW1pYyBvYmosIHN0cmluZyBuYW1lKQogICAgewogICAgICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIG51bGw7CiAgICAgICAgdHJ5CiAgICAgICAgewogICAgICAgICAgICBpZiAoSGFzUHJvcGVydHkob2JqLCBuYW1lKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdmFyIHYgPSBHZXRQcm9wZXJ0eVZhbHVlKG9iaiwgbmFtZSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdj8uVG9TdHJpbmcoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjYXRjaCB7IH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KfQo="
|
|
281
281
|
}
|
|
282
282
|
},
|
|
283
283
|
{
|
|
@@ -290,7 +290,7 @@
|
|
|
290
290
|
},
|
|
291
291
|
"mapping": {
|
|
292
292
|
"location": "./src/ValidateSlotForRandevuUpdateMapping.csx",
|
|
293
|
-
"code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7CnVzaW5nIEJCVC5Xb3JrZmxvdy5TY3JpcHRpbmc7CnVzaW5nIEJCVC5Xb3JrZmxvdy5EZWZpbml0aW9uczsKCi8vLyA8c3VtbWFyeT4KLy8vIE1hcHBpbmcgZm9yIHZhbGlkYXRlLXNsb3QtZm9yLXJlemVydmF0aW9uIHRhc2sgaW4gcmFuZGV2dS11cGRhdGUgZmxvdy4KLy8vIFNhbWUgbG9naWMgYXMgVmFsaWRhdGVTbG90Rm9yUmV6ZXJ2YXRpb25NYXBwaW5nIC0gdXNlcyBhZHZpc29yLCBzdGFydERhdGVUaW1lLCBlbmREYXRlVGltZSBmcm9tIGluc3RhbmNlLgovLy8gPC9zdW1tYXJ5PgppbnRlcm5hbCBzZWFsZWQgY2xhc3MgR2V0QXZhaWxhYmxlU2xvdHNFeGNlcHRpb25SYW5kZXZ1VXBkYXRlIDogRXhjZXB0aW9uCnsKICAgIHB1YmxpYyBHZXRBdmFpbGFibGVTbG90c0V4Y2VwdGlvblJhbmRldnVVcGRhdGUoc3RyaW5nIG1lc3NhZ2UpIDogYmFzZShtZXNzYWdlKSB7IH0KfQoKcHVibGljIGNsYXNzIFZhbGlkYXRlU2xvdEZvclJhbmRldnVVcGRhdGVNYXBwaW5nIDogU2NyaXB0QmFzZSwgSU1hcHBpbmcKewogICAgcHVibGljIFRhc2s8U2NyaXB0UmVzcG9uc2U+IElucHV0SGFuZGxlcihXb3JrZmxvd1Rhc2sgdGFzaywgU2NyaXB0Q29udGV4dCBjb250ZXh0KQogICAgewogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgICAgdmFyIHNlcnZpY2VUYXNrID0gdGFzayBhcyBEYXByU2VydmljZVRhc2s7CiAgICAgICAgICAgIGlmIChzZXJ2aWNlVGFzayA9PSBudWxsKQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oIlRhc2sgbXVzdCBiZSBhIERhcHJTZXJ2aWNlVGFzayIpOwoKICAgICAgICAgICAgdmFyIGFwcElkID0gR2V0Q29uZmlnVmFsdWUoIkRBUFJfQVBQX0lEIik7CiAgICAgICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yRW1wdHkoYXBwSWQpKQogICAgICAgICAgICAgICAgc2VydmljZVRhc2suU2V0QXBwSWQoYXBwSWQpOwoKICAgICAgICAgICAgdmFyIGRhdGEgPSBjb250ZXh0Lkluc3RhbmNlPy5EYXRhOwogICAgICAgICAgICBpZiAoZGF0YSA9PSBudWxsKQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oIkluc3RhbmNlIGRhdGEgaXMgcmVxdWlyZWQiKTsKCiAgICAgICAgICAgIHZhciBhZHZpc29yID0gR2V0U3RyaW5nKGRhdGEsICJhZHZpc29yIik7CiAgICAgICAgICAgIHZhciBzdGFydERhdGVUaW1lU3RyID0gR2V0U3RyaW5nKGRhdGEsICJzdGFydERhdGVUaW1lIik7CiAgICAgICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JFbXB0eShhZHZpc29yKSB8fCBzdHJpbmcuSXNOdWxsT3JFbXB0eShzdGFydERhdGVUaW1lU3RyKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPSAidmFsaWRhdGlvbi1lcnJvciIsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9IG5ldyB7IHNsb3RDaGVja1Jlc3VsdCA9IG5ldyB7IGF2YWlsYWJsZSA9IGZhbHNlLCBrZXkgPSAidmFsaWRhdGlvbi1lcnJvciIgfSB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgRGF0ZVRpbWUgc3RhcnREYXRlVGltZTsKICAgICAgICAgICAgaWYgKCFEYXRlVGltZS5UcnlQYXJzZShzdGFydERhdGVUaW1lU3RyLCBvdXQgc3RhcnREYXRlVGltZSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0gInZhbGlkYXRpb24tZXJyb3IiLAogICAgICAgICAgICAgICAgICAgIERhdGEgPSBuZXcgeyBzbG90Q2hlY2tSZXN1bHQgPSBuZXcgeyBhdmFpbGFibGUgPSBmYWxzZSwga2V5ID0gInZhbGlkYXRpb24tZXJyb3IiIH0gfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciBkYXRlU3RyID0gc3RhcnREYXRlVGltZS5Ub1N0cmluZygieXl5eS1NTS1kZCIpOwogICAgICAgICAgICB2YXIgcXVlcnlQYXJhbXMgPSBuZXcgTGlzdDxzdHJpbmc+CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJhZHZpc29ySWQ9IiArIFVyaS5Fc2NhcGVEYXRhU3RyaW5nKGFkdmlzb3IpLAogICAgICAgICAgICAgICAgImRhdGU9IiArIFVyaS5Fc2NhcGVEYXRhU3RyaW5nKGRhdGVTdHIpCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHNlcnZpY2VUYXNrLlNldFF1ZXJ5U3RyaW5nKHN0cmluZy5Kb2luKCImIiwgcXVlcnlQYXJhbXMpKTsKCiAgICAgICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlKCkpOwogICAgICAgIH0KICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGV4KQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ID0gImlucHV0LWVycm9yIiwKICAgICAgICAgICAgICAgIERhdGEgPSBuZXcgeyBzbG90Q2hlY2tSZXN1bHQgPSBuZXcgeyBhdmFpbGFibGUgPSBmYWxzZSwga2V5ID0gImlucHV0LWVycm9yIiwgZXJyb3IgPSBleC5NZXNzYWdlIH0gfQogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIFRhc2s8U2NyaXB0UmVzcG9uc2U+IE91dHB1dEhhbmRsZXIoU2NyaXB0Q29udGV4dCBjb250ZXh0KQogICAgewogICAgICAgIHZhciBib2R5ID0gY29udGV4dC5Cb2R5OwogICAgICAgIGlmIChib2R5ICE9IG51bGwgJiYgYm9keS5pc1N1Y2Nlc3MgPT0gZmFsc2UpCiAgICAgICAgewogICAgICAgICAgICB2YXIgZGF0YU5vZGUgPSBib2R5LmRhdGEgPz8gYm9keS5EYXRhOwogICAgICAgICAgICB2YXIgZGV0YWlsID0gR2V0U3RyaW5nKGRhdGFOb2RlLCAiZGV0YWlsIikgPz8gR2V0U3RyaW5nKGJvZHksICJlcnJvck1lc3NhZ2UiKSA/PyBHZXRTdHJpbmcoYm9keSwgImRldGFpbCIpOwogICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnRFeGNlcHRpb24oZGV0YWlsID8/ICIiLCAiIik7CiAgICAgICAgfQogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgICAgdmFyIGRhdGEgPSBjb250ZXh0Lkluc3RhbmNlPy5EYXRhOwogICAgICAgICAgICBpZiAoZGF0YSA9PSBudWxsKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIERhdGEgPSBuZXcgeyBzbG90Q2hlY2tSZXN1bHQgPSBuZXcgeyBhdmFpbGFibGUgPSBmYWxzZSwga2V5ID0gIm5vLWluc3RhbmNlLWRhdGEiIH0gfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciBzdGFydERhdGVUaW1lU3RyID0gR2V0U3RyaW5nKGRhdGEsICJzdGFydERhdGVUaW1lIik7CiAgICAgICAgICAgIHZhciBlbmREYXRlVGltZVN0ciA9IEdldFN0cmluZyhkYXRhLCAiZW5kRGF0ZVRpbWUiKTsKICAgICAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPckVtcHR5KHN0YXJ0RGF0ZVRpbWVTdHIpIHx8IHN0cmluZy5Jc051bGxPckVtcHR5KGVuZERhdGVUaW1lU3RyKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBEYXRhID0gbmV3IHsgc2xvdENoZWNrUmVzdWx0ID0gbmV3IHsgYXZhaWxhYmxlID0gZmFsc2UsIGtleSA9ICJ2YWxpZGF0aW9uLWVycm9yIiB9IH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICBEYXRlVGltZSBzdGFydER0ID0gRGF0ZVRpbWUuTWluVmFsdWU7CiAgICAgICAgICAgIERhdGVUaW1lIGVuZER0ID0gRGF0ZVRpbWUuTWluVmFsdWU7CiAgICAgICAgICAgIHRyeQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBzdGFydER0ID0gRGF0ZVRpbWUuUGFyc2Uoc3RhcnREYXRlVGltZVN0cik7CiAgICAgICAgICAgICAgICBlbmREdCA9IERhdGVUaW1lLlBhcnNlKGVuZERhdGVUaW1lU3RyKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaCAoRXhjZXB0aW9uKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIERhdGEgPSBuZXcgeyBzbG90Q2hlY2tSZXN1bHQgPSBuZXcgeyBhdmFpbGFibGUgPSBmYWxzZSwga2V5ID0gInZhbGlkYXRpb24tZXJyb3IiIH0gfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciB0eiA9IFJlc29sdmVCdXNpbmVzc1RpbWVab25lKCk7CiAgICAgICAgICAgIHZhciBsb2NhbFN0YXJ0ID0gQ29udmVydFRvVGltZVpvbmUoc3RhcnREdCwgc3RhcnREYXRlVGltZVN0ciwgdHopOwogICAgICAgICAgICB2YXIgbG9jYWxFbmQgPSBDb252ZXJ0VG9UaW1lWm9uZShlbmREdCwgZW5kRGF0ZVRpbWVTdHIsIHR6KTsKICAgICAgICAgICAgdmFyIHJlcXVlc3RlZFNsb3QgPSBsb2NhbFN0YXJ0LlRvU3RyaW5nKCJISDptbSIpICsgIi0iICsgbG9jYWxFbmQuVG9TdHJpbmcoIkhIOm1tIik7CiAgICAgICAgICAgIGJvb2wgYXZhaWxhYmxlID0gZmFsc2U7CiAgICAgICAgICAgIHN0cmluZyByZXNwb25zZUtleSA9IG51bGw7CgogICAgICAgICAgICBpZiAoYm9keSAhPSBudWxsKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXNwb25zZUtleSA9IEdldFN0cmluZyhib2R5LCAia2V5IikgPz8gR2V0U3RyaW5nKGJvZHksICJLZXkiKTsKICAgICAgICAgICAgICAgIHZhciBkYXRhTm9kZSA9IGJvZHkuZGF0YSA/PyBib2R5LkRhdGEgPz8gYm9keTsKICAgICAgICAgICAgICAgIGlmIChkYXRhTm9kZSAhPSBudWxsICYmIEhhc1Byb3BlcnR5KGRhdGFOb2RlLCAiZ2V0QXZhaWxhYmxlU2xvdHMiKSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZ2V0QXZhaWxhYmxlU2xvdHMgPSBkYXRhTm9kZS5nZXRBdmFpbGFibGVTbG90czsKICAgICAgICAgICAgICAgICAgICBpZiAoSGFzUHJvcGVydHkoZ2V0QXZhaWxhYmxlU2xvdHMsICJhdmFpbGFibGVTbG90cyIpKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF2YWlsYWJsZVNsb3RzID0gZ2V0QXZhaWxhYmxlU2xvdHMuYXZhaWxhYmxlU2xvdHM7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdmFpbGFibGVTbG90cyAhPSBudWxsKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGlzdCA9IGF2YWlsYWJsZVNsb3RzIGFzIElFbnVtZXJhYmxlPG9iamVjdD47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGlzdCAhPSBudWxsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciBzIGluIGxpc3QpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocz8uVG9TdHJpbmcoKSA9PSByZXF1ZXN0ZWRTbG90KSB7IGF2YWlsYWJsZSA9IHRydWU7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkZXRhaWxNc2cgPSBHZXRTdHJpbmcoZGF0YU5vZGUsICJkZXRhaWwiKSA/PyBHZXRTdHJpbmcoYm9keSwgImRldGFpbCIpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0cmluZy5Jc051bGxPckVtcHR5KGRldGFpbE1zZykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgR2V0QXZhaWxhYmxlU2xvdHNFeGNlcHRpb25SYW5kZXZ1VXBkYXRlKGRldGFpbE1zZyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPSBuZXcgeyBzbG90Q2hlY2tSZXN1bHQgPSBuZXcgeyBhdmFpbGFibGUgPSBmYWxzZSwga2V5ID0gInZhbGlkYXRpb24tZXJyb3IiIH0gfQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2VLZXkgPT0gbnVsbCAmJiBib2R5LmlzU3VjY2VzcyA9PSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGUgPSBmYWxzZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgRGF0YSA9IG5ldwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHNsb3RDaGVja1Jlc3VsdCA9IG5ldwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICBrZXkgPSByZXNwb25zZUtleSA/PyAoYXZhaWxhYmxlID8gImF2YWlsYWJsZS1zbG90cy1zdWNjZXNzIiA6ICJzbG90LXVuYXZhaWxhYmxlIiksCiAgICAgICAgICAgICAgICAgICAgICAgIHNsb3RzID0gYm9keT8uZGF0YT8uZ2V0QXZhaWxhYmxlU2xvdHM/LmF2YWlsYWJsZVNsb3RzID8/IGJvZHk/LmdldEF2YWlsYWJsZVNsb3RzPy5hdmFpbGFibGVTbG90cwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIGNhdGNoIChHZXRBdmFpbGFibGVTbG90c0V4Y2VwdGlvblJhbmRldnVVcGRhdGUpCiAgICAgICAgewogICAgICAgICAgICB0aHJvdzsKICAgICAgICB9CiAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBleCkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIERhdGEgPSBuZXcKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBzbG90Q2hlY2tSZXN1bHQgPSBuZXcKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZSA9IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICBrZXkgPSAib3V0cHV0LWVycm9yIiwKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBleC5NZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICB1bmF2YWlsYWJsZSA9IGNvbnRleHQuQm9keQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgVGltZVpvbmVJbmZvIFJlc29sdmVCdXNpbmVzc1RpbWVab25lKCkKICAgIHsKICAgICAgICB2YXIgaWQgPSBHZXRDb25maWdWYWx1ZSgiQXBwb2ludG1lbnRzOlRpbWVab25lIikgPz8gR2V0Q29uZmlnVmFsdWUoIkFQUE9JTlRNRU5UX1RJTUVaT05FIik7CiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPcldoaXRlU3BhY2UoaWQpKQogICAgICAgICAgICBpZCA9ICJFdXJvcGUvSXN0YW5idWwiOwoKICAgICAgICB0cnkgeyByZXR1cm4gVGltZVpvbmVJbmZvLkZpbmRTeXN0ZW1UaW1lWm9uZUJ5SWQoaWQuVHJpbSgpKTsgfSBjYXRjaCB7IH0KICAgICAgICB0cnkgeyByZXR1cm4gVGltZVpvbmVJbmZvLkZpbmRTeXN0ZW1UaW1lWm9uZUJ5SWQoIlR1cmtleSBTdGFuZGFyZCBUaW1lIik7IH0gY2F0Y2ggeyB9CiAgICAgICAgcmV0dXJuIFRpbWVab25lSW5mby5DcmVhdGVDdXN0b21UaW1lWm9uZSgiVFJUIiwgVGltZVNwYW4uRnJvbUhvdXJzKDMpLCAiVFJUIChVVEMrMykiLCAiVFJUIChVVEMrMykiKTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBEYXRlVGltZSBDb252ZXJ0VG9UaW1lWm9uZShEYXRlVGltZSBkdCwgc3RyaW5nIG9yaWdpbmFsLCBUaW1lWm9uZUluZm8gdHopCiAgICB7CiAgICAgICAgaWYgKGR0LktpbmQgPT0gRGF0ZVRpbWVLaW5kLlV0YykKICAgICAgICAgICAgcmV0dXJuIFRpbWVab25lSW5mby5Db252ZXJ0VGltZUZyb21VdGMoZHQsIHR6KTsKCiAgICAgICAgaWYgKERhdGVUaW1lT2Zmc2V0LlRyeVBhcnNlKG9yaWdpbmFsLCBvdXQgdmFyIGR0bykpCiAgICAgICAgewogICAgICAgICAgICB2YXIgdXRjID0gZHRvLlV0Y0RhdGVUaW1lOwogICAgICAgICAgICByZXR1cm4gVGltZVpvbmVJbmZvLkNvbnZlcnRUaW1lRnJvbVV0Yyh1dGMsIHR6KTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBkdDsKICAgIH0KCiAgICBwcml2YXRlIHN0cmluZyBHZXRTdHJpbmcoZHluYW1pYyBvYmosIHN0cmluZyBuYW1lKQogICAgewogICAgICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIG51bGw7CiAgICAgICAgdHJ5CiAgICAgICAgewogICAgICAgICAgICBpZiAoSGFzUHJvcGVydHkob2JqLCBuYW1lKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdmFyIHYgPSBHZXRQcm9wZXJ0eVZhbHVlKG9iaiwgbmFtZSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdj8uVG9TdHJpbmcoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjYXRjaCB7IH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KfQo="
|
|
293
|
+
"code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7CnVzaW5nIEJCVC5Xb3JrZmxvdy5TY3JpcHRpbmc7CnVzaW5nIEJCVC5Xb3JrZmxvdy5EZWZpbml0aW9uczsKCi8vLyA8c3VtbWFyeT4KLy8vIE1hcHBpbmcgZm9yIHZhbGlkYXRlLXNsb3QtZm9yLXJlemVydmF0aW9uIHRhc2sgaW4gcmFuZGV2dS11cGRhdGUgZmxvdy4KLy8vIFNhbWUgbG9naWMgYXMgVmFsaWRhdGVTbG90Rm9yUmV6ZXJ2YXRpb25NYXBwaW5nIC0gdXNlcyBhZHZpc29yLCBzdGFydERhdGVUaW1lLCBlbmREYXRlVGltZSBmcm9tIGluc3RhbmNlLgovLy8gPC9zdW1tYXJ5PgppbnRlcm5hbCBzZWFsZWQgY2xhc3MgR2V0QXZhaWxhYmxlU2xvdHNFeGNlcHRpb25SYW5kZXZ1VXBkYXRlIDogRXhjZXB0aW9uCnsKICAgIHB1YmxpYyBHZXRBdmFpbGFibGVTbG90c0V4Y2VwdGlvblJhbmRldnVVcGRhdGUoc3RyaW5nIG1lc3NhZ2UpIDogYmFzZShtZXNzYWdlKSB7IH0KfQoKcHVibGljIGNsYXNzIFZhbGlkYXRlU2xvdEZvclJhbmRldnVVcGRhdGVNYXBwaW5nIDogU2NyaXB0QmFzZSwgSU1hcHBpbmcKewogICAgcHVibGljIFRhc2s8U2NyaXB0UmVzcG9uc2U+IElucHV0SGFuZGxlcihXb3JrZmxvd1Rhc2sgdGFzaywgU2NyaXB0Q29udGV4dCBjb250ZXh0KQogICAgewogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgICAgdmFyIHNlcnZpY2VUYXNrID0gdGFzayBhcyBEYXByU2VydmljZVRhc2s7CiAgICAgICAgICAgIGlmIChzZXJ2aWNlVGFzayA9PSBudWxsKQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oIlRhc2sgbXVzdCBiZSBhIERhcHJTZXJ2aWNlVGFzayIpOwoKICAgICAgICAgICAgdmFyIGFwcElkID0gR2V0Q29uZmlnVmFsdWUoIkRBUFJfQVBQX0lEIik7CiAgICAgICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yRW1wdHkoYXBwSWQpKQogICAgICAgICAgICAgICAgc2VydmljZVRhc2suU2V0QXBwSWQoYXBwSWQpOwoKICAgICAgICAgICAgdmFyIGRhdGEgPSBjb250ZXh0Lkluc3RhbmNlPy5EYXRhOwogICAgICAgICAgICBpZiAoZGF0YSA9PSBudWxsKQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oIkluc3RhbmNlIGRhdGEgaXMgcmVxdWlyZWQiKTsKCiAgICAgICAgICAgIHZhciBhZHZpc29yID0gR2V0U3RyaW5nKGRhdGEsICJhZHZpc29yIik7CiAgICAgICAgICAgIHZhciBzdGFydERhdGVUaW1lU3RyID0gR2V0U3RyaW5nKGRhdGEsICJzdGFydERhdGVUaW1lIik7CiAgICAgICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JFbXB0eShhZHZpc29yKSB8fCBzdHJpbmcuSXNOdWxsT3JFbXB0eShzdGFydERhdGVUaW1lU3RyKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPSAidmFsaWRhdGlvbi1lcnJvciIsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9IG5ldyB7IHNsb3RDaGVja1Jlc3VsdCA9IG5ldyB7IGF2YWlsYWJsZSA9IGZhbHNlLCBrZXkgPSAidmFsaWRhdGlvbi1lcnJvciIgfSB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgRGF0ZVRpbWUgc3RhcnREYXRlVGltZTsKICAgICAgICAgICAgaWYgKCFUcnlQYXJzZVRvVXRjKHN0YXJ0RGF0ZVRpbWVTdHIsIG91dCBzdGFydERhdGVUaW1lKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPSAidmFsaWRhdGlvbi1lcnJvciIsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9IG5ldyB7IHNsb3RDaGVja1Jlc3VsdCA9IG5ldyB7IGF2YWlsYWJsZSA9IGZhbHNlLCBrZXkgPSAidmFsaWRhdGlvbi1lcnJvciIgfSB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIGRhdGVTdHIgPSBzdGFydERhdGVUaW1lLlRvU3RyaW5nKCJ5eXl5LU1NLWRkIik7CiAgICAgICAgICAgIHZhciBxdWVyeVBhcmFtcyA9IG5ldyBMaXN0PHN0cmluZz4KICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImFkdmlzb3JJZD0iICsgVXJpLkVzY2FwZURhdGFTdHJpbmcoYWR2aXNvciksCiAgICAgICAgICAgICAgICAiZGF0ZT0iICsgVXJpLkVzY2FwZURhdGFTdHJpbmcoZGF0ZVN0cikKICAgICAgICAgICAgfTsKICAgICAgICAgICAgc2VydmljZVRhc2suU2V0UXVlcnlTdHJpbmcoc3RyaW5nLkpvaW4oIiYiLCBxdWVyeVBhcmFtcykpOwoKICAgICAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UoKSk7CiAgICAgICAgfQogICAgICAgIGNhdGNoIChFeGNlcHRpb24gZXgpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgPSAiaW5wdXQtZXJyb3IiLAogICAgICAgICAgICAgICAgRGF0YSA9IG5ldyB7IHNsb3RDaGVja1Jlc3VsdCA9IG5ldyB7IGF2YWlsYWJsZSA9IGZhbHNlLCBrZXkgPSAiaW5wdXQtZXJyb3IiLCBlcnJvciA9IGV4Lk1lc3NhZ2UgfSB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgVGFzazxTY3JpcHRSZXNwb25zZT4gT3V0cHV0SGFuZGxlcihTY3JpcHRDb250ZXh0IGNvbnRleHQpCiAgICB7CiAgICAgICAgdmFyIGJvZHkgPSBjb250ZXh0LkJvZHk7CiAgICAgICAgaWYgKGJvZHkgIT0gbnVsbCAmJiBib2R5LmlzU3VjY2VzcyA9PSBmYWxzZSkKICAgICAgICB7CiAgICAgICAgICAgIHZhciBkYXRhTm9kZSA9IGJvZHkuZGF0YSA/PyBib2R5LkRhdGE7CiAgICAgICAgICAgIHZhciBkZXRhaWwgPSBHZXRTdHJpbmcoZGF0YU5vZGUsICJkZXRhaWwiKSA/PyBHZXRTdHJpbmcoYm9keSwgImVycm9yTWVzc2FnZSIpID8/IEdldFN0cmluZyhib2R5LCAiZGV0YWlsIik7CiAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudEV4Y2VwdGlvbihkZXRhaWwgPz8gIiIsICIiKTsKICAgICAgICB9CiAgICAgICAgdHJ5CiAgICAgICAgewogICAgICAgICAgICB2YXIgZGF0YSA9IGNvbnRleHQuSW5zdGFuY2U/LkRhdGE7CiAgICAgICAgICAgIGlmIChkYXRhID09IG51bGwpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgRGF0YSA9IG5ldyB7IHNsb3RDaGVja1Jlc3VsdCA9IG5ldyB7IGF2YWlsYWJsZSA9IGZhbHNlLCBrZXkgPSAibm8taW5zdGFuY2UtZGF0YSIgfSB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIHN0YXJ0RGF0ZVRpbWVTdHIgPSBHZXRTdHJpbmcoZGF0YSwgInN0YXJ0RGF0ZVRpbWUiKTsKICAgICAgICAgICAgdmFyIGVuZERhdGVUaW1lU3RyID0gR2V0U3RyaW5nKGRhdGEsICJlbmREYXRlVGltZSIpOwogICAgICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yRW1wdHkoc3RhcnREYXRlVGltZVN0cikgfHwgc3RyaW5nLklzTnVsbE9yRW1wdHkoZW5kRGF0ZVRpbWVTdHIpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIERhdGEgPSBuZXcgeyBzbG90Q2hlY2tSZXN1bHQgPSBuZXcgeyBhdmFpbGFibGUgPSBmYWxzZSwga2V5ID0gInZhbGlkYXRpb24tZXJyb3IiIH0gfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIERhdGVUaW1lIHN0YXJ0RHRVdGMgPSBEYXRlVGltZS5NaW5WYWx1ZTsKICAgICAgICAgICAgRGF0ZVRpbWUgZW5kRHRVdGMgPSBEYXRlVGltZS5NaW5WYWx1ZTsKICAgICAgICAgICAgdHJ5CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHN0YXJ0RHRVdGMgPSBQYXJzZVRvVXRjKHN0YXJ0RGF0ZVRpbWVTdHIpOwogICAgICAgICAgICAgICAgZW5kRHRVdGMgPSBQYXJzZVRvVXRjKGVuZERhdGVUaW1lU3RyKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaCAoRXhjZXB0aW9uKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIERhdGEgPSBuZXcgeyBzbG90Q2hlY2tSZXN1bHQgPSBuZXcgeyBhdmFpbGFibGUgPSBmYWxzZSwga2V5ID0gInZhbGlkYXRpb24tZXJyb3IiIH0gfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciB0eiA9IFJlc29sdmVCdXNpbmVzc1RpbWVab25lKCk7CiAgICAgICAgICAgIHZhciBsb2NhbFN0YXJ0ID0gVGltZVpvbmVJbmZvLkNvbnZlcnRUaW1lRnJvbVV0YyhzdGFydER0VXRjLCB0eik7CiAgICAgICAgICAgIHZhciBsb2NhbEVuZCA9IFRpbWVab25lSW5mby5Db252ZXJ0VGltZUZyb21VdGMoZW5kRHRVdGMsIHR6KTsKICAgICAgICAgICAgdmFyIHJlcXVlc3RlZFNsb3QgPSBsb2NhbFN0YXJ0LlRvU3RyaW5nKCJISDptbSIpICsgIi0iICsgbG9jYWxFbmQuVG9TdHJpbmcoIkhIOm1tIik7CiAgICAgICAgICAgIGJvb2wgYXZhaWxhYmxlID0gZmFsc2U7CiAgICAgICAgICAgIHN0cmluZyByZXNwb25zZUtleSA9IG51bGw7CgogICAgICAgICAgICBpZiAoYm9keSAhPSBudWxsKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXNwb25zZUtleSA9IEdldFN0cmluZyhib2R5LCAia2V5IikgPz8gR2V0U3RyaW5nKGJvZHksICJLZXkiKTsKICAgICAgICAgICAgICAgIHZhciBkYXRhTm9kZSA9IGJvZHkuZGF0YSA/PyBib2R5LkRhdGEgPz8gYm9keTsKICAgICAgICAgICAgICAgIGlmIChkYXRhTm9kZSAhPSBudWxsICYmIEhhc1Byb3BlcnR5KGRhdGFOb2RlLCAiZ2V0QXZhaWxhYmxlU2xvdHMiKSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZ2V0QXZhaWxhYmxlU2xvdHMgPSBkYXRhTm9kZS5nZXRBdmFpbGFibGVTbG90czsKICAgICAgICAgICAgICAgICAgICBpZiAoSGFzUHJvcGVydHkoZ2V0QXZhaWxhYmxlU2xvdHMsICJhdmFpbGFibGVTbG90cyIpKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF2YWlsYWJsZVNsb3RzID0gZ2V0QXZhaWxhYmxlU2xvdHMuYXZhaWxhYmxlU2xvdHM7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdmFpbGFibGVTbG90cyAhPSBudWxsKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGlzdCA9IGF2YWlsYWJsZVNsb3RzIGFzIElFbnVtZXJhYmxlPG9iamVjdD47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGlzdCAhPSBudWxsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciBzIGluIGxpc3QpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocz8uVG9TdHJpbmcoKSA9PSByZXF1ZXN0ZWRTbG90KSB7IGF2YWlsYWJsZSA9IHRydWU7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkZXRhaWxNc2cgPSBHZXRTdHJpbmcoZGF0YU5vZGUsICJkZXRhaWwiKSA/PyBHZXRTdHJpbmcoYm9keSwgImRldGFpbCIpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0cmluZy5Jc051bGxPckVtcHR5KGRldGFpbE1zZykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgR2V0QXZhaWxhYmxlU2xvdHNFeGNlcHRpb25SYW5kZXZ1VXBkYXRlKGRldGFpbE1zZyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPSBuZXcgeyBzbG90Q2hlY2tSZXN1bHQgPSBuZXcgeyBhdmFpbGFibGUgPSBmYWxzZSwga2V5ID0gInZhbGlkYXRpb24tZXJyb3IiIH0gfQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2VLZXkgPT0gbnVsbCAmJiBib2R5LmlzU3VjY2VzcyA9PSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGUgPSBmYWxzZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgRGF0YSA9IG5ldwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHNsb3RDaGVja1Jlc3VsdCA9IG5ldwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICBrZXkgPSByZXNwb25zZUtleSA/PyAoYXZhaWxhYmxlID8gImF2YWlsYWJsZS1zbG90cy1zdWNjZXNzIiA6ICJzbG90LXVuYXZhaWxhYmxlIiksCiAgICAgICAgICAgICAgICAgICAgICAgIHNsb3RzID0gYm9keT8uZGF0YT8uZ2V0QXZhaWxhYmxlU2xvdHM/LmF2YWlsYWJsZVNsb3RzID8/IGJvZHk/LmdldEF2YWlsYWJsZVNsb3RzPy5hdmFpbGFibGVTbG90cwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIGNhdGNoIChHZXRBdmFpbGFibGVTbG90c0V4Y2VwdGlvblJhbmRldnVVcGRhdGUpCiAgICAgICAgewogICAgICAgICAgICB0aHJvdzsKICAgICAgICB9CiAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBleCkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIERhdGEgPSBuZXcKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBzbG90Q2hlY2tSZXN1bHQgPSBuZXcKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZSA9IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICBrZXkgPSAib3V0cHV0LWVycm9yIiwKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBleC5NZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICB1bmF2YWlsYWJsZSA9IGNvbnRleHQuQm9keQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgVGltZVpvbmVJbmZvIFJlc29sdmVCdXNpbmVzc1RpbWVab25lKCkKICAgIHsKICAgICAgICB2YXIgaWQgPSBHZXRDb25maWdWYWx1ZSgiQXBwb2ludG1lbnRzOlRpbWVab25lIikgPz8gR2V0Q29uZmlnVmFsdWUoIkFQUE9JTlRNRU5UX1RJTUVaT05FIik7CiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPcldoaXRlU3BhY2UoaWQpKQogICAgICAgICAgICBpZCA9ICJFdXJvcGUvSXN0YW5idWwiOwoKICAgICAgICB0cnkgeyByZXR1cm4gVGltZVpvbmVJbmZvLkZpbmRTeXN0ZW1UaW1lWm9uZUJ5SWQoaWQuVHJpbSgpKTsgfSBjYXRjaCB7IH0KICAgICAgICB0cnkgeyByZXR1cm4gVGltZVpvbmVJbmZvLkZpbmRTeXN0ZW1UaW1lWm9uZUJ5SWQoIlR1cmtleSBTdGFuZGFyZCBUaW1lIik7IH0gY2F0Y2ggeyB9CiAgICAgICAgcmV0dXJuIFRpbWVab25lSW5mby5DcmVhdGVDdXN0b21UaW1lWm9uZSgiVFJUIiwgVGltZVNwYW4uRnJvbUhvdXJzKDMpLCAiVFJUIChVVEMrMykiLCAiVFJUIChVVEMrMykiKTsKICAgIH0KCiAgICBwcml2YXRlIGJvb2wgVHJ5UGFyc2VUb1V0YyhzdHJpbmcgZGF0ZVN0ciwgb3V0IERhdGVUaW1lIHV0Y0RhdGVUaW1lKQogICAgewogICAgICAgIHV0Y0RhdGVUaW1lID0gZGVmYXVsdDsKICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yRW1wdHkoZGF0ZVN0cikpIHJldHVybiBmYWxzZTsKICAgICAgICBpZiAoRGF0ZVRpbWVPZmZzZXQuVHJ5UGFyc2UoZGF0ZVN0ciwKICAgICAgICAgICAgU3lzdGVtLkdsb2JhbGl6YXRpb24uQ3VsdHVyZUluZm8uSW52YXJpYW50Q3VsdHVyZSwKICAgICAgICAgICAgU3lzdGVtLkdsb2JhbGl6YXRpb24uRGF0ZVRpbWVTdHlsZXMuTm9uZSwgb3V0IHZhciBkdG8pKQogICAgICAgIHsKICAgICAgICAgICAgdXRjRGF0ZVRpbWUgPSBkdG8uVXRjRGF0ZVRpbWU7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHJpdmF0ZSBEYXRlVGltZSBQYXJzZVRvVXRjKHN0cmluZyBkYXRlU3RyKQogICAgewogICAgICAgIHZhciBkdG8gPSBEYXRlVGltZU9mZnNldC5QYXJzZShkYXRlU3RyLAogICAgICAgICAgICBTeXN0ZW0uR2xvYmFsaXphdGlvbi5DdWx0dXJlSW5mby5JbnZhcmlhbnRDdWx0dXJlKTsKICAgICAgICByZXR1cm4gZHRvLlV0Y0RhdGVUaW1lOwogICAgfQoKICAgIHByaXZhdGUgc3RyaW5nIEdldFN0cmluZyhkeW5hbWljIG9iaiwgc3RyaW5nIG5hbWUpCiAgICB7CiAgICAgICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gbnVsbDsKICAgICAgICB0cnkKICAgICAgICB7CiAgICAgICAgICAgIGlmIChIYXNQcm9wZXJ0eShvYmosIG5hbWUpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB2YXIgdiA9IEdldFByb3BlcnR5VmFsdWUob2JqLCBuYW1lKTsKICAgICAgICAgICAgICAgIHJldHVybiB2Py5Ub1N0cmluZygpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNhdGNoIHsgfQogICAgICAgIHJldHVybiBudWxsOwogICAgfQp9Cg=="
|
|
294
294
|
}
|
|
295
295
|
}
|
|
296
296
|
]
|
|
@@ -460,7 +460,7 @@
|
|
|
460
460
|
],
|
|
461
461
|
"rule": {
|
|
462
462
|
"location": "./src/AlwaysTrueRule.csx",
|
|
463
|
-
"code": "
|
|
463
|
+
"code": "dXNpbmcgU3lzdGVtLlRocmVhZGluZy5UYXNrczsKdXNpbmcgQkJULldvcmtmbG93LlNjcmlwdGluZzsKCnB1YmxpYyBjbGFzcyBBbHdheXNUcnVlUnVsZSA6IFNjcmlwdEJhc2UsIElDb25kaXRpb25NYXBwaW5nCnsKICAgIHB1YmxpYyBUYXNrPGJvb2w+IEhhbmRsZXIoU2NyaXB0Q29udGV4dCBjb250ZXh0KQogICAgewogICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQodHJ1ZSk7CiAgICB9Cn0K"
|
|
464
464
|
}
|
|
465
465
|
}
|
|
466
466
|
]
|