@appconda/sdk 1.0.660 → 1.0.662
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.
|
@@ -1060,7 +1060,7 @@ export class EmploidService extends ServiceClient {
|
|
|
1060
1060
|
return await this.actionCall("wiki", "GetWikiRevisionById", payload);
|
|
1061
1061
|
}
|
|
1062
1062
|
async ListChatHistory(payload) {
|
|
1063
|
-
return await this.
|
|
1063
|
+
return await this.httpGet("/chat/history", payload);
|
|
1064
1064
|
}
|
|
1065
1065
|
}
|
|
1066
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2R1bGVzL2VtcGxvaWQvc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFlckQsTUFBTSxPQUFPLGNBQWUsU0FBUSxhQUFhO0lBQ25DLGNBQWM7UUFDcEIsT0FBTyw4QkFBOEIsQ0FBQztJQUMxQyxDQUFDO0lBRU8sU0FBUyxDQUFDLEtBQWE7UUFDM0IsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxRQUFnQjtRQUN6QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNkLE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzdCLE9BQU8sVUFBVSxDQUFDO1FBQ3RCLENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FBQztJQUN0RSxDQUFDO0lBRU8sa0JBQWtCO1FBQ3RCLE1BQU0sYUFBYSxHQUFHO1lBQ2xCLE9BQU8sT0FBTyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNyRSxPQUFPLE9BQU8sS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsNkJBQTZCLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDakYsT0FBTyxPQUFPLEtBQUssV0FBVyxD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QUFPLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRU0sS0FBSyxDQUFDLGlCQUFpQixDQUMxQixPQUFnRDtRQUVoRCxPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVNLEtBQUssQ0FBQyxXQUFXLENBQ3BCLE9BQTBDO1FBRTFDLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVEOzs0RUFFd0U7SUFFakUsS0FBSyxDQUFDLGtCQUFrQixDQUMzQixPQUFpRDtRQUVqRCxPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVNLEtBQUssQ0FBQyxxQkFBcUIsQ0FDOUIsT0FBb0Q7UUFFcEQsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLHVCQUF1QixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFTSxLQUFLLENBQUMsbUJBQW1CLENBQzVCLE9BQWtEO1FBRWxELE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FDeEIsT0FBOEM7UUFFOUMsT0FBTyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BELENBQUM7Q0FFSiIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHogZnJvbSBcInpvZFwiO1xuaW1wb3J0IHsgU2VydmljZUNsaWVudCB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlLWNsaWVudFwiO1xuXG5cbmltcG9ydCB7IEFnZ3JlZ2F0ZVJlY29yZHNTY2hlbWEsIEJ1bGtDcmVhdGVSZWNvcmRzU2NoZW1hLCBCdWxrRGVsZXRlUmVjb3Jkc1NjaGVtYSwgQnVsa1VwZGF0ZVJlY29yZHNTY2hlbWEsIENoYW5nZUFnZW50Zmxvd1Byb2plY3RTY2hlbWEsIENoZWNrUmVjb3JkUGVybWlzc2lvblNjaGVtYSwgQ29ubmVjdFRyZWxsb0ltcG9ydENyZWRlbnRpYWxTY2hlbWEsIENvdW50UmVjb3Jkc1NjaGVtYSwgQ3JlYXRlQWdlbnRGbG93Rm9sZGVyU2NoZW1hLCBDcmVhdGVBZ2VudEZsb3dTY2hlbWEsIENyZWF0ZUFzc2lzdGFudENoYW5uZWxTY2hlbWEsIENyZWF0ZUFzc2lzdGFudENvbnN0cmFpbnRTY2hlbWEsIENyZWF0ZUFzc2lzdGFudERhdGFzb3VyY2VTY2hlbWEsIENyZWF0ZUFzc2lzdGFudEluc3RydWN0aW9uU2NoZW1hLCBDcmVhdGVBc3Npc3RhbnRTY2hlbWEsIENyZWF0ZUFzc2lzdGFudFNraWxsU2NoZW1hLCBDcmVhdGVDaGFubmVsU2NoZW1hLCBDcmVhdGVDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGVTY2hlbWEsIENyZWF0ZUNvbGxlY3Rpb25CdXR0b25TY2hlbWEsIENyZWF0ZUNvbGxlY3Rpb25GaWVsZFNjaGVtYSwgQ3JlYXRlQ29sbGVjdGlvblJlbGF0aW9uU2NoZW1hLCBDcmVhdGVDb2xsZWN0aW9uU2NoZW1hLCBDcmVhdGVDb2xsZWN0aW9uVmlld1NjaGVtYSwgQ3JlYXRlQ29tbWFuZFNjaGVtYSwgQ3JlYXRlQ29tcGV0ZW5jeVNjaGVtYSwgQ3JlYXRlQ29uc3RyYWludFNjaGVtYSwgQ3JlYXRlRGF0YU1vZGVsU2NoZW1hLCBDcmVhdGVEYXRhc291cmNlU2NoZW1hLCBDcmVhdGVEb21haW5Ub3BpY1NjaGVtYSwgQ3JlYXRlRHJpdmVGb2xkZXJTY2hlbWEsIENyZWF0ZURyaXZlUm9vdEZvbGRlclNjaGVtYSwgQ3JlYXRlRHJpdmVSb290U2NoZW1hLCBDcmVhdGVFbXBsb2lkU2NoZW1hLCBDcmVhdGVFeHRlbnNpb25TY2hlbWEsIENyZWF0ZUlucHV0U2NoZW1hLCBDcmVhdGVJbnN0cnVjdGlvblNjaGVtYSwgQ3JlYXRlSm9iRGVmaW5pdGlvblNjaGVtYSwgQ3JlYXRlS25vd2xlZGdlU2NoZW1hLCBDcmVhdGVPY2N1cGF0aW9uU2NoZW1hLCBDcmVhdGVSZWNvcmRTY2hlbWEsIENyZWF0ZVNjb3BlU2NoZW1hLCBDcmVhdGVTa2lsbFNjaGVtYSwgQ3JlYXRlU3RyZWFtSWRTY2hlbWEsIENyZWF0ZVRhc2tUZW1wbGF0ZVNjaGVtYSwgQ3JlYXRlVGVhbVNjaGVtYSwgQ3JlYXRlVG9waWNTY2hlbWEsIENyZWF0ZVdpa2lBaUNvbW1hbmRTY2hlbWEsIENyZWF0ZVdpa2lDb21tZW50U2NoZW1hLCBDcmVhdGVXaWtpUGFnZVNjaGVtYSwgQ3JlYXRlV2lraVJlZmVyZW5jZVNjaGVtYSwgQ3JlYXRlV2lraVJldmlzaW9uU2NoZW1hLCBDcmVhdGVXb3JrZXJTY2hlbWEsIENyZWF0ZVdvcmtlclRvcGljU2NoZW1hLCBEZWxldGVBZ2VudEZsb3dGb2xkZXJTY2hlbWEsIERlbGV0ZUFnZW50Rmxvd1NjaGVtYSwgRGVsZXRlQXNzaXN0YW50Q2hhbm5lbFNjaGVtYSwgRGVsZXRlQXNzaXN0YW50RGF0YXNvdXJjZVNjaGVtYSwgRGVsZXRlQXNzaXN0YW50U2NoZW1hLCBEZWxldGVBc3Npc3RhbnRTa2lsbFNjaGVtYSwgRGVsZXRlQ2hhbm5lbFNjaGVtYSwgRGVsZXRlQ2hhdEJ5SWRTY2hlbWEsIERlbGV0ZUNvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZVNjaGVtYSwgRGVsZXRlQ29sbGVjdGlvbkJ1dHRvblNjaGVtYSwgRGVsZXRlQ29sbGVjdGlvbkZpZWxkU2NoZW1hLCBEZWxldGVDb2xsZWN0aW9uUmVsYXRpb25TY2hlbWEsIERlbGV0ZUNvbGxlY3Rpb25WaWV3U2NoZW1hLCBEZWxldGVDb21tYW5kU2NoZW1hLCBEZWxldGVDb21wZXRlbmN5U2NoZW1hLCBEZWxldGVDb25zdHJhaW50U2NoZW1hLCBEZWxldGVEYXRhTW9kZWxTY2hlbWEsIERlbGV0ZURhdGFzb3VyY2VTY2hlbWEsIERlbGV0ZURvY3VtZW50c0J5SWRBZnRlclRpbWVzdGFtcFNjaGVtYSwgRGVsZXRlRG9tYWluVG9waWNTY2hlbWEsIERlbGV0ZURyaXZlSXRlbVNjaGVtYSwgRGVsZXRlRHJpdmVSb290SXRlbVNjaGVtYSwgRGVsZXRlRHJpdmVSb290U2NoZW1hLCBEZWxldGVFbXBsb2lkU2NoZW1hLCBEZWxldGVFeHRlbnNpb25TY2hlbWEsIERlbGV0ZUlucHV0U2NoZW1hLCBEZWxldGVJbnN0cnVjdGlvblNjaGVtYSwgRGVsZXRlSm9iRGVmaW5pdGlvblNjaGVtYSwgRGVsZXRlS25vd2xlZGdlU2NoZW1hLCBEZWxldGVNZXNzYWdlc0J5Q2hhdElkQWZ0ZXJUaW1lc3RhbXBTY2hlbWEsIERlbGV0ZU9jY3VwYXRpb25TY2hlbWEsIERlbGV0ZVJlY29yZFNjaGVtYSwgRGVsZXRlU2NvcGVTY2hlbWEsIERlbGV0ZVNraWxsU2NoZW1hLCBEZWxldGVUYXNrVGVtcGxhdGVTY2hlbWEsIERlbGV0ZVRlYW1TY2hlbWEsIERlbGV0ZVRvcGljU2NoZW1hLCBEZWxldGVXaWtpQ29tbWVudFNjaGVtYSwgRGVsZXRlV2lraVBhZ2VTY2hlbWEsIERlbGV0ZVdpa2lSZWZlcmVuY2VTY2hlbWEsIERlbGV0ZVdvcmtlclNjaGVtYSwgRGVsZXRlV29ya2VyVG9waWNTY2hlbWEsIERpc3RpbmN0RmllbGRWYWx1ZXNTY2hlbWEsIER1cGxpY2F0ZUFnZW50Rmxvd1NjaGVtYSwgRHVwbGljYXRlUmVjb3JkU2NoZW1hLCBFbmhhbmNlVG9waWNTY2hlbWEsIEVuc3VyZUFpcnRhYmxlSW1wb3J0Q3JlZGVudGlhbFNjaGVtYSwgRW5zdXJlRHJpdmVQcm92aWRlckNyZWRlbnRpYWxTY2hlbWEsIEVuc3VyZUdtYWlsSW1wb3J0Q3JlZGVudGlhbFNjaGVtYSwgRW5zdXJlR2l0aHViSW1wb3J0Q3JlZGVudGlhbFNjaGVtYSwgRW5zdXJlSmlyYUltcG9ydENyZWRlbnRpYWxTY2hlbWEsIEVuc3VyZUxpbmVhckltcG9ydENyZWRlbnRpYWxTY2hlbWEsIEVuc3VyZU5vdGlvbkltcG9ydENyZWRlbnRpYWxTY2hlbWEsIEVuc3VyZVRyZWxsb0ltcG9ydENyZWRlbnRpYWxTY2hlbWEsIEV4ZWN1dGVDb2xsZWN0aW9uQWlGaWVsZFNjaGVtYSwgRXhlY3V0ZUNvbGxlY3Rpb25CdXR0b25TY2hlbWEsIEV4cG9ydERhdGFNb2RlbFNjaGVtYSwgR2V0Q2hhdEJ5SWRTY2hlbWEsIEdldENoYXRzQnlVc2VySWRTY2hlbWEsIEdldENvbGxlY3Rpb25CeUlkU2NoZW1hLCBHZXRDb2xsZWN0aW9uU2NoZW1hU2NoZW1hLCBHZXREYXRhTW9kZWxCeUlkU2NoZW1hLCBHZXREb2N1bWVudEJ5SWRTY2hlbWEsIEdldERvY3VtZW50c0J5SWRTY2hlbWEsIEdldERyaXZlRGVsZXRlSW1wYWN0U2NoZW1hLCBHZXREcml2ZVJvb3REZWxldGVJbXBhY3RTY2hlbWEsIEdldExhdGVzdFdpa2lSZXZpc2lvblNjaGVtYSwgR2V0TWFya2V0U3RvcmVJdGVtU2NoZW1hLCBHZXRNZXNzYWdlQnlJZFNjaGVtYSwgR2V0TWVzc2FnZUNvdW50QnlVc2VySWRTY2hlbWEsIEdldE1lc3NhZ2VzQnlDaGF0SWRTY2hlbWEsIEdldFByaXZhdGVBZ2VudEZsb3dGb2xkZXJTY2hlbWEsIEdldFJlY29yZEJ5SWRTY2hlbWEsIEdldFJlY29yZFJlbGF0aW9uc1NjaGVtYSwgR2V0U2NvcGVCeVR5cGVTY2hlbWEsIEdldFN0cmVhbUlkc0J5Q2hhdElkU2NoZW1hLCBHZXRTdWdnZXN0aW9uc0J5RG9jdW1lbnRJZFNjaGVtYSwgR2V0Vm90ZXNCeUNoYXRJZFNjaGVtYSwgR2V0V2lraUFpU2V0dGluZ3NTY2hlbWEsIEdldFdpa2lQYWdlQnlJZFNjaGVtYSwgR2V0V2lraVBhZ2VCeVNsdWdTY2hlbWEsIEdldFdpa2lSZWZlcmVuY2VCeUlkU2NoZW1hLCBHZXRXaWtpUmV2aXNpb25CeUlkU2NoZW1hLCBHZXRXaWtpVHJlZVNjaGVtYSwgR3JhbnRSZWNvcmRQZXJtaXNzaW9uU2NoZW1hLCBHcm91cFJlY29yZHNTY2hlbWEsIEhhcmREZWxldGVEYXRhTW9kZWxTY2hlbWEsIExpc3RBZ2VudEZsb3dGb2xkZXJzU2NoZW1hLCBMaXN0QWdlbnRGbG93c1NjaGVtYSwgTGlzdEFpcnRhYmxlSW1wb3J0U291cmNlc1NjaGVtYSwgTGlzdEFzc2lzdGFudENoYW5uZWxzU2NoZW1hLCBMaXN0QXNzaXN0YW50Q29uc3RyYWludHNTY2hlbWEsIExpc3RBc3Npc3RhbnREYXRhc291cmNlc1NjaGVtYSwgTGlzdEFzc2lzdGFudEluc3RydWN0aW9uc1NjaGVtYSwgTGlzdEFzc2lzdGFudFNraWxsc1NjaGVtYSwgTGlzdEFzc2lzdGFudHNTY2hlbWEsIExpc3RDaGFubmVsc1NjaGVtYSwgTGlzdENoYXRIaXN0b3J5U2NoZW1hLCBMaXN0Q29sbGVjdGlvbkF1dG9tYXRpb25SdWxlc1NjaGVtYSwgTGlzdENvbGxlY3Rpb25CdXR0b25zU2NoZW1hLCBMaXN0Q29sbGVjdGlvblJlbGF0aW9uc1NjaGVtYSwgTGlzdENvbGxlY3Rpb25zU2NoZW1hLCBMaXN0Q29sbGVjdGlvblZpZXdzU2NoZW1hLCBMaXN0Q29tbWFuZHNTY2hlbWEsIExpc3RDb21wZXRlbmNpZXNTY2hlbWEsIExpc3RDb25zdHJhaW50c1NjaGVtYSwgTGlzdERhdGFNb2RlbHNTY2hlbWEsIExpc3REYXRhc291cmNlc1NjaGVtYSwgTGlzdERvbWFpblRvcGljc1NjaGVtYSwgTGlzdERyaXZlSXRlbXNTY2hlbWEsIExpc3REcml2ZVByb3ZpZGVyRm9sZGVyc1NjaGVtYSwgTGlzdERyaXZlUm9vdEl0ZW1zU2NoZW1hLCBMaXN0RHJpdmVSb290c1NjaGVtYSwgTGlzdERyaXZlUm9vdFRyZWVTY2hlbWEsIExpc3REcml2ZVRyZWVTY2hlbWEsIExpc3RFbXBsb2lkc1BhZ2luYXRlZFNjaGVtYSwgTGlzdEVtcGxvaWRzU2NoZW1hLCBMaXN0RXh0ZW5zaW9uc1NjaGVtYSwgTGlzdEdtYWlsSW1wb3J0U291cmNlc1NjaGVtYSwgTGlzdEdpdGh1YkltcG9ydFNvdXJjZXNTY2hlbWEsIExpc3RJbnB1dFNjaGVtYSwgTGlzdEluc3RydWN0aW9uc1NjaGVtYSwgTGlzdEppcmFJbXBvcnRTb3VyY2VzU2NoZW1hLCBMaXN0Sm9iRGVmaW5pdGlvblNjaGVtYSwgTGlzdEtub3dsZWRnZXNTY2hlbWEsIExpc3RMaW5lYXJJbXBvcnRTb3VyY2VzU2NoZW1hLCBMaXN0TWFya2V0U3RvcmVJdGVtc1NjaGVtYSwgTGlzdE5vdGlvbkltcG9ydFNvdXJjZXNTY2hlbWEsIExpc3RPY2N1cGF0aW9uc1NjaGVtYSwgTGlzdFJlY29yZFBlcm1pc3Npb25zU2NoZW1hLCBMaXN0UmVjb3Jkc1NjaGVtYSwgTGlzdFJlbGF0aW9uQ2FuZGlkYXRlc1NjaGVtYSwgTGlzdFNjb3Blc1NjaGVtYSwgTGlzdFNraWxsc1NjaGVtYSwgTGlzdFRhc2tUZW1wbGF0ZXNTY2hlbWEsIExpc3RUZWFtc1NjaGVtYSwgTGlzdFRvcGljc1NjaGVtYSwgTGlzdFRyZWxsb0ltcG9ydFNvdXJjZXNTY2hlbWEsIExpc3RXaWtpQWlDb21tYW5kc1NjaGVtYSwgTGlzdFdpa2lDb21tZW50c1NjaGVtYSwgTGlzdFdpa2lQYWdlc1NjaGVtYSwgTGlzdFdpa2lSZWZlcmVuY2VzU2NoZW1hLCBMaXN0V29ya2Vyc1NjaGVtYSwgTGlzdFdvcmtlclRvcGljc1NjaGVtYSwgTW92ZURyaXZlSXRlbVNjaGVtYSwgTW92ZURyaXZlUm9vdEl0ZW1TY2hlbWEsIE1vdmVXaWtpUGFnZVNjaGVtYSwgUHJlcGFyZURyaXZlVXBsb2FkU2NoZW1hLCBQcmV2aWV3QWlydGFibGVJbXBvcnRTY2hlbWEsIFByZXZpZXdDc3ZJbXBvcnRTY2hlbWEsIFByZXZpZXdHbWFpbEltcG9ydFNjaGVtYSwgUHJldmlld0dpdGh1YkltcG9ydFNjaGVtYSwgUHJldmlld0ppcmFJbXBvcnRTY2hlbWEsIFByZXZpZXdMaW5lYXJJbXBvcnRTY2hlbWEsIFByZXZpZXdOb3Rpb25JbXBvcnRTY2hlbWEsIFByZXZpZXdUcmVsbG9JbXBvcnRTY2hlbWEsIFByZXZpZXdWYWxpZGF0aW9uRXJyb3JzU2NoZW1hLCBQdWJsaXNoRG9tYWluU2NoZW1hLCBQdWJsaXNoRW1wbG9pZFNjaGVtYSwgUHVibGlzaFdvcmtlclRvTWFya2V0U3RvcmVTY2hlbWEsIFF1ZXJ5UmVjb3Jkc1NjaGVtYSwgUmVhZERyaXZlUm9vdEZpbGVDb250ZW50U2NoZW1hLCBSZW5hbWVEcml2ZUl0ZW1TY2hlbWEsIFJlbmFtZURyaXZlUm9vdEl0ZW1TY2hlbWEsIFJlb3JkZXJDb2xsZWN0aW9uRmllbGRzU2NoZW1hLCBSZXNvbHZlQ29sbGVjdGlvbkZpbGVWaWV3U2NoZW1hLCBSZXNvbHZlRHJpdmVEb3dubG9hZFNjaGVtYSwgUmVzb2x2ZURyaXZlUm9vdERvd25sb2FkU2NoZW1hLCBSZXNvbHZlU2NvcGVGaWxlVmlld1NjaGVtYSwgUmVzb2x2ZVdpa2lGaWxlVmlld1NjaGVtYSwgUmVzdG9yZURhdGFNb2RlbFNjaGVtYSwgUmVzdG9yZVJlY29yZFNjaGVtYSwgUmVzdG9yZVdpa2lQYWdlU2NoZW1hLCBSZXZva2VSZWNvcmRQZXJtaXNzaW9uU2NoZW1hLCBSdW5BaXJ0YWJsZUltcG9ydFNjaGVtYSwgUnVuQ3N2SW1wb3J0U2NoZW1hLCBSdW5HbWFpbEltcG9ydFNjaGVtYSwgUnVuR2l0aHViSW1wb3J0U2NoZW1hLCBSdW5KaXJhSW1wb3J0U2NoZW1hLCBSdW5MaW5lYXJJbXBvcnRTY2hlbWEsIFJ1bk5vdGlvbkltcG9ydFNjaGVtYSwgUnVuVHJlbGxvSW1wb3J0U2NoZW1hLCBSdW5XaWtpQWlDb21tYW5kU2NoZW1hLCBTYXZlQ2hhdFNjaGVtYSwgU2F2ZURvY3VtZW50U2NoZW1hLCBTYXZlTWVzc2FnZXNTY2hlbWEsIFNhdmVTdWdnZXN0aW9uc1NjaGVtYSwgU2VhcmNoRHJpdmVJdGVtc1NjaGVtYSwgU2VhcmNoRHJpdmVSb290SXRlbXNTY2hlbWEsIFNlYXJjaFJlY29yZHNTY2hlbWEsIFNldFdpa2lBaVNldHRpbmdzU2NoZW1hLCBTZXRXaWtpUGFnZVVzZXJTdGF0ZVNjaGVtYSwgVXBkYXRlQWdlbnRGbG93Rm9sZGVyU2NoZW1hLCBVcGRhdGVBZ2VudEZsb3dTY2hlbWEsIFVwZGF0ZUFzc2lzdGFudENoYW5uZWxTY2hlbWEsIFVwZGF0ZUFzc2lzdGFudERhdGFzb3VyY2VTY2hlbWEsIFVwZGF0ZUFzc2lzdGFudFNjaGVtYSwgVXBkYXRlQXNzaXN0YW50U2tpbGxTY2hlbWEsIFVwZGF0ZUNoYW5uZWxTY2hlbWEsIFVwZGF0ZUNoYXRMYXN0Q29udGV4dEJ5SWRTY2hlbWEsIFVwZGF0ZUNoYXRWaXNpYmxpdHlCeUlkU2NoZW1hLCBVcGRhdGVDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGVTY2hlbWEsIFVwZGF0ZUNvbGxlY3Rpb25CdXR0b25TY2hlbWEsIFVwZGF0ZUNvbGxlY3Rpb25GaWVsZFNjaGVtYSwgVXBkYXRlQ29sbGVjdGlvblJlbGF0aW9uU2NoZW1hLCBVcGRhdGVDb2xsZWN0aW9uVmlld1NjaGVtYSwgVXBkYXRlQ29tbWFuZFNjaGVtYSwgVXBkYXRlQ29tcGV0ZW5jeVNjaGVtYSwgVXBkYXRlQ29uc3RyYWludFNjaGVtYSwgVXBkYXRlRGF0YU1vZGVsU2NoZW1hLCBVcGRhdGVEYXRhc291cmNlU2NoZW1hLCBVcGRhdGVEb21haW5Ub3BpY1NjaGVtYSwgVXBkYXRlRW1wbG9pZFNjaGVtYSwgVXBkYXRlRXh0ZW5zaW9uU2NoZW1hLCBVcGRhdGVJbnB1dFNjaGVtYSwgVXBkYXRlSW5zdHJ1Y3Rpb25TY2hlbWEsIFVwZGF0ZUpvYkRlZmluaXRpb25TY2hlbWEsIFVwZGF0ZUtub3dsZWRnZVNjaGVtYSwgVXBkYXRlT2NjdXBhdGlvblNjaGVtYSwgVXBkYXRlUmVjb3JkU2NoZW1hLCBVcGRhdGVTY29wZVNjaGVtYSwgVXBkYXRlU2tpbGxTY2hlbWEsIFVwZGF0ZVRhc2tUZW1wbGF0ZVNjaGVtYSwgVXBkYXRlVGVhbVNjaGVtYSwgVXBkYXRlVG9waWNTY2hlbWEsIFVwZGF0ZVdpa2lDb21tZW50U2NoZW1hLCBVcGRhdGVXaWtpUGFnZVNjaGVtYSwgVXBkYXRlV2lraVJlZmVyZW5jZVNjaGVtYSwgVXBkYXRlV29ya2VyU2NoZW1hLCBVcGRhdGVXb3JrZXJUb3BpY1NjaGVtYSwgVXBsb2FkQ29sbGVjdGlvbkZpbGVTY2hlbWEsIFVwbG9hZERyaXZlUm9vdEZpbGVzU2NoZW1hLCBVcGxvYWRFZGl0b3JGaWxlU2NoZW1hLCBVcHNlcnRSZWNvcmRTY2hlbWEsIFZhbGlkYXRlUmVjb3JkU2NoZW1hLCBWb3RlTWVzc2FnZVNjaGVtYSB9IGZyb20gXCIuL3NjaGVtYVwiO1xuaW1wb3J0IHsgVEFnZW50RmxvdywgVEFnZW50Rmxvd0ZvbGRlciwgVEFzc2lzdGFudCwgVEFzc2lzdGFudENoYW5uZWwsIFRBc3Npc3RhbnRDb25zdHJhaW50LCBUQXNzaXN0YW50RGF0YXNvdXJjZSwgVEFzc2lzdGFudEluc3RydWN0aW9uLCBUQXNzaXN0YW50U2tpbGwsIFRDaGFubmVsLCBUQ2hhdCwgVENvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZSwgVENvbGxlY3Rpb25CdXR0b24sIFRDb2xsZWN0aW9uUmVsYXRpb24sIFRDb2xsZWN0aW9uVmlldywgVENvbW1hbmQsIFRDb21wZXRlbmN5LCBUQ29uc3RyYWludCwgVERhdGFzb3VyY2UsIFREZWxldGVBZ2VudEZsb3dSZXN1bHQsIFREb2N1bWVudCwgVERvbWFpblRvcGljLCBURHJpdmVEZWxldGVJbXBhY3QsIFREcml2ZUZpbGVDb250ZW50LCBURHJpdmVJdGVtLCBURHJpdmVQcm92aWRlckZvbGRlciwgVERyaXZlUm9vdCwgVERyaXZlUm9vdFByb3ZpZGVyLCBURHJpdmVUcmVlTm9kZSwgVEVtcGxvaWQsIFRFbmhhbmNlVG9waWMsIFRFeHRlbnNpb24sIFRJbnB1dCwgVEluc3RydWN0aW9uLCBUSm9iRGVmaW5pdGlvbiwgVEtub3dsZWRnZSwgVE1hcmtldFN0b3JlSXRlbSwgVE9jY3VwYXRpb24sIFRQYWdpbmF0ZWRFbXBsb2lkc1Jlc3VsdCwgVFByZXBhcmVkRHJpdmVVcGxvYWQsIFRQdWJsaXNoRW1wbG9pZCwgVFB1Ymxpc2hXb3JrZXJUb01hcmtldFN0b3JlLCBUUmVsYXRpb25SZWNvcmRPcHRpb24sIFRTY29wZSwgVFNraWxsLCBUU3RyZWFtSWQsIFRUYXNrVGVtcGxhdGUsIFRUZWFtLCBUVG9waWMsIFRVcGxvYWRlZEZpbGUsIFRXaWtpQWlDb21tYW5kLCBUV2lraUFpUnVuUmVzdWx0LCBUV2lraUFpU2V0dGluZywgVFdpa2lDb21tZW50LCBUV2lraUNvbW1lbnRQYWdpbmF0aW9uLCBUV2lraUZpbGVWaWV3UmVzb2x1dGlvbiwgVFdpa2lSZWZlcmVuY2UsIFRXaWtpUmVmZXJlbmNlTGlzdFJlc3BvbnNlLCBUV29ya2VyLCBUV29ya2VyVG9waWMgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgSW1wb3J0RGF0YU1vZGVsU2NoZW1hIH0gZnJvbSBcIi4vc2NoZW1hXCI7XG5pbXBvcnQge1xuICAgIENyZWF0ZVdpa2lTcGFjZVNjaGVtYSxcbiAgICBEZWxldGVXaWtpU3BhY2VTY2hlbWEsXG4gICAgR2V0UHJpdmF0ZVdpa2lTcGFjZVNjaGVtYSxcbiAgICBMaXN0V2lraVNwYWNlc1NjaGVtYSxcbiAgICBVcGRhdGVXaWtpU3BhY2VTY2hlbWEsXG59IGZyb20gXCIuL3NjaGVtYVwiO1xuaW1wb3J0IHR5cGUgeyBUV2lraVNwYWNlIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuZXhwb3J0IGNsYXNzIEVtcGxvaWRTZXJ2aWNlIGV4dGVuZHMgU2VydmljZUNsaWVudCB7XG4gICAgcHJvdGVjdGVkIGdldFNlcnZpY2VOYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnY29tLmFwcGNvbmRhLnNlcnZpY2UuZW1wbG9pZCc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0h0dHBVcmwodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gL15odHRwcz86XFwvXFwvL2kudGVzdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBub3JtYWxpemVTdG9yYWdlUGF0aChwYXRoTGlrZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IFN0cmluZyhwYXRoTGlrZSB8fCBcIlwiKS50cmltKCk7XG4gICAgICAgIGlmICghbm9ybWFsaXplZCkge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0h0dHBVcmwobm9ybWFsaXplZCkpIHtcbiAgICAgICAgICAgIHJldHVybiBub3JtYWxpemVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWQuc3RhcnRzV2l0aChcIi9cIikgPyBub3JtYWxpemVkIDogYC8ke25vcm1hbGl6ZWR9YDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc29sdmVFbnZFbmRwb2ludCgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBlbnZDYW5kaWRhdGVzID0gW1xuICAgICAgICAgICAgdHlwZW9mIHByb2Nlc3MgIT09IFwidW5kZWZpbmVkXCIgPyBwcm9jZXNzPy5lbnY/LkFQUENPTkRBX0VORFBPSU5UIDogXCJcIixcbiAgICAgICAgICAgIHR5cGVvZiBwcm9jZXNzICE9PSBcInVuZGVmaW5lZFwiID8gcHJvY2Vzcz8uZW52Py5ORVhUX1BVQkxJQ19BUFBDT05EQV9FTkRQT0lOVCA6IFwiXCIsXG4gICAgICAgICAgICB0eXBlb2YgcHJvY2VzcyAhPT0gXCJ1bmRlZmluZWRcIiA/IHByb2Nlc3M/LmVudj8uX0FQUF9BUFBDT05EQV9FTkRQT0lOVCA6IFwiXCIsXG4gICAgICAgIF07XG5cbiAgICAgICAgZm9yIChjb25zdCBjYW5kaWRhdGUgb2YgZW52Q2FuZGlkYXRlcykge1xuICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IFN0cmluZyhjYW5kaWRhdGUgfHwgXCJcIikudHJpbSgpLnJlcGxhY2UoL1xcLyskLywgXCJcIik7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0h0dHBVcmwobm9ybWFsaXplZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9ybWFsaXplZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzb2x2ZVN0b3JhZ2VWaWV3VXJsKHN0b3JhZ2VQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBub3JtYWxpemVkUGF0aCA9IHRoaXMubm9ybWFsaXplU3RvcmFnZVBhdGgoc3RvcmFnZVBhdGgpO1xuICAgICAgICBpZiAoIW5vcm1hbGl6ZWRQYXRoKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzSHR0cFVybChub3JtYWxpemVkUGF0aCkpIHtcbiAgICAgICAgICAgIHJldHVybiBub3JtYWxpemVkUGF0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVuZHBvaW50ID0gU3RyaW5nKHRoaXMuY2xpZW50LmNvbmZpZy5lbmRwb2ludCB8fCBcIlwiKS50cmltKCkucmVwbGFjZSgvXFwvKyQvLCBcIlwiKTtcbiAgICAgICAgaWYgKHRoaXMuaXNIdHRwVXJsKGVuZHBvaW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIGAke2VuZHBvaW50fSR7bm9ybWFsaXplZFBhdGh9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICBjb25zdCBwcm90b2NvbCA9IHdpbmRvdz8ubG9jYXRpb24/LnByb3RvY29sIHx8IFwiXCI7XG4gICAgICAgICAgICBpZiAocHJvdG9jb2wgJiYgcHJvdG9jb2wgIT09IFwiZmlsZTpcIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbiA9IFN0cmluZyh3aW5kb3c/LmxvY2F0aW9uPy5vcmlnaW4gfHwgXCJcIikucmVwbGFjZSgvXFwvKyQvLCBcIlwiKTtcbiAgICAgICAgICAgICAgICBpZiAob3JpZ2luKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRFbmRwb2ludCA9IGVuZHBvaW50XG4gICAgICAgICAgICAgICAgICAgICAgICA/IChlbmRwb2ludC5zdGFydHNXaXRoKFwiL1wiKSA/IGVuZHBvaW50IDogYC8ke2VuZHBvaW50fWApXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtvcmlnaW59JHtub3JtYWxpemVkRW5kcG9pbnR9JHtub3JtYWxpemVkUGF0aH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVudkVuZHBvaW50ID0gdGhpcy5yZXNvbHZlRW52RW5kcG9pbnQoKTtcbiAgICAgICAgaWYgKGVudkVuZHBvaW50KSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7ZW52RW5kcG9pbnR9JHtub3JtYWxpemVkUGF0aH1gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWRQYXRoO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVFbXBsb2lkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUVtcGxvaWRTY2hlbWE+KTogUHJvbWlzZTxURW1wbG9pZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0NyZWF0ZUVtcGxvaWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlRW1wbG9pZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVFbXBsb2lkU2NoZW1hPik6IFByb21pc2U8VEVtcGxvaWQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdVcGRhdGVFbXBsb2lkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUVtcGxvaWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlRW1wbG9pZFNjaGVtYT4pOiBQcm9taXNlPFRFbXBsb2lkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnRGVsZXRlRW1wbG9pZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQdWJsaXNoRW1wbG9pZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBQdWJsaXNoRW1wbG9pZFNjaGVtYT4pOiBQcm9taXNlPFRQdWJsaXNoRW1wbG9pZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ1B1Ymxpc2hFbXBsb2lkJywgcGF5bG9hZCk7XG4gICAgfVxuICAgIHB1YmxpYyBhc3luYyBMaXN0RW1wbG9pZHMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEVtcGxvaWRzU2NoZW1hPik6IFByb21pc2U8VEVtcGxvaWRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0xpc3RFbXBsb2lkcycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0RW1wbG9pZHNQYWdpbmF0ZWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEVtcGxvaWRzUGFnaW5hdGVkU2NoZW1hPik6IFByb21pc2U8VFBhZ2luYXRlZEVtcGxvaWRzUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnTGlzdEVtcGxvaWRzUGFnaW5hdGVkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUluc3RydWN0aW9uKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUluc3RydWN0aW9uU2NoZW1hPik6IFByb21pc2U8VEluc3RydWN0aW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnQ3JlYXRlSW5zdHJ1Y3Rpb24nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdEluc3RydWN0aW9ucyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0SW5zdHJ1Y3Rpb25zU2NoZW1hPik6IFByb21pc2U8VEluc3RydWN0aW9uW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdMaXN0SW5zdHJ1Y3Rpb25zJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUluc3RydWN0aW9uKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUluc3RydWN0aW9uU2NoZW1hPik6IFByb21pc2U8VEluc3RydWN0aW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnVXBkYXRlSW5zdHJ1Y3Rpb24nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlSW5zdHJ1Y3Rpb24ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlSW5zdHJ1Y3Rpb25TY2hlbWE+KTogUHJvbWlzZTxUSW5zdHJ1Y3Rpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdEZWxldGVJbnN0cnVjdGlvbicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVDb25zdHJhaW50KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUNvbnN0cmFpbnRTY2hlbWE+KTogUHJvbWlzZTxUQ29uc3RyYWludD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0NyZWF0ZUNvbnN0cmFpbnQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdENvbnN0cmFpbnRzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RDb25zdHJhaW50c1NjaGVtYT4pOiBQcm9taXNlPFRDb25zdHJhaW50W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdMaXN0Q29uc3RyYWludHMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlQ29uc3RyYWludChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVDb25zdHJhaW50U2NoZW1hPik6IFByb21pc2U8VENvbnN0cmFpbnQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdVcGRhdGVDb25zdHJhaW50JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUNvbnN0cmFpbnQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlQ29uc3RyYWludFNjaGVtYT4pOiBQcm9taXNlPFRDb25zdHJhaW50PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnRGVsZXRlQ29uc3RyYWludCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0U2NvcGVzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RTY29wZXNTY2hlbWE+KTogUHJvbWlzZTxUU2NvcGVbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0xpc3RTY29wZXMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0U2NvcGVCeVR5cGUocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0U2NvcGVCeVR5cGVTY2hlbWE+KTogUHJvbWlzZTxUU2NvcGUgfCBudWxsPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnR2V0U2NvcGVCeVR5cGUnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlU2NvcGUocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlU2NvcGVTY2hlbWE+KTogUHJvbWlzZTxUU2NvcGU+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdDcmVhdGVTY29wZScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVTY29wZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVTY29wZVNjaGVtYT4pOiBQcm9taXNlPFRTY29wZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ1VwZGF0ZVNjb3BlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZVNjb3BlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVNjb3BlU2NoZW1hPik6IFByb21pc2U8VFNjb3BlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnRGVsZXRlU2NvcGUnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBsb2FkU2NvcGVGaWxlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGxvYWRFZGl0b3JGaWxlU2NoZW1hPlxuICAgICk6IFByb21pc2U8VFVwbG9hZGVkRmlsZT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmFjdGlvbkNhbGw8YW55PihcInNjb3BlXCIsIFwiVXBsb2FkRmlsZVwiLCBwYXlsb2FkKTtcbiAgICAgICAgY29uc3Qgc3RvcmFnZVBhdGggPVxuICAgICAgICAgICAgdGhpcy5ub3JtYWxpemVTdG9yYWdlUGF0aChTdHJpbmcocmVzdWx0Py5wYXRoIHx8IHJlc3VsdD8uZmlsZVBhdGggfHwgcmVzdWx0Py51cmwgfHwgXCJcIikpO1xuICAgICAgICBjb25zdCByZXNvbHZlZFVybCA9IHRoaXMucmVzb2x2ZVN0b3JhZ2VWaWV3VXJsKHN0b3JhZ2VQYXRoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICAgICAgZmlsZUlkOiBTdHJpbmcocmVzdWx0Py5maWxlSWQgfHwgcmVzdWx0Py5pZCB8fCBwYXlsb2FkLmF0dGFjaG1lbnRJZCB8fCBcIlwiKSxcbiAgICAgICAgICAgIHBhdGg6IHN0b3JhZ2VQYXRoLFxuICAgICAgICAgICAgZmlsZVBhdGg6IHJlc29sdmVkVXJsIHx8IHN0b3JhZ2VQYXRoLFxuICAgICAgICAgICAgdXJsOiByZXNvbHZlZFVybCB8fCBzdG9yYWdlUGF0aCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUmVzb2x2ZVNjb3BlRmlsZVZpZXcoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJlc29sdmVTY29wZUZpbGVWaWV3U2NoZW1hPlxuICAgICk6IFByb21pc2U8VFdpa2lGaWxlVmlld1Jlc29sdXRpb24+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5hY3Rpb25DYWxsPGFueT4oXCJzY29wZVwiLCBcIlJlc29sdmVTY29wZUZpbGVWaWV3XCIsIHBheWxvYWQpO1xuICAgICAgICBjb25zdCBzdG9yYWdlUGF0aCA9XG4gICAgICAgICAgICB0aGlzLm5vcm1hbGl6ZVN0b3JhZ2VQYXRoKFN0cmluZyhyZXN1bHQ/LnBhdGggfHwgcmVzdWx0Py5maWxlUGF0aCB8fCByZXN1bHQ/LnVybCB8fCBcIlwiKSk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkVXJsID0gdGhpcy5yZXNvbHZlU3RvcmFnZVZpZXdVcmwoc3RvcmFnZVBhdGgpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgICAgICBmaWxlSWQ6IFN0cmluZyhyZXN1bHQ/LmZpbGVJZCB8fCBwYXlsb2FkLmZpbGVJZCB8fCBcIlwiKSxcbiAgICAgICAgICAgIHBhdGg6IHN0b3JhZ2VQYXRoLFxuICAgICAgICAgICAgZmlsZVBhdGg6IHJlc29sdmVkVXJsIHx8IHN0b3JhZ2VQYXRoLFxuICAgICAgICAgICAgdXJsOiByZXNvbHZlZFVybCB8fCBzdG9yYWdlUGF0aCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlT2NjdXBhdGlvbihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVPY2N1cGF0aW9uU2NoZW1hPik6IFByb21pc2U8VE9jY3VwYXRpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnb2NjdXBhdGlvbicsICdDcmVhdGVPY2N1cGF0aW9uJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZU9jY3VwYXRpb24ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlT2NjdXBhdGlvblNjaGVtYT4pOiBQcm9taXNlPFRPY2N1cGF0aW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ29jY3VwYXRpb24nLCAnVXBkYXRlT2NjdXBhdGlvbicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVPY2N1cGF0aW9uKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZU9jY3VwYXRpb25TY2hlbWE+KTogUHJvbWlzZTxUT2NjdXBhdGlvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdvY2N1cGF0aW9uJywgJ0RlbGV0ZU9jY3VwYXRpb24nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdE9jY3VwYXRpb25zKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RPY2N1cGF0aW9uc1NjaGVtYT4pOiBQcm9taXNlPFRPY2N1cGF0aW9uW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnb2NjdXBhdGlvbicsICdMaXN0T2NjdXBhdGlvbnMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUHVibGlzaERvbWFpbihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBQdWJsaXNoRG9tYWluU2NoZW1hPik6IFByb21pc2U8VE9jY3VwYXRpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnb2NjdXBhdGlvbicsICdQdWJsaXNoRG9tYWluJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZURvbWFpblRvcGljKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZURvbWFpblRvcGljU2NoZW1hPik6IFByb21pc2U8VERvbWFpblRvcGljPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ29jY3VwYXRpb24nLCAnQ3JlYXRlRG9tYWluVG9waWMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlRG9tYWluVG9waWMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlRG9tYWluVG9waWNTY2hlbWE+KTogUHJvbWlzZTxURG9tYWluVG9waWM+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnb2NjdXBhdGlvbicsICdVcGRhdGVEb21haW5Ub3BpYycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVEb21haW5Ub3BpYyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVEb21haW5Ub3BpY1NjaGVtYT4pOiBQcm9taXNlPFREb21haW5Ub3BpYz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdvY2N1cGF0aW9uJywgJ0RlbGV0ZURvbWFpblRvcGljJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3REb21haW5Ub3BpY3MocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdERvbWFpblRvcGljc1NjaGVtYT4pOiBQcm9taXNlPFREb21haW5Ub3BpY1tdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ29jY3VwYXRpb24nLCAnTGlzdERvbWFpblRvcGljcycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVKb2JEZWZpbml0aW9uKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUpvYkRlZmluaXRpb25TY2hlbWE+KTogUHJvbWlzZTxUSm9iRGVmaW5pdGlvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0NyZWF0ZUpvYkRlZmluaXRpb24nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlSm9iRGVmaW5pdGlvbihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVKb2JEZWZpbml0aW9uU2NoZW1hPik6IFByb21pc2U8VEpvYkRlZmluaXRpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdVcGRhdGVKb2JEZWZpbml0aW9uJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUpvYkRlZmluaXRpb24ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlSm9iRGVmaW5pdGlvblNjaGVtYT4pOiBQcm9taXNlPFRKb2JEZWZpbml0aW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnRGVsZXRlSm9iRGVmaW5pdGlvbicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0Sm9iRGVmaW5pdGlvbnMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEpvYkRlZmluaXRpb25TY2hlbWE+KTogUHJvbWlzZTxUSm9iRGVmaW5pdGlvbltdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnTGlzdEpvYkRlZmluaXRpb25zJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUNvbXBldGVuY3kocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQ29tcGV0ZW5jeVNjaGVtYT4pOiBQcm9taXNlPFRDb21wZXRlbmN5PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnQ3JlYXRlQ29tcGV0ZW5jeScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVDb21wZXRlbmN5KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUNvbXBldGVuY3lTY2hlbWE+KTogUHJvbWlzZTxUQ29tcGV0ZW5jeT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ1VwZGF0ZUNvbXBldGVuY3knLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQ29tcGV0ZW5jeShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVDb21wZXRlbmN5U2NoZW1hPik6IFByb21pc2U8VENvbXBldGVuY3k+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdEZWxldGVDb21wZXRlbmN5JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RDb21wZXRlbmNpZXMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdENvbXBldGVuY2llc1NjaGVtYT4pOiBQcm9taXNlPFRDb21wZXRlbmN5W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdMaXN0Q29tcGV0ZW5jaWVzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZVRhc2tUZW1wbGF0ZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVUYXNrVGVtcGxhdGVTY2hlbWE+KTogUHJvbWlzZTxUVGFza1RlbXBsYXRlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnQ3JlYXRlVGFza1RlbXBsYXRlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZVRhc2tUZW1wbGF0ZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVUYXNrVGVtcGxhdGVTY2hlbWE+KTogUHJvbWlzZTxUVGFza1RlbXBsYXRlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnVXBkYXRlVGFza1RlbXBsYXRlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZVRhc2tUZW1wbGF0ZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVUYXNrVGVtcGxhdGVTY2hlbWE+KTogUHJvbWlzZTxUVGFza1RlbXBsYXRlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnRGVsZXRlVGFza1RlbXBsYXRlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RUYXNrVGVtcGxhdGVzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RUYXNrVGVtcGxhdGVzU2NoZW1hPik6IFByb21pc2U8VFRhc2tUZW1wbGF0ZVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnTGlzdFRhc2tUZW1wbGF0ZXMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQWdlbnRGbG93KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUFnZW50Rmxvd1NjaGVtYT4pOiBQcm9taXNlPFRBZ2VudEZsb3c+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYWdlbnQtZmxvdycsICdDcmVhdGVBZ2VudEZsb3cnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQWdlbnRGbG93KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUFnZW50Rmxvd1NjaGVtYT4pOiBQcm9taXNlPFREZWxldGVBZ2VudEZsb3dSZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYWdlbnQtZmxvdycsICdEZWxldGVBZ2VudEZsb3cnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRHVwbGljYXRlQWdlbnRGbG93KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIER1cGxpY2F0ZUFnZW50Rmxvd1NjaGVtYT4pOiBQcm9taXNlPFRBZ2VudEZsb3c+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYWdlbnQtZmxvdycsICdEdXBsaWNhdGVBZ2VudEZsb3cnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ2hhbmdlQWdlbnRmbG93UHJvamVjdChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDaGFuZ2VBZ2VudGZsb3dQcm9qZWN0U2NoZW1hPik6IFByb21pc2U8VEFnZW50Rmxvdz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhZ2VudC1mbG93JywgJ0NoYW5nZUFnZW50Zmxvd1Byb2plY3QnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlQWdlbnRGbG93KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUFnZW50Rmxvd1NjaGVtYT4pOiBQcm9taXNlPFRBZ2VudEZsb3c+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYWdlbnQtZmxvdycsICdVcGRhdGVBZ2VudEZsb3cnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdEFnZW50Rmxvd3MocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEFnZW50Rmxvd3NTY2hlbWE+KTogUHJvbWlzZTxUQWdlbnRGbG93W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYWdlbnQtZmxvdycsICdMaXN0QWdlbnRGbG93cycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVBZ2VudEZsb3dGb2xkZXIocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQWdlbnRGbG93Rm9sZGVyU2NoZW1hPik6IFByb21pc2U8VEFnZW50Rmxvd0ZvbGRlcj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhZ2VudC1mbG93JywgJ0NyZWF0ZUFnZW50Rmxvd0ZvbGRlcicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVBZ2VudEZsb3dGb2xkZXIocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQWdlbnRGbG93Rm9sZGVyU2NoZW1hPik6IFByb21pc2U8VEFnZW50Rmxvd0ZvbGRlcj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhZ2VudC1mbG93JywgJ1VwZGF0ZUFnZW50Rmxvd0ZvbGRlcicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVBZ2VudEZsb3dGb2xkZXIocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlQWdlbnRGbG93Rm9sZGVyU2NoZW1hPik6IFByb21pc2U8VEFnZW50Rmxvd0ZvbGRlcj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhZ2VudC1mbG93JywgJ0RlbGV0ZUFnZW50Rmxvd0ZvbGRlcicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0QWdlbnRGbG93Rm9sZGVycyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0QWdlbnRGbG93Rm9sZGVyc1NjaGVtYT4pOiBQcm9taXNlPFRBZ2VudEZsb3dGb2xkZXJbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhZ2VudC1mbG93JywgJ0xpc3RBZ2VudEZsb3dGb2xkZXJzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldFByaXZhdGVBZ2VudEZsb3dGb2xkZXIocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0UHJpdmF0ZUFnZW50Rmxvd0ZvbGRlclNjaGVtYT4pOiBQcm9taXNlPFRBZ2VudEZsb3dGb2xkZXIgfCBudWxsPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2FnZW50LWZsb3cnLCAnR2V0UHJpdmF0ZUFnZW50Rmxvd0ZvbGRlcicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0RHJpdmVJdGVtcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdERyaXZlSXRlbXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTx7IGN1cnJlbnRGb2xkZXI6IFREcml2ZUl0ZW07IGl0ZW1zOiBURHJpdmVJdGVtW10gfT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJMaXN0RHJpdmVJdGVtc1wiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdERyaXZlVHJlZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdERyaXZlVHJlZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPFREcml2ZVRyZWVOb2RlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIkxpc3REcml2ZVRyZWVcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFNlYXJjaERyaXZlSXRlbXMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFNlYXJjaERyaXZlSXRlbXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxURHJpdmVJdGVtW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiU2VhcmNoRHJpdmVJdGVtc1wiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlRHJpdmVGb2xkZXIoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZURyaXZlRm9sZGVyU2NoZW1hPlxuICAgICk6IFByb21pc2U8VERyaXZlSXRlbT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJDcmVhdGVEcml2ZUZvbGRlclwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUHJlcGFyZURyaXZlVXBsb2FkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBQcmVwYXJlRHJpdmVVcGxvYWRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUUHJlcGFyZWREcml2ZVVwbG9hZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJQcmVwYXJlRHJpdmVVcGxvYWRcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJlbmFtZURyaXZlSXRlbShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUmVuYW1lRHJpdmVJdGVtU2NoZW1hPlxuICAgICk6IFByb21pc2U8VERyaXZlSXRlbT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJSZW5hbWVEcml2ZUl0ZW1cIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIE1vdmVEcml2ZUl0ZW0oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIE1vdmVEcml2ZUl0ZW1TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxURHJpdmVJdGVtPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIk1vdmVEcml2ZUl0ZW1cIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldERyaXZlRGVsZXRlSW1wYWN0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXREcml2ZURlbGV0ZUltcGFjdFNjaGVtYT5cbiAgICApOiBQcm9taXNlPFREcml2ZURlbGV0ZUltcGFjdD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJHZXREcml2ZURlbGV0ZUltcGFjdFwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlRHJpdmVJdGVtKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVEcml2ZUl0ZW1TY2hlbWE+XG4gICAgKTogUHJvbWlzZTx7IGlkOiBzdHJpbmc7IGRlbGV0ZWQ6IGJvb2xlYW47IHRvdGFsSXRlbXM6IG51bWJlciB9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIkRlbGV0ZURyaXZlSXRlbVwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUmVzb2x2ZURyaXZlRG93bmxvYWQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJlc29sdmVEcml2ZURvd25sb2FkU2NoZW1hPlxuICAgICk6IFByb21pc2U8VFdpa2lGaWxlVmlld1Jlc29sdXRpb24+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5hY3Rpb25DYWxsPGFueT4oXCJkcml2ZVwiLCBcIlJlc29sdmVEcml2ZURvd25sb2FkXCIsIHBheWxvYWQpO1xuICAgICAgICBjb25zdCBzdG9yYWdlUGF0aCA9XG4gICAgICAgICAgICB0aGlzLm5vcm1hbGl6ZVN0b3JhZ2VQYXRoKFN0cmluZyhyZXN1bHQ/LnBhdGggfHwgcmVzdWx0Py5maWxlUGF0aCB8fCByZXN1bHQ/LnVybCB8fCBcIlwiKSk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkVXJsID0gdGhpcy5yZXNvbHZlU3RvcmFnZVZpZXdVcmwoc3RvcmFnZVBhdGgpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgICAgICBmaWxlSWQ6IFN0cmluZyhyZXN1bHQ/Lml0ZW1JZCB8fCBwYXlsb2FkLml0ZW1JZCB8fCBcIlwiKSxcbiAgICAgICAgICAgIHBhdGg6IHN0b3JhZ2VQYXRoLFxuICAgICAgICAgICAgZmlsZVBhdGg6IHJlc29sdmVkVXJsIHx8IHN0b3JhZ2VQYXRoLFxuICAgICAgICAgICAgdXJsOiByZXNvbHZlZFVybCB8fCBzdG9yYWdlUGF0aCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdERyaXZlUm9vdHMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3REcml2ZVJvb3RzU2NoZW1hPlxuICAgICk6IFByb21pc2U8VERyaXZlUm9vdFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIkxpc3REcml2ZVJvb3RzXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbnN1cmVEcml2ZVByb3ZpZGVyQ3JlZGVudGlhbChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRW5zdXJlRHJpdmVQcm92aWRlckNyZWRlbnRpYWxTY2hlbWE+XG4gICAgKTogUHJvbWlzZTx7IGNyZWRlbnRpYWxJZDogc3RyaW5nOyBjb25uZWN0ZWQ6IGJvb2xlYW47IHByb3ZpZGVyOiBURHJpdmVSb290UHJvdmlkZXIgfT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJFbnN1cmVEcml2ZVByb3ZpZGVyQ3JlZGVudGlhbFwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdERyaXZlUHJvdmlkZXJGb2xkZXJzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0RHJpdmVQcm92aWRlckZvbGRlcnNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTx7XG4gICAgICAgIGNyZWRlbnRpYWxJZDogc3RyaW5nO1xuICAgICAgICBjb25uZWN0ZWQ6IGJvb2xlYW47XG4gICAgICAgIGN1cnJlbnRGb2xkZXI6IFREcml2ZVByb3ZpZGVyRm9sZGVyO1xuICAgICAgICBmb2xkZXJzOiBURHJpdmVQcm92aWRlckZvbGRlcltdO1xuICAgIH0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiTGlzdERyaXZlUHJvdmlkZXJGb2xkZXJzXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVEcml2ZVJvb3QoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZURyaXZlUm9vdFNjaGVtYT5cbiAgICApOiBQcm9taXNlPFREcml2ZVJvb3Q+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiQ3JlYXRlRHJpdmVSb290XCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVEcml2ZVJvb3QoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZURyaXZlUm9vdFNjaGVtYT5cbiAgICApOiBQcm9taXNlPHsgaWQ6IHN0cmluZzsgZGVsZXRlZDogYm9vbGVhbiB9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIkRlbGV0ZURyaXZlUm9vdFwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdERyaXZlUm9vdEl0ZW1zKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0RHJpdmVSb290SXRlbXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTx7IGN1cnJlbnRGb2xkZXI6IFREcml2ZUl0ZW07IGl0ZW1zOiBURHJpdmVJdGVtW10gfT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJMaXN0RHJpdmVSb290SXRlbXNcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3REcml2ZVJvb3RUcmVlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0RHJpdmVSb290VHJlZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPFREcml2ZVRyZWVOb2RlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIkxpc3REcml2ZVJvb3RUcmVlXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBTZWFyY2hEcml2ZVJvb3RJdGVtcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgU2VhcmNoRHJpdmVSb290SXRlbXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxURHJpdmVJdGVtW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiU2VhcmNoRHJpdmVSb290SXRlbXNcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZURyaXZlUm9vdEZvbGRlcihcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlRHJpdmVSb290Rm9sZGVyU2NoZW1hPlxuICAgICk6IFByb21pc2U8VERyaXZlSXRlbT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJDcmVhdGVEcml2ZVJvb3RGb2xkZXJcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwbG9hZERyaXZlUm9vdEZpbGVzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGxvYWREcml2ZVJvb3RGaWxlc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPFREcml2ZUl0ZW1bXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJVcGxvYWREcml2ZVJvb3RGaWxlc1wiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUmVuYW1lRHJpdmVSb290SXRlbShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUmVuYW1lRHJpdmVSb290SXRlbVNjaGVtYT5cbiAgICApOiBQcm9taXNlPFREcml2ZUl0ZW0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiUmVuYW1lRHJpdmVSb290SXRlbVwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTW92ZURyaXZlUm9vdEl0ZW0oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIE1vdmVEcml2ZVJvb3RJdGVtU2NoZW1hPlxuICAgICk6IFByb21pc2U8VERyaXZlSXRlbT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJNb3ZlRHJpdmVSb290SXRlbVwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0RHJpdmVSb290RGVsZXRlSW1wYWN0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXREcml2ZVJvb3REZWxldGVJbXBhY3RTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxURHJpdmVEZWxldGVJbXBhY3Q+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiR2V0RHJpdmVSb290RGVsZXRlSW1wYWN0XCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVEcml2ZVJvb3RJdGVtKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVEcml2ZVJvb3RJdGVtU2NoZW1hPlxuICAgICk6IFByb21pc2U8eyBpZDogc3RyaW5nOyBkZWxldGVkOiBib29sZWFuOyB0b3RhbEl0ZW1zOiBudW1iZXIgfT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJEZWxldGVEcml2ZVJvb3RJdGVtXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSZWFkRHJpdmVSb290RmlsZUNvbnRlbnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJlYWREcml2ZVJvb3RGaWxlQ29udGVudFNjaGVtYT5cbiAgICApOiBQcm9taXNlPFREcml2ZUZpbGVDb250ZW50PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIlJlYWREcml2ZVJvb3RGaWxlQ29udGVudFwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUmVzb2x2ZURyaXZlUm9vdERvd25sb2FkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSZXNvbHZlRHJpdmVSb290RG93bmxvYWRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUV2lraUZpbGVWaWV3UmVzb2x1dGlvbj4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmFjdGlvbkNhbGw8YW55PihcImRyaXZlXCIsIFwiUmVzb2x2ZURyaXZlUm9vdERvd25sb2FkXCIsIHBheWxvYWQpO1xuICAgICAgICBjb25zdCByYXdVcmwgPSBTdHJpbmcocmVzdWx0Py51cmwgfHwgXCJcIik7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRVcmwgPSByYXdVcmwuc3RhcnRzV2l0aChcImRhdGE6XCIpID8gcmF3VXJsIDogdGhpcy5ub3JtYWxpemVTdG9yYWdlUGF0aChyYXdVcmwpO1xuICAgICAgICBjb25zdCByZXNvbHZlZFVybCA9IHJhd1VybC5zdGFydHNXaXRoKFwiZGF0YTpcIilcbiAgICAgICAgICAgID8gcmF3VXJsXG4gICAgICAgICAgICA6ICh0aGlzLnJlc29sdmVTdG9yYWdlVmlld1VybChub3JtYWxpemVkVXJsKSB8fCBub3JtYWxpemVkVXJsKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICAgICAgZmlsZUlkOiBTdHJpbmcocmVzdWx0Py5pdGVtSWQgfHwgcGF5bG9hZC5pdGVtSWQgfHwgXCJcIiksXG4gICAgICAgICAgICBwYXRoOiBub3JtYWxpemVkVXJsLFxuICAgICAgICAgICAgZmlsZVBhdGg6IHJlc29sdmVkVXJsIHx8IG5vcm1hbGl6ZWRVcmwsXG4gICAgICAgICAgICB1cmw6IHJlc29sdmVkVXJsIHx8IG5vcm1hbGl6ZWRVcmwsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUV4dGVuc2lvbihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVFeHRlbnNpb25TY2hlbWE+KTogUHJvbWlzZTxURXh0ZW5zaW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2V4dGVuc2lvbicsICdDcmVhdGVFeHRlbnNpb24nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlRXh0ZW5zaW9uKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUV4dGVuc2lvblNjaGVtYT4pOiBQcm9taXNlPFRFeHRlbnNpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZXh0ZW5zaW9uJywgJ1VwZGF0ZUV4dGVuc2lvbicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVFeHRlbnNpb24ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlRXh0ZW5zaW9uU2NoZW1hPik6IFByb21pc2U8VEV4dGVuc2lvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdleHRlbnNpb24nLCAnRGVsZXRlRXh0ZW5zaW9uJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RFeHRlbnNpb25zKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RFeHRlbnNpb25zU2NoZW1hPik6IFByb21pc2U8VEV4dGVuc2lvbltdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2V4dGVuc2lvbicsICdMaXN0RXh0ZW5zaW9ucycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tQXNzaXN0YW50LS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVBc3Npc3RhbnQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQXNzaXN0YW50U2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnQ3JlYXRlQXNzaXN0YW50JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUFzc2lzdGFudChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVBc3Npc3RhbnRTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdVcGRhdGVBc3Npc3RhbnQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQXNzaXN0YW50KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUFzc2lzdGFudFNjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0RlbGV0ZUFzc2lzdGFudCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0QXNzaXN0YW50cyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0QXNzaXN0YW50c1NjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnTGlzdEFzc2lzdGFudHMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQXNzaXN0YW50SW5zdHJ1Y3Rpb24ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQXNzaXN0YW50SW5zdHJ1Y3Rpb25TY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50SW5zdHJ1Y3Rpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0NyZWF0ZUFzc2lzdGFudEluc3RydWN0aW9uJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RBc3Npc3RhbnRJbnN0cnVjdGlvbnMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEFzc2lzdGFudEluc3RydWN0aW9uc1NjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnRJbnN0cnVjdGlvbltdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdMaXN0QXNzaXN0YW50SW5zdHJ1Y3Rpb25zJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUFzc2lzdGFudENvbnN0cmFpbnQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQXNzaXN0YW50Q29uc3RyYWludFNjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnRDb25zdHJhaW50PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdDcmVhdGVBc3Npc3RhbnRDb25zdHJhaW50JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RBc3Npc3RhbnRDb25zdHJhaW50cyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0QXNzaXN0YW50Q29uc3RyYWludHNTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50Q29uc3RyYWludFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdMaXN0QXNzaXN0YW50Q29uc3RyYWludHMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQXNzaXN0YW50RGF0YXNvdXJjZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVBc3Npc3RhbnREYXRhc291cmNlU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudERhdGFzb3VyY2U+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0NyZWF0ZUFzc2lzdGFudERhdGFzb3VyY2UnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlQXNzaXN0YW50RGF0YXNvdXJjZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVBc3Npc3RhbnREYXRhc291cmNlU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudERhdGFzb3VyY2U+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ1VwZGF0ZUFzc2lzdGFudERhdGFzb3VyY2UnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQXNzaXN0YW50RGF0YXNvdXJjZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVBc3Npc3RhbnREYXRhc291cmNlU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudERhdGFzb3VyY2U+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0RlbGV0ZUFzc2lzdGFudERhdGFzb3VyY2UnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdEFzc2lzdGFudERhdGFzb3VyY2VzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RBc3Npc3RhbnREYXRhc291cmNlc1NjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnREYXRhc291cmNlW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0xpc3RBc3Npc3RhbnREYXRhc291cmNlcycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVBc3Npc3RhbnRTa2lsbChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVBc3Npc3RhbnRTa2lsbFNjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnRTa2lsbD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnQ3JlYXRlQXNzaXN0YW50U2tpbGwnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlQXNzaXN0YW50U2tpbGwocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQXNzaXN0YW50U2tpbGxTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50U2tpbGw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ1VwZGF0ZUFzc2lzdGFudFNraWxsJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUFzc2lzdGFudFNraWxsKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUFzc2lzdGFudFNraWxsU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudFNraWxsPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdEZWxldGVBc3Npc3RhbnRTa2lsbCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0QXNzaXN0YW50U2tpbGxzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RBc3Npc3RhbnRTa2lsbHNTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50U2tpbGxbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnTGlzdEFzc2lzdGFudFNraWxscycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVBc3Npc3RhbnRDaGFubmVsKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUFzc2lzdGFudENoYW5uZWxTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50Q2hhbm5lbD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnQ3JlYXRlQXNzaXN0YW50Q2hhbm5lbCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVBc3Npc3RhbnRDaGFubmVsKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUFzc2lzdGFudENoYW5uZWxTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50Q2hhbm5lbD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnVXBkYXRlQXNzaXN0YW50Q2hhbm5lbCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVBc3Npc3RhbnRDaGFubmVsKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUFzc2lzdGFudENoYW5uZWxTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50Q2hhbm5lbD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnRGVsZXRlQXNzaXN0YW50Q2hhbm5lbCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0QXNzaXN0YW50Q2hhbm5lbHMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEFzc2lzdGFudENoYW5uZWxzU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudENoYW5uZWxbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnTGlzdEFzc2lzdGFudENoYW5uZWxzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS1EYXRhc291cmNlcy0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlRGF0YXNvdXJjZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVEYXRhc291cmNlU2NoZW1hPik6IFByb21pc2U8VERhdGFzb3VyY2U+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZGF0YS1zb3VyY2UnLCAnQ3JlYXRlRGF0YXNvdXJjZScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVEYXRhc291cmNlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZURhdGFzb3VyY2VTY2hlbWE+KTogUHJvbWlzZTxURGF0YXNvdXJjZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdkYXRhLXNvdXJjZScsICdVcGRhdGVEYXRhc291cmNlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZURhdGFzb3VyY2UocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlRGF0YXNvdXJjZVNjaGVtYT4pOiBQcm9taXNlPFREYXRhc291cmNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2RhdGEtb3VyY2UnLCAnRGVsZXRlRGF0YXNvdXJjZScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0RGF0YXNvdXJjZXMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdERhdGFzb3VyY2VzU2NoZW1hPik6IFByb21pc2U8VERhdGFzb3VyY2VbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdkYXRhLXNvdXJjZScsICdMaXN0RGF0YXNvdXJjZXMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tU2tpbGxzLS0tLS0tLS0tLS0tLS0tLVxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVTa2lsbChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVTa2lsbFNjaGVtYT4pOiBQcm9taXNlPFRTa2lsbD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdza2lsbCcsICdDcmVhdGVTa2lsbCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0U2tpbGxzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RTa2lsbHNTY2hlbWE+KTogUHJvbWlzZTxUU2tpbGxbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdza2lsbCcsICdMaXN0U2tpbGxzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZVNraWxsKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZVNraWxsU2NoZW1hPik6IFByb21pc2U8VFNraWxsPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3NraWxsJywgJ1VwZGF0ZVNraWxsJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZVNraWxsKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVNraWxsU2NoZW1hPik6IFByb21pc2U8VFNraWxsPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3NraWxsJywgJ0RlbGV0ZVNraWxsJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLUNoYW5uZWxzLS0tLS0tLS0tLS0tLS0tLVxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVDaGFubmVsKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUNoYW5uZWxTY2hlbWE+KTogUHJvbWlzZTxUQ2hhbm5lbD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGFubmVsJywgJ0NyZWF0ZUNoYW5uZWwnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdENoYW5uZWxzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RDaGFubmVsc1NjaGVtYT4pOiBQcm9taXNlPFRDaGFubmVsW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhbm5lbCcsICdMaXN0Q2hhbm5lbHMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlQ2hhbm5lbChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVDaGFubmVsU2NoZW1hPik6IFByb21pc2U8VENoYW5uZWw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhbm5lbCcsICdVcGRhdGVDaGFubmVsJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUNoYW5uZWwocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlQ2hhbm5lbFNjaGVtYT4pOiBQcm9taXNlPFRDaGFubmVsPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYW5uZWwnLCAnRGVsZXRlQ2hhbm5lbCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1Lbm93bGVkZ2UtLS0tLS0tLS0tLS0tLS0tXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUtub3dsZWRnZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVLbm93bGVkZ2VTY2hlbWE+KTogUHJvbWlzZTxUS25vd2xlZGdlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2tub3dsZWRnZScsICdDcmVhdGVLbm93bGVkZ2UnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdEtub3dsZWRnZXMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEtub3dsZWRnZXNTY2hlbWE+KTogUHJvbWlzZTxUS25vd2xlZGdlW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgna25vd2xlZGdlJywgJ0xpc3RLbm93bGVkZ2VzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUtub3dsZWRnZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVLbm93bGVkZ2VTY2hlbWE+KTogUHJvbWlzZTxUS25vd2xlZGdlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2tub3dsZWRnZScsICdVcGRhdGVLbm93bGVkZ2UnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlS25vd2xlZGdlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUtub3dsZWRnZVNjaGVtYT4pOiBQcm9taXNlPFRLbm93bGVkZ2U+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgna25vd2xlZGdlJywgJ0RlbGV0ZUtub3dsZWRnZScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLVdPUktFUi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVXb3JrZXIocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlV29ya2VyU2NoZW1hPik6IFByb21pc2U8VFdvcmtlcj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCd3b3JrZXInLCAnQ3JlYXRlV29ya2VyJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZVdvcmtlcihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVXb3JrZXJTY2hlbWE+KTogUHJvbWlzZTxUV29ya2VyPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3dvcmtlcicsICdVcGRhdGVXb3JrZXInLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlV29ya2VyKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVdvcmtlclNjaGVtYT4pOiBQcm9taXNlPFRXb3JrZXI+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnd29ya2VyJywgJ0RlbGV0ZVdvcmtlcicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQdWJsaXNoV29ya2VyVG9NYXJrZXRTdG9yZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBQdWJsaXNoV29ya2VyVG9NYXJrZXRTdG9yZVNjaGVtYT4pOiBQcm9taXNlPFRQdWJsaXNoV29ya2VyVG9NYXJrZXRTdG9yZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdtYXJrZXQtc3RvcmUnLCAnUHVibGlzaFdvcmtlclRvTWFya2V0U3RvcmUnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdFdvcmtlcnMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdFdvcmtlcnNTY2hlbWE+KTogUHJvbWlzZTxUV29ya2VyW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnd29ya2VyJywgJ0xpc3RXb3JrZXJzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZVdvcmtlclRvcGljKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVdvcmtlclRvcGljU2NoZW1hPik6IFByb21pc2U8VFdvcmtlclRvcGljPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3dvcmtlcicsICdDcmVhdGVXb3JrZXJUb3BpYycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVXb3JrZXJUb3BpYyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVXb3JrZXJUb3BpY1NjaGVtYT4pOiBQcm9taXNlPFRXb3JrZXJUb3BpYz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCd3b3JrZXInLCAnVXBkYXRlV29ya2VyVG9waWMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlV29ya2VyVG9waWMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlV29ya2VyVG9waWNTY2hlbWE+KTogUHJvbWlzZTxUV29ya2VyVG9waWM+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnd29ya2VyJywgJ0RlbGV0ZVdvcmtlclRvcGljJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RXb3JrZXJUb3BpY3MocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdFdvcmtlclRvcGljc1NjaGVtYT4pOiBQcm9taXNlPFRXb3JrZXJUb3BpY1tdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3dvcmtlcicsICdMaXN0V29ya2VyVG9waWNzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RNYXJrZXRTdG9yZUl0ZW1zKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RNYXJrZXRTdG9yZUl0ZW1zU2NoZW1hPik6IFByb21pc2U8VE1hcmtldFN0b3JlSXRlbVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ21hcmtldC1zdG9yZScsICdMaXN0TWFya2V0U3RvcmVJdGVtcycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRNYXJrZXRTdG9yZUl0ZW0ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0TWFya2V0U3RvcmVJdGVtU2NoZW1hPik6IFByb21pc2U8VE1hcmtldFN0b3JlSXRlbSB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnbWFya2V0LXN0b3JlJywgJ0dldE1hcmtldFN0b3JlSXRlbScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS1Ub3BpY3MtLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlVG9waWMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlVG9waWNTY2hlbWE+KTogUHJvbWlzZTxUVG9waWM+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgndG9waWMnLCAnQ3JlYXRlVG9waWMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlVG9waWMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlVG9waWNTY2hlbWE+KTogUHJvbWlzZTxUVG9waWM+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgndG9waWMnLCAnVXBkYXRlVG9waWMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlVG9waWMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlVG9waWNTY2hlbWE+KTogUHJvbWlzZTxUVG9waWM+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgndG9waWMnLCAnRGVsZXRlVG9waWMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdFRvcGljcyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0VG9waWNzU2NoZW1hPik6IFByb21pc2U8VFRvcGljW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgndG9waWMnLCAnTGlzdFRvcGljcycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbmhhbmNlVG9waWMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRW5oYW5jZVRvcGljU2NoZW1hPik6IFByb21pc2U8VEVuaGFuY2VUb3BpYz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCd0b3BpYycsICdFbmhhbmNlVG9waWMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUlucHV0KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUlucHV0U2NoZW1hPik6IFByb21pc2U8VElucHV0PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2lucHV0LW91dHB1dCcsICdDcmVhdGVJbnB1dCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVJbnB1dChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVJbnB1dFNjaGVtYT4pOiBQcm9taXNlPFRJbnB1dD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdpbnB1dC1vdXRwdXQnLCAnVXBkYXRlSW5wdXQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlSW5wdXQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlSW5wdXRTY2hlbWE+KTogUHJvbWlzZTxUSW5wdXQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnaW5wdXQtb3V0cHV0JywgJ0RlbGV0ZUlucHV0JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RJbnB1dHMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdElucHV0U2NoZW1hPik6IFByb21pc2U8VElucHV0W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnaW5wdXQtb3V0cHV0JywgJ0xpc3RJbnB1dHMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlVGVhbShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVUZWFtU2NoZW1hPik6IFByb21pc2U8VFRlYW0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgndGVhbScsICdDcmVhdGVUZWFtJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RUZWFtcyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0VGVhbXNTY2hlbWE+KTogUHJvbWlzZTxUVGVhbVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3RlYW0nLCAnTGlzdFRlYW1zJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZVRlYW0ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlVGVhbVNjaGVtYT4pOiBQcm9taXNlPFRUZWFtPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3RlYW0nLCAnVXBkYXRlVGVhbScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVUZWFtKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVRlYW1TY2hlbWE+KTogUHJvbWlzZTxUVGVhbT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCd0ZWFtJywgJ0RlbGV0ZVRlYW0nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgU2F2ZUNoYXQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgU2F2ZUNoYXRTY2hlbWE+KTogUHJvbWlzZTxUQ2hhdD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ1NhdmVDaGF0JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUNoYXRCeUlkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUNoYXRCeUlkU2NoZW1hPik6IFByb21pc2U8VENoYXQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdEZWxldGVDaGF0QnlJZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRDaGF0QnlJZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRDaGF0QnlJZFNjaGVtYT4pOiBQcm9taXNlPFRDaGF0PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnR2V0Q2hhdEJ5SWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0Q2hhdHNCeVVzZXJJZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRDaGF0c0J5VXNlcklkU2NoZW1hPik6IFByb21pc2U8VENoYXRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0dldENoYXRzQnlVc2VySWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgU2F2ZU1lc3NhZ2VzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFNhdmVNZXNzYWdlc1NjaGVtYT4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdTYXZlTWVzc2FnZXMnLCBwYXlsb2FkKTtcbiAgICB9XG5cblxuICAgIHB1YmxpYyBhc3luYyBHZXRNZXNzYWdlc0J5Q2hhdElkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldE1lc3NhZ2VzQnlDaGF0SWRTY2hlbWE+KTogUHJvbWlzZTxUQ2hhdFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnR2V0TWVzc2FnZXNCeUNoYXRJZCcsIHBheWxvYWQpO1xuICAgIH1cblxuXG4gICAgcHVibGljIGFzeW5jIEdldE1lc3NhZ2VCeUlkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldE1lc3NhZ2VCeUlkU2NoZW1hPik6IFByb21pc2U8VENoYXRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0dldE1lc3NhZ2VCeUlkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFZvdGVNZXNzYWdlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFZvdGVNZXNzYWdlU2NoZW1hPik6IFByb21pc2U8VENoYXRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ1ZvdGVNZXNzYWdlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldFZvdGVzQnlDaGF0SWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0Vm90ZXNCeUNoYXRJZFNjaGVtYT4pOiBQcm9taXNlPFRDaGF0W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdHZXRWb3Rlc0J5Q2hhdElkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZURvY3VtZW50c0J5SWRBZnRlclRpbWVzdGFtcChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVEb2N1bWVudHNCeUlkQWZ0ZXJUaW1lc3RhbXBTY2hlbWE+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnRGVsZXRlRG9jdW1lbnRzQnlJZEFmdGVyVGltZXN0YW1wJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFNhdmVTdWdnZXN0aW9ucyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBTYXZlU3VnZ2VzdGlvbnNTY2hlbWE+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnU2F2ZVN1Z2dlc3Rpb25zJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldFN1Z2dlc3Rpb25zQnlEb2N1bWVudElkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldFN1Z2dlc3Rpb25zQnlEb2N1bWVudElkU2NoZW1hPik6IFByb21pc2U8VENoYXRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0dldFN1Z2dlc3Rpb25zQnlEb2N1bWVudElkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZU1lc3NhZ2VzQnlDaGF0SWRBZnRlclRpbWVzdGFtcChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVNZXNzYWdlc0J5Q2hhdElkQWZ0ZXJUaW1lc3RhbXBTY2hlbWE+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnRGVsZXRlTWVzc2FnZXNCeUNoYXRJZEFmdGVyVGltZXN0YW1wJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUNoYXRWaXNpYmxpdHlCeUlkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUNoYXRWaXNpYmxpdHlCeUlkU2NoZW1hPik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ1VwZGF0ZUNoYXRWaXNpYmxpdHlCeUlkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUNoYXRMYXN0Q29udGV4dEJ5SWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQ2hhdExhc3RDb250ZXh0QnlJZFNjaGVtYT4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdVcGRhdGVDaGF0TGFzdENvbnRleHRCeUlkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldE1lc3NhZ2VDb3VudEJ5VXNlcklkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldE1lc3NhZ2VDb3VudEJ5VXNlcklkU2NoZW1hPik6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnR2V0TWVzc2FnZUNvdW50QnlVc2VySWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlU3RyZWFtSWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlU3RyZWFtSWRTY2hlbWE+KTogUHJvbWlzZTxUU3RyZWFtSWQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdDcmVhdGVTdHJlYW1JZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRTdHJlYW1JZHNCeUNoYXRJZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRTdHJlYW1JZHNCeUNoYXRJZFNjaGVtYT4pOiBQcm9taXNlPFRTdHJlYW1JZFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnR2V0U3RyZWFtSWRzQnlDaGF0SWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgU2F2ZURvY3VtZW50KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFNhdmVEb2N1bWVudFNjaGVtYT4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdTYXZlRG9jdW1lbnQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0RG9jdW1lbnRCeUlkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldERvY3VtZW50QnlJZFNjaGVtYT4pOiBQcm9taXNlPFREb2N1bWVudD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0dldERvY3VtZW50QnlJZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXREb2N1bWVudHNCeUlkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldERvY3VtZW50c0J5SWRTY2hlbWE+KTogUHJvbWlzZTxURG9jdW1lbnRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0dldERvY3VtZW50c0J5SWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cblxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUNvbW1hbmQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQ29tbWFuZFNjaGVtYT4pOiBQcm9taXNlPFRDb21tYW5kPiB7XG4gICAgICAgIC8qICBkZWJ1Z2dlclxuICAgICAgICAgIGlmICggdHlwZW9mIHBheWxvYWQuaW5wdXRzID09PSAnb2JqZWN0JyApIHtcbiAgICAgICAgICAgICAgcGF5bG9hZC5pbnB1dHMgPSBKU09OLnN0cmluZ2lmeShwYXlsb2FkLmlucHV0cykgYXMgYW55O1xuICAgICAgICAgIH0gKi9cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY29tbWFuZCcsICdDcmVhdGVDb21tYW5kJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RDb21tYW5kcyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0Q29tbWFuZHNTY2hlbWE+KTogUHJvbWlzZTxUQ29tbWFuZFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NvbW1hbmQnLCAnTGlzdENvbW1hbmRzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUNvbW1hbmQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQ29tbWFuZFNjaGVtYT4pOiBQcm9taXNlPFRDb21tYW5kPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NvbW1hbmQnLCAnVXBkYXRlQ29tbWFuZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVDb21tYW5kKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUNvbW1hbmRTY2hlbWE+KTogUHJvbWlzZTxUQ29tbWFuZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjb21tYW5kJywgJ0RlbGV0ZUNvbW1hbmQnLCBwYXlsb2FkKTtcbiAgICB9XG5cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tQ29sbGVjdGlvbnMtLS0tLS0tLS0tLS0tLS0tLS0tXG5cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVEYXRhTW9kZWwoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZURhdGFNb2RlbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkNyZWF0ZURhdGFNb2RlbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVEYXRhTW9kZWwoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZURhdGFNb2RlbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlVwZGF0ZURhdGFNb2RlbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVEYXRhTW9kZWwoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZURhdGFNb2RlbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkRlbGV0ZURhdGFNb2RlbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXREYXRhTW9kZWxCeUlkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXREYXRhTW9kZWxCeUlkU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiR2V0RGF0YU1vZGVsQnlJZFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFeHBvcnREYXRhTW9kZWwoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEV4cG9ydERhdGFNb2RlbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkV4cG9ydERhdGFNb2RlbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBJbXBvcnREYXRhTW9kZWwoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEltcG9ydERhdGFNb2RlbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkltcG9ydERhdGFNb2RlbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0RGF0YU1vZGVscyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdERhdGFNb2RlbHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0RGF0YU1vZGVsc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSZXN0b3JlRGF0YU1vZGVsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSZXN0b3JlRGF0YU1vZGVsU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUmVzdG9yZURhdGFNb2RlbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBIYXJkRGVsZXRlRGF0YU1vZGVsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBIYXJkRGVsZXRlRGF0YU1vZGVsU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiSGFyZERlbGV0ZURhdGFNb2RlbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVDb2xsZWN0aW9uKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVDb2xsZWN0aW9uU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiQ3JlYXRlQ29sbGVjdGlvblwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0Q29sbGVjdGlvbnMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RDb2xsZWN0aW9uc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkxpc3RDb2xsZWN0aW9uc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRDb2xsZWN0aW9uQnlJZChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0Q29sbGVjdGlvbkJ5SWRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJHZXRDb2xsZWN0aW9uQnlJZFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZVJlY29yZChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlUmVjb3JkU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiQ3JlYXRlUmVjb3JkXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwbG9hZENvbGxlY3Rpb25GaWxlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGxvYWRDb2xsZWN0aW9uRmlsZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPFRVcGxvYWRlZEZpbGU+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5hY3Rpb25DYWxsPGFueT4oXCJjb2xsZWN0aW9uXCIsIFwiVXBsb2FkQ29sbGVjdGlvbkZpbGVcIiwgcGF5bG9hZCk7XG4gICAgICAgIGNvbnN0IHN0b3JhZ2VQYXRoID1cbiAgICAgICAgICAgIHRoaXMubm9ybWFsaXplU3RvcmFnZVBhdGgoU3RyaW5nKHJlc3VsdD8ucGF0aCB8fCByZXN1bHQ/LmZpbGVQYXRoIHx8IHJlc3VsdD8udXJsIHx8IFwiXCIpKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRVcmwgPSB0aGlzLnJlc29sdmVTdG9yYWdlVmlld1VybChzdG9yYWdlUGF0aCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICAgIGZpbGVJZDogU3RyaW5nKHJlc3VsdD8uaXRlbUlkIHx8IHJlc3VsdD8uZmlsZUlkIHx8IHJlc3VsdD8uaWQgfHwgcGF5bG9hZC5pdGVtSWQgfHwgXCJcIiksXG4gICAgICAgICAgICBwYXRoOiBzdG9yYWdlUGF0aCxcbiAgICAgICAgICAgIGZpbGVQYXRoOiByZXNvbHZlZFVybCB8fCBzdG9yYWdlUGF0aCxcbiAgICAgICAgICAgIHVybDogcmVzb2x2ZWRVcmwgfHwgc3RvcmFnZVBhdGgsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJlc29sdmVDb2xsZWN0aW9uRmlsZVZpZXcoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJlc29sdmVDb2xsZWN0aW9uRmlsZVZpZXdTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUV2lraUZpbGVWaWV3UmVzb2x1dGlvbj4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmFjdGlvbkNhbGw8YW55PihcImNvbGxlY3Rpb25cIiwgXCJSZXNvbHZlQ29sbGVjdGlvbkZpbGVWaWV3XCIsIHBheWxvYWQpO1xuICAgICAgICBjb25zdCBzdG9yYWdlUGF0aCA9XG4gICAgICAgICAgICB0aGlzLm5vcm1hbGl6ZVN0b3JhZ2VQYXRoKFN0cmluZyhyZXN1bHQ/LnBhdGggfHwgcmVzdWx0Py5maWxlUGF0aCB8fCByZXN1bHQ/LnVybCB8fCBcIlwiKSk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkVXJsID0gdGhpcy5yZXNvbHZlU3RvcmFnZVZpZXdVcmwoc3RvcmFnZVBhdGgpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgICAgICBmaWxlSWQ6IFN0cmluZyhyZXN1bHQ/LmZpbGVJZCB8fCByZXN1bHQ/Lml0ZW1JZCB8fCBwYXlsb2FkLml0ZW1JZCB8fCBcIlwiKSxcbiAgICAgICAgICAgIHBhdGg6IHN0b3JhZ2VQYXRoLFxuICAgICAgICAgICAgZmlsZVBhdGg6IHJlc29sdmVkVXJsIHx8IHN0b3JhZ2VQYXRoLFxuICAgICAgICAgICAgdXJsOiByZXNvbHZlZFVybCB8fCBzdG9yYWdlUGF0aCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0UmVjb3JkQnlJZChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0UmVjb3JkQnlJZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkdldFJlY29yZEJ5SWRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0UmVjb3JkcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdFJlY29yZHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTx7XG4gICAgICAgIHRvdGFsOiBudW1iZXI7XG4gICAgICAgIHJlY29yZHM6IGFueVtdO1xuICAgIH0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0UmVjb3Jkc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVSZWNvcmQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZVJlY29yZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlVwZGF0ZVJlY29yZFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVSZWNvcmQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVJlY29yZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkRlbGV0ZVJlY29yZFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgcHVibGljIGFzeW5jIFJlc3RvcmVSZWNvcmQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJlc3RvcmVSZWNvcmRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJSZXN0b3JlUmVjb3JkXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwc2VydFJlY29yZChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBzZXJ0UmVjb3JkU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiVXBzZXJ0UmVjb3JkXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEJ1bGtDcmVhdGVSZWNvcmRzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBCdWxrQ3JlYXRlUmVjb3Jkc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkJ1bGtDcmVhdGVSZWNvcmRzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEVuc3VyZUFpcnRhYmxlSW1wb3J0Q3JlZGVudGlhbChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRW5zdXJlQWlydGFibGVJbXBvcnRDcmVkZW50aWFsU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRW5zdXJlQWlydGFibGVJbXBvcnRDcmVkZW50aWFsXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RBaXJ0YWJsZUltcG9ydFNvdXJjZXMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RBaXJ0YWJsZUltcG9ydFNvdXJjZXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0QWlydGFibGVJbXBvcnRTb3VyY2VzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFByZXZpZXdBaXJ0YWJsZUltcG9ydChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUHJldmlld0FpcnRhYmxlSW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUHJldmlld0FpcnRhYmxlSW1wb3J0XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJ1bkFpcnRhYmxlSW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSdW5BaXJ0YWJsZUltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlJ1bkFpcnRhYmxlSW1wb3J0XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEVuc3VyZUxpbmVhckltcG9ydENyZWRlbnRpYWwoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEVuc3VyZUxpbmVhckltcG9ydENyZWRlbnRpYWxTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJFbnN1cmVMaW5lYXJJbXBvcnRDcmVkZW50aWFsXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RMaW5lYXJJbXBvcnRTb3VyY2VzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0TGluZWFySW1wb3J0U291cmNlc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkxpc3RMaW5lYXJJbXBvcnRTb3VyY2VzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFByZXZpZXdMaW5lYXJJbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFByZXZpZXdMaW5lYXJJbXBvcnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJQcmV2aWV3TGluZWFySW1wb3J0XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJ1bkxpbmVhckltcG9ydChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUnVuTGluZWFySW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUnVuTGluZWFySW1wb3J0XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEVuc3VyZUdtYWlsSW1wb3J0Q3JlZGVudGlhbChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRW5zdXJlR21haWxJbXBvcnRDcmVkZW50aWFsU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRW5zdXJlR21haWxJbXBvcnRDcmVkZW50aWFsXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEVuc3VyZUdpdGh1YkltcG9ydENyZWRlbnRpYWwoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEVuc3VyZUdpdGh1YkltcG9ydENyZWRlbnRpYWxTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJFbnN1cmVHaXRodWJJbXBvcnRDcmVkZW50aWFsXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RHbWFpbEltcG9ydFNvdXJjZXMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RHbWFpbEltcG9ydFNvdXJjZXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0R21haWxJbXBvcnRTb3VyY2VzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RHaXRodWJJbXBvcnRTb3VyY2VzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0R2l0aHViSW1wb3J0U291cmNlc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkxpc3RHaXRodWJJbXBvcnRTb3VyY2VzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFByZXZpZXdHbWFpbEltcG9ydChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUHJldmlld0dtYWlsSW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUHJldmlld0dtYWlsSW1wb3J0XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFByZXZpZXdDc3ZJbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFByZXZpZXdDc3ZJbXBvcnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJQcmV2aWV3Q3N2SW1wb3J0XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFByZXZpZXdHaXRodWJJbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFByZXZpZXdHaXRodWJJbXBvcnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJQcmV2aWV3R2l0aHViSW1wb3J0XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJ1bkdtYWlsSW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSdW5HbWFpbEltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlJ1bkdtYWlsSW1wb3J0XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJ1bkNzdkltcG9ydChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUnVuQ3N2SW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUnVuQ3N2SW1wb3J0XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJ1bkdpdGh1YkltcG9ydChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUnVuR2l0aHViSW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUnVuR2l0aHViSW1wb3J0XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEVuc3VyZU5vdGlvbkltcG9ydENyZWRlbnRpYWwoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEVuc3VyZU5vdGlvbkltcG9ydENyZWRlbnRpYWxTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJFbnN1cmVOb3Rpb25JbXBvcnRDcmVkZW50aWFsXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3ROb3Rpb25JbXBvcnRTb3VyY2VzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0Tm90aW9uSW1wb3J0U291cmNlc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkxpc3ROb3Rpb25JbXBvcnRTb3VyY2VzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFByZXZpZXdOb3Rpb25JbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFByZXZpZXdOb3Rpb25JbXBvcnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJQcmV2aWV3Tm90aW9uSW1wb3J0XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJ1bk5vdGlvbkltcG9ydChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUnVuTm90aW9uSW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUnVuTm90aW9uSW1wb3J0XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEVuc3VyZUppcmFJbXBvcnRDcmVkZW50aWFsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBFbnN1cmVKaXJhSW1wb3J0Q3JlZGVudGlhbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkVuc3VyZUppcmFJbXBvcnRDcmVkZW50aWFsXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RKaXJhSW1wb3J0U291cmNlcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEppcmFJbXBvcnRTb3VyY2VzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdEppcmFJbXBvcnRTb3VyY2VzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFByZXZpZXdKaXJhSW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBQcmV2aWV3SmlyYUltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlByZXZpZXdKaXJhSW1wb3J0XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJ1bkppcmFJbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJ1bkppcmFJbXBvcnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJSdW5KaXJhSW1wb3J0XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEVuc3VyZVRyZWxsb0ltcG9ydENyZWRlbnRpYWwoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEVuc3VyZVRyZWxsb0ltcG9ydENyZWRlbnRpYWxTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJFbnN1cmVUcmVsbG9JbXBvcnRDcmVkZW50aWFsXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENvbm5lY3RUcmVsbG9JbXBvcnRDcmVkZW50aWFsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDb25uZWN0VHJlbGxvSW1wb3J0Q3JlZGVudGlhbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkNvbm5lY3RUcmVsbG9JbXBvcnRDcmVkZW50aWFsXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RUcmVsbG9JbXBvcnRTb3VyY2VzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0VHJlbGxvSW1wb3J0U291cmNlc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkxpc3RUcmVsbG9JbXBvcnRTb3VyY2VzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFByZXZpZXdUcmVsbG9JbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFByZXZpZXdUcmVsbG9JbXBvcnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJQcmV2aWV3VHJlbGxvSW1wb3J0XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJ1blRyZWxsb0ltcG9ydChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUnVuVHJlbGxvSW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUnVuVHJlbGxvSW1wb3J0XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEJ1bGtVcGRhdGVSZWNvcmRzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBCdWxrVXBkYXRlUmVjb3Jkc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkJ1bGtVcGRhdGVSZWNvcmRzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEJ1bGtEZWxldGVSZWNvcmRzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBCdWxrRGVsZXRlUmVjb3Jkc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkJ1bGtEZWxldGVSZWNvcmRzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuICAgIHB1YmxpYyBhc3luYyBEdXBsaWNhdGVSZWNvcmQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIER1cGxpY2F0ZVJlY29yZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkR1cGxpY2F0ZVJlY29yZFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBRdWVyeVJlY29yZHMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFF1ZXJ5UmVjb3Jkc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPHtcbiAgICAgICAgdG90YWw6IG51bWJlcjtcbiAgICAgICAgcmVjb3JkczogYW55W107XG4gICAgfT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlF1ZXJ5UmVjb3Jkc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBTZWFyY2hSZWNvcmRzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBTZWFyY2hSZWNvcmRzU2NoZW1hPlxuICAgICk6IFByb21pc2U8e1xuICAgICAgICB0b3RhbDogbnVtYmVyO1xuICAgICAgICByZWNvcmRzOiBhbnlbXTtcbiAgICB9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiU2VhcmNoUmVjb3Jkc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDb3VudFJlY29yZHMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENvdW50UmVjb3Jkc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkNvdW50UmVjb3Jkc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHcm91cFJlY29yZHMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdyb3VwUmVjb3Jkc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiR3JvdXBSZWNvcmRzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEFnZ3JlZ2F0ZVJlY29yZHMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEFnZ3JlZ2F0ZVJlY29yZHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkFnZ3JlZ2F0ZVJlY29yZHNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGlzdGluY3RGaWVsZFZhbHVlcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGlzdGluY3RGaWVsZFZhbHVlc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRGlzdGluY3RGaWVsZFZhbHVlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVDb2xsZWN0aW9uRmllbGQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUNvbGxlY3Rpb25GaWVsZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkNyZWF0ZUNvbGxlY3Rpb25GaWVsZFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVDb2xsZWN0aW9uRmllbGQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUNvbGxlY3Rpb25GaWVsZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlVwZGF0ZUNvbGxlY3Rpb25GaWVsZFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVDb2xsZWN0aW9uRmllbGQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUNvbGxlY3Rpb25GaWVsZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkRlbGV0ZUNvbGxlY3Rpb25GaWVsZFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0Q29sbGVjdGlvbkF1dG9tYXRpb25SdWxlcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdENvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0Q29sbGVjdGlvbkF1dG9tYXRpb25SdWxlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGUoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUNvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPFRDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGU+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJDcmVhdGVDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGVcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGVTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiVXBkYXRlQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUNvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRGVsZXRlQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RDb2xsZWN0aW9uVmlld3MoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RDb2xsZWN0aW9uVmlld3NTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUQ29sbGVjdGlvblZpZXdbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkxpc3RDb2xsZWN0aW9uVmlld3NcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQ29sbGVjdGlvblZpZXcoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUNvbGxlY3Rpb25WaWV3U2NoZW1hPlxuICAgICk6IFByb21pc2U8VENvbGxlY3Rpb25WaWV3PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiQ3JlYXRlQ29sbGVjdGlvblZpZXdcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlQ29sbGVjdGlvblZpZXcoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUNvbGxlY3Rpb25WaWV3U2NoZW1hPlxuICAgICk6IFByb21pc2U8VENvbGxlY3Rpb25WaWV3PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiVXBkYXRlQ29sbGVjdGlvblZpZXdcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQ29sbGVjdGlvblZpZXcoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUNvbGxlY3Rpb25WaWV3U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRGVsZXRlQ29sbGVjdGlvblZpZXdcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdENvbGxlY3Rpb25CdXR0b25zKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0Q29sbGVjdGlvbkJ1dHRvbnNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUQ29sbGVjdGlvbkJ1dHRvbltdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdENvbGxlY3Rpb25CdXR0b25zXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUNvbGxlY3Rpb25CdXR0b24oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUNvbGxlY3Rpb25CdXR0b25TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUQ29sbGVjdGlvbkJ1dHRvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkNyZWF0ZUNvbGxlY3Rpb25CdXR0b25cIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlQ29sbGVjdGlvbkJ1dHRvbihcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQ29sbGVjdGlvbkJ1dHRvblNjaGVtYT5cbiAgICApOiBQcm9taXNlPFRDb2xsZWN0aW9uQnV0dG9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiVXBkYXRlQ29sbGVjdGlvbkJ1dHRvblwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVDb2xsZWN0aW9uQnV0dG9uKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVDb2xsZWN0aW9uQnV0dG9uU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRGVsZXRlQ29sbGVjdGlvbkJ1dHRvblwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFeGVjdXRlQ29sbGVjdGlvbkJ1dHRvbihcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRXhlY3V0ZUNvbGxlY3Rpb25CdXR0b25TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJFeGVjdXRlQ29sbGVjdGlvbkJ1dHRvblwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFeGVjdXRlQ29sbGVjdGlvbkFpRmllbGQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEV4ZWN1dGVDb2xsZWN0aW9uQWlGaWVsZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkV4ZWN1dGVDb2xsZWN0aW9uQWlGaWVsZFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0Q29sbGVjdGlvblJlbGF0aW9ucyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdENvbGxlY3Rpb25SZWxhdGlvbnNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUQ29sbGVjdGlvblJlbGF0aW9uW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0Q29sbGVjdGlvblJlbGF0aW9uc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVDb2xsZWN0aW9uUmVsYXRpb24oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUNvbGxlY3Rpb25SZWxhdGlvblNjaGVtYT5cbiAgICApOiBQcm9taXNlPFRDb2xsZWN0aW9uUmVsYXRpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJDcmVhdGVDb2xsZWN0aW9uUmVsYXRpb25cIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlQ29sbGVjdGlvblJlbGF0aW9uKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVDb2xsZWN0aW9uUmVsYXRpb25TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUQ29sbGVjdGlvblJlbGF0aW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiVXBkYXRlQ29sbGVjdGlvblJlbGF0aW9uXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUNvbGxlY3Rpb25SZWxhdGlvbihcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlQ29sbGVjdGlvblJlbGF0aW9uU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRGVsZXRlQ29sbGVjdGlvblJlbGF0aW9uXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RSZWxhdGlvbkNhbmRpZGF0ZXMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RSZWxhdGlvbkNhbmRpZGF0ZXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTx7IGZpZWxkSWQ6IHN0cmluZzsgaXRlbXM6IFRSZWxhdGlvblJlY29yZE9wdGlvbltdIH0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0UmVsYXRpb25DYW5kaWRhdGVzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldFJlY29yZFJlbGF0aW9ucyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0UmVjb3JkUmVsYXRpb25zU2NoZW1hPlxuICAgICk6IFByb21pc2U8e1xuICAgICAgICByZWNvcmRJZDogc3RyaW5nO1xuICAgICAgICB2YWx1ZXM6IFJlY29yZDxzdHJpbmcsIFRSZWxhdGlvblJlY29yZE9wdGlvbltdIHwgVFJlbGF0aW9uUmVjb3JkT3B0aW9uIHwgbnVsbD47XG4gICAgfT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkdldFJlY29yZFJlbGF0aW9uc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSZW9yZGVyQ29sbGVjdGlvbkZpZWxkcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUmVvcmRlckNvbGxlY3Rpb25GaWVsZHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJSZW9yZGVyQ29sbGVjdGlvbkZpZWxkc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRDb2xsZWN0aW9uU2NoZW1hKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRDb2xsZWN0aW9uU2NoZW1hU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiR2V0Q29sbGVjdGlvblNjaGVtYVwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBWYWxpZGF0ZVJlY29yZChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVmFsaWRhdGVSZWNvcmRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJWYWxpZGF0ZVJlY29yZFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQcmV2aWV3VmFsaWRhdGlvbkVycm9ycyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUHJldmlld1ZhbGlkYXRpb25FcnJvcnNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJQcmV2aWV3VmFsaWRhdGlvbkVycm9yc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDaGVja1JlY29yZFBlcm1pc3Npb24oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENoZWNrUmVjb3JkUGVybWlzc2lvblNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkNoZWNrUmVjb3JkUGVybWlzc2lvblwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0UmVjb3JkUGVybWlzc2lvbnMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RSZWNvcmRQZXJtaXNzaW9uc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdFJlY29yZFBlcm1pc3Npb25zXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdyYW50UmVjb3JkUGVybWlzc2lvbihcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR3JhbnRSZWNvcmRQZXJtaXNzaW9uU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiR3JhbnRSZWNvcmRQZXJtaXNzaW9uXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBwdWJsaWMgYXN5bmMgUmV2b2tlUmVjb3JkUGVybWlzc2lvbihcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUmV2b2tlUmVjb3JkUGVybWlzc2lvblNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlJldm9rZVJlY29yZFBlcm1pc3Npb25cIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIC8vLS0td2lraS0tLS0tLS0tXG5cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVXaWtpUGFnZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlV2lraVBhZ2VTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwid2lraVwiLFxuICAgICAgICAgICAgXCJDcmVhdGVXaWtpUGFnZVwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVXaWtpUGFnZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlV2lraVBhZ2VTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJVcGRhdGVXaWtpUGFnZVwiLCB7XG4gICAgICAgICAgICAuLi5wYXlsb2FkLFxuICAgICAgICAgICAgLi4uKHR5cGVvZiBwYXlsb2FkLmZ1bGxQYWdlV2lkdGggPT09IFwiYm9vbGVhblwiXG4gICAgICAgICAgICAgICAgPyB7IGZ1bGxQYWdlV2lkdGg6IFN0cmluZyhwYXlsb2FkLmZ1bGxQYWdlV2lkdGgpIH1cbiAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZVdpa2lQYWdlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVXaWtpUGFnZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkRlbGV0ZVdpa2lQYWdlXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBNb3ZlV2lraVBhZ2UoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIE1vdmVXaWtpUGFnZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIk1vdmVXaWtpUGFnZVwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdFdpa2lQYWdlcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdFdpa2lQYWdlc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiTGlzdFdpa2lQYWdlc1wiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdFdpa2lTcGFjZXMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RXaWtpU3BhY2VzU2NoZW1hPlxuICAgICk6IFByb21pc2U8VFdpa2lTcGFjZVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiTGlzdFdpa2lTcGFjZXNcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZVdpa2lTcGFjZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlV2lraVNwYWNlU2NoZW1hPlxuICAgICk6IFByb21pc2U8VFdpa2lTcGFjZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkNyZWF0ZVdpa2lTcGFjZVwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlV2lraVNwYWNlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVXaWtpU3BhY2VTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUV2lraVNwYWNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiVXBkYXRlV2lraVNwYWNlXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVXaWtpU3BhY2UoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVdpa2lTcGFjZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPHsgZGVsZXRlZDogYm9vbGVhbjsgaWQ6IHN0cmluZyB9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiRGVsZXRlV2lraVNwYWNlXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRQcml2YXRlV2lraVNwYWNlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRQcml2YXRlV2lraVNwYWNlU2NoZW1hPlxuICAgICk6IFByb21pc2U8VFdpa2lTcGFjZSB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJHZXRQcml2YXRlV2lraVNwYWNlXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRXaWtpQWlTZXR0aW5ncyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0V2lraUFpU2V0dGluZ3NTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUV2lraUFpU2V0dGluZyB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJHZXRXaWtpQWlTZXR0aW5nc1wiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgU2V0V2lraUFpU2V0dGluZ3MoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFNldFdpa2lBaVNldHRpbmdzU2NoZW1hPlxuICAgICk6IFByb21pc2U8VFdpa2lBaVNldHRpbmc+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJTZXRXaWtpQWlTZXR0aW5nc1wiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdFdpa2lBaUNvbW1hbmRzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0V2lraUFpQ29tbWFuZHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUV2lraUFpQ29tbWFuZFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiTGlzdFdpa2lBaUNvbW1hbmRzXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVXaWtpQWlDb21tYW5kKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVXaWtpQWlDb21tYW5kU2NoZW1hPlxuICAgICk6IFByb21pc2U8VFdpa2lBaUNvbW1hbmQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJDcmVhdGVXaWtpQWlDb21tYW5kXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSdW5XaWtpQWlDb21tYW5kKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSdW5XaWtpQWlDb21tYW5kU2NoZW1hPlxuICAgICk6IFByb21pc2U8VFdpa2lBaVJ1blJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIlJ1bldpa2lBaUNvbW1hbmRcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFNldFdpa2lQYWdlVXNlclN0YXRlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBTZXRXaWtpUGFnZVVzZXJTdGF0ZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIlNldFdpa2lQYWdlVXNlclN0YXRlXCIsIHtcbiAgICAgICAgICAgIHBhZ2VJZDogcGF5bG9hZC5wYWdlSWQsXG4gICAgICAgICAgICAuLi4odHlwZW9mIHBheWxvYWQudXNlcklkID09PSBcInN0cmluZ1wiICYmIHBheWxvYWQudXNlcklkLnRyaW0oKVxuICAgICAgICAgICAgICAgID8geyB1c2VySWQ6IHBheWxvYWQudXNlcklkLnRyaW0oKSB9XG4gICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAuLi4odHlwZW9mIHBheWxvYWQuaXNGYXZvcml0ZSA9PT0gXCJib29sZWFuXCJcbiAgICAgICAgICAgICAgICA/IHsgaXNGYXZvcml0ZTogU3RyaW5nKHBheWxvYWQuaXNGYXZvcml0ZSkgfVxuICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgLi4uKHR5cGVvZiBwYXlsb2FkLmlzV2F0Y2hpbmcgPT09IFwiYm9vbGVhblwiXG4gICAgICAgICAgICAgICAgPyB7IGlzV2F0Y2hpbmc6IFN0cmluZyhwYXlsb2FkLmlzV2F0Y2hpbmcpIH1cbiAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwbG9hZFdpa2lGaWxlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGxvYWRFZGl0b3JGaWxlU2NoZW1hPlxuICAgICk6IFByb21pc2U8VFVwbG9hZGVkRmlsZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIlVwbG9hZEZpbGVcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJlc29sdmVXaWtpRmlsZVZpZXcoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJlc29sdmVXaWtpRmlsZVZpZXdTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUV2lraUZpbGVWaWV3UmVzb2x1dGlvbj4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmFjdGlvbkNhbGw8YW55PihcIndpa2lcIiwgXCJSZXNvbHZlV2lraUZpbGVWaWV3XCIsIHBheWxvYWQpO1xuICAgICAgICBjb25zdCBzdG9yYWdlUGF0aCA9XG4gICAgICAgICAgICB0aGlzLm5vcm1hbGl6ZVN0b3JhZ2VQYXRoKFN0cmluZyhyZXN1bHQ/LnBhdGggfHwgcmVzdWx0Py5maWxlUGF0aCB8fCByZXN1bHQ/LnVybCB8fCBcIlwiKSk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkVXJsID0gdGhpcy5yZXNvbHZlU3RvcmFnZVZpZXdVcmwoc3RvcmFnZVBhdGgpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgICAgICBmaWxlSWQ6IFN0cmluZyhyZXN1bHQ/LmZpbGVJZCB8fCBwYXlsb2FkLmZpbGVJZCB8fCBcIlwiKSxcbiAgICAgICAgICAgIHBhdGg6IHN0b3JhZ2VQYXRoLFxuICAgICAgICAgICAgZmlsZVBhdGg6IHJlc29sdmVkVXJsIHx8IHN0b3JhZ2VQYXRoLFxuICAgICAgICAgICAgdXJsOiByZXNvbHZlZFVybCB8fCBzdG9yYWdlUGF0aCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlV2lraUNvbW1lbnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVdpa2lDb21tZW50U2NoZW1hPlxuICAgICk6IFByb21pc2U8VFdpa2lDb21tZW50PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiQ3JlYXRlV2lraUNvbW1lbnRcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZVdpa2lDb21tZW50KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVXaWtpQ29tbWVudFNjaGVtYT5cbiAgICApOiBQcm9taXNlPFRXaWtpQ29tbWVudD4ge1xuICAgICAgICBjb25zdCBub3JtYWxpemVkUGF5bG9hZCA9IHtcbiAgICAgICAgICAgIC4uLnBheWxvYWQsXG4gICAgICAgICAgICAuLi4odHlwZW9mIHBheWxvYWQucmVzb2x2ZWQgPT09IFwiYm9vbGVhblwiXG4gICAgICAgICAgICAgICAgPyB7IHJlc29sdmVkOiBwYXlsb2FkLnJlc29sdmVkID8gXCJ0cnVlXCIgOiBcImZhbHNlXCIgfVxuICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICB9IGFzIGFueTtcblxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIlVwZGF0ZVdpa2lDb21tZW50XCIsIG5vcm1hbGl6ZWRQYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlV2lraUNvbW1lbnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVdpa2lDb21tZW50U2NoZW1hPlxuICAgICk6IFByb21pc2U8eyBpZDogc3RyaW5nOyBkZWxldGVkQXQ6IHN0cmluZyB9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiRGVsZXRlV2lraUNvbW1lbnRcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RXaWtpQ29tbWVudHMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RXaWtpQ29tbWVudHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUV2lraUNvbW1lbnRQYWdpbmF0aW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiTGlzdFdpa2lDb21tZW50c1wiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlV2lraVJlZmVyZW5jZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlV2lraVJlZmVyZW5jZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPFRXaWtpUmVmZXJlbmNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiQ3JlYXRlV2lraVJlZmVyZW5jZVwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlV2lraVJlZmVyZW5jZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlV2lraVJlZmVyZW5jZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPFRXaWtpUmVmZXJlbmNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiVXBkYXRlV2lraVJlZmVyZW5jZVwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0V2lraVJlZmVyZW5jZUJ5SWQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldFdpa2lSZWZlcmVuY2VCeUlkU2NoZW1hPlxuICAgICk6IFByb21pc2U8VFdpa2lSZWZlcmVuY2U+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJHZXRXaWtpUmVmZXJlbmNlQnlJZFwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdFdpa2lSZWZlcmVuY2VzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0V2lraVJlZmVyZW5jZXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUV2lraVJlZmVyZW5jZUxpc3RSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkxpc3RXaWtpUmVmZXJlbmNlc1wiLCB7XG4gICAgICAgICAgICAuLi5wYXlsb2FkLFxuICAgICAgICAgICAgLi4uKHR5cGVvZiBwYXlsb2FkLmxpbWl0ID09PSBcIm51bWJlclwiID8geyBsaW1pdDogU3RyaW5nKHBheWxvYWQubGltaXQpIH0gOiB7fSksXG4gICAgICAgICAgICAuLi4odHlwZW9mIHBheWxvYWQub2Zmc2V0ID09PSBcIm51bWJlclwiID8geyBvZmZzZXQ6IFN0cmluZyhwYXlsb2FkLm9mZnNldCkgfSA6IHt9KSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZVdpa2lSZWZlcmVuY2UoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVdpa2lSZWZlcmVuY2VTY2hlbWE+XG4gICAgKTogUHJvbWlzZTx7IGlkOiBzdHJpbmc7IGRlbGV0ZWRBdDogc3RyaW5nIH0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJEZWxldGVXaWtpUmVmZXJlbmNlXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSZXN0b3JlV2lraVBhZ2UoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJlc3RvcmVXaWtpUGFnZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIlJlc3RvcmVXaWtpUGFnZVwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0V2lraVBhZ2VCeUlkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRXaWtpUGFnZUJ5SWRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJHZXRXaWtpUGFnZUJ5SWRcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldFdpa2lQYWdlQnlTbHVnKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRXaWtpUGFnZUJ5U2x1Z1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkdldFdpa2lQYWdlQnlTbHVnXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRXaWtpVHJlZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0V2lraVRyZWVTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJHZXRXaWtpVHJlZVwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgKiBXaWtpIFJldmlzaW9uXG4gICAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlV2lraVJldmlzaW9uKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVXaWtpUmV2aXNpb25TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJDcmVhdGVXaWtpUmV2aXNpb25cIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldExhdGVzdFdpa2lSZXZpc2lvbihcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0TGF0ZXN0V2lraVJldmlzaW9uU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiR2V0TGF0ZXN0V2lraVJldmlzaW9uXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRXaWtpUmV2aXNpb25CeUlkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRXaWtpUmV2aXNpb25CeUlkU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiR2V0V2lraVJldmlzaW9uQnlJZFwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdENoYXRIaXN0b3J5KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0Q2hhdEhpc3RvcnlTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXQoXCIvY2hhdC9oaXN0b3J5XCIsIHBheWxvYWQpO1xuICAgIH1cblxufVxuIl19
|
|
1066
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2R1bGVzL2VtcGxvaWQvc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFlckQsTUFBTSxPQUFPLGNBQWUsU0FBUSxhQUFhO0lBQ25DLGNBQWM7UUFDcEIsT0FBTyw4QkFBOEIsQ0FBQztJQUMxQyxDQUFDO0lBRU8sU0FBUyxDQUFDLEtBQWE7UUFDM0IsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxRQUFnQjtRQUN6QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNkLE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzdCLE9BQU8sVUFBVSxDQUFDO1FBQ3RCLENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FBQztJQUN0RSxDQUFDO0lBRU8sa0JBQWtCO1FBQ3RCLE1BQU0sYUFBYSxHQUFHO1lBQ2xCLE9BQU8sT0FBTyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNyRSxPQUFPLE9BQU8sS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsNkJBQTZCLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDakYsT0FBTyxPQUFPLEtBQUssV0FBVyxD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QUFPLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRU0sS0FBSyxDQUFDLGlCQUFpQixDQUMxQixPQUFnRDtRQUVoRCxPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVNLEtBQUssQ0FBQyxXQUFXLENBQ3BCLE9BQTBDO1FBRTFDLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVEOzs0RUFFd0U7SUFFakUsS0FBSyxDQUFDLGtCQUFrQixDQUMzQixPQUFpRDtRQUVqRCxPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVNLEtBQUssQ0FBQyxxQkFBcUIsQ0FDOUIsT0FBb0Q7UUFFcEQsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLHVCQUF1QixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFTSxLQUFLLENBQUMsbUJBQW1CLENBQzVCLE9BQWtEO1FBRWxELE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FDeEIsT0FBOEM7UUFFOUMsT0FBTyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hELENBQUM7Q0FFSiIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHogZnJvbSBcInpvZFwiO1xuaW1wb3J0IHsgU2VydmljZUNsaWVudCB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlLWNsaWVudFwiO1xuXG5cbmltcG9ydCB7IEFnZ3JlZ2F0ZVJlY29yZHNTY2hlbWEsIEJ1bGtDcmVhdGVSZWNvcmRzU2NoZW1hLCBCdWxrRGVsZXRlUmVjb3Jkc1NjaGVtYSwgQnVsa1VwZGF0ZVJlY29yZHNTY2hlbWEsIENoYW5nZUFnZW50Zmxvd1Byb2plY3RTY2hlbWEsIENoZWNrUmVjb3JkUGVybWlzc2lvblNjaGVtYSwgQ29ubmVjdFRyZWxsb0ltcG9ydENyZWRlbnRpYWxTY2hlbWEsIENvdW50UmVjb3Jkc1NjaGVtYSwgQ3JlYXRlQWdlbnRGbG93Rm9sZGVyU2NoZW1hLCBDcmVhdGVBZ2VudEZsb3dTY2hlbWEsIENyZWF0ZUFzc2lzdGFudENoYW5uZWxTY2hlbWEsIENyZWF0ZUFzc2lzdGFudENvbnN0cmFpbnRTY2hlbWEsIENyZWF0ZUFzc2lzdGFudERhdGFzb3VyY2VTY2hlbWEsIENyZWF0ZUFzc2lzdGFudEluc3RydWN0aW9uU2NoZW1hLCBDcmVhdGVBc3Npc3RhbnRTY2hlbWEsIENyZWF0ZUFzc2lzdGFudFNraWxsU2NoZW1hLCBDcmVhdGVDaGFubmVsU2NoZW1hLCBDcmVhdGVDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGVTY2hlbWEsIENyZWF0ZUNvbGxlY3Rpb25CdXR0b25TY2hlbWEsIENyZWF0ZUNvbGxlY3Rpb25GaWVsZFNjaGVtYSwgQ3JlYXRlQ29sbGVjdGlvblJlbGF0aW9uU2NoZW1hLCBDcmVhdGVDb2xsZWN0aW9uU2NoZW1hLCBDcmVhdGVDb2xsZWN0aW9uVmlld1NjaGVtYSwgQ3JlYXRlQ29tbWFuZFNjaGVtYSwgQ3JlYXRlQ29tcGV0ZW5jeVNjaGVtYSwgQ3JlYXRlQ29uc3RyYWludFNjaGVtYSwgQ3JlYXRlRGF0YU1vZGVsU2NoZW1hLCBDcmVhdGVEYXRhc291cmNlU2NoZW1hLCBDcmVhdGVEb21haW5Ub3BpY1NjaGVtYSwgQ3JlYXRlRHJpdmVGb2xkZXJTY2hlbWEsIENyZWF0ZURyaXZlUm9vdEZvbGRlclNjaGVtYSwgQ3JlYXRlRHJpdmVSb290U2NoZW1hLCBDcmVhdGVFbXBsb2lkU2NoZW1hLCBDcmVhdGVFeHRlbnNpb25TY2hlbWEsIENyZWF0ZUlucHV0U2NoZW1hLCBDcmVhdGVJbnN0cnVjdGlvblNjaGVtYSwgQ3JlYXRlSm9iRGVmaW5pdGlvblNjaGVtYSwgQ3JlYXRlS25vd2xlZGdlU2NoZW1hLCBDcmVhdGVPY2N1cGF0aW9uU2NoZW1hLCBDcmVhdGVSZWNvcmRTY2hlbWEsIENyZWF0ZVNjb3BlU2NoZW1hLCBDcmVhdGVTa2lsbFNjaGVtYSwgQ3JlYXRlU3RyZWFtSWRTY2hlbWEsIENyZWF0ZVRhc2tUZW1wbGF0ZVNjaGVtYSwgQ3JlYXRlVGVhbVNjaGVtYSwgQ3JlYXRlVG9waWNTY2hlbWEsIENyZWF0ZVdpa2lBaUNvbW1hbmRTY2hlbWEsIENyZWF0ZVdpa2lDb21tZW50U2NoZW1hLCBDcmVhdGVXaWtpUGFnZVNjaGVtYSwgQ3JlYXRlV2lraVJlZmVyZW5jZVNjaGVtYSwgQ3JlYXRlV2lraVJldmlzaW9uU2NoZW1hLCBDcmVhdGVXb3JrZXJTY2hlbWEsIENyZWF0ZVdvcmtlclRvcGljU2NoZW1hLCBEZWxldGVBZ2VudEZsb3dGb2xkZXJTY2hlbWEsIERlbGV0ZUFnZW50Rmxvd1NjaGVtYSwgRGVsZXRlQXNzaXN0YW50Q2hhbm5lbFNjaGVtYSwgRGVsZXRlQXNzaXN0YW50RGF0YXNvdXJjZVNjaGVtYSwgRGVsZXRlQXNzaXN0YW50U2NoZW1hLCBEZWxldGVBc3Npc3RhbnRTa2lsbFNjaGVtYSwgRGVsZXRlQ2hhbm5lbFNjaGVtYSwgRGVsZXRlQ2hhdEJ5SWRTY2hlbWEsIERlbGV0ZUNvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZVNjaGVtYSwgRGVsZXRlQ29sbGVjdGlvbkJ1dHRvblNjaGVtYSwgRGVsZXRlQ29sbGVjdGlvbkZpZWxkU2NoZW1hLCBEZWxldGVDb2xsZWN0aW9uUmVsYXRpb25TY2hlbWEsIERlbGV0ZUNvbGxlY3Rpb25WaWV3U2NoZW1hLCBEZWxldGVDb21tYW5kU2NoZW1hLCBEZWxldGVDb21wZXRlbmN5U2NoZW1hLCBEZWxldGVDb25zdHJhaW50U2NoZW1hLCBEZWxldGVEYXRhTW9kZWxTY2hlbWEsIERlbGV0ZURhdGFzb3VyY2VTY2hlbWEsIERlbGV0ZURvY3VtZW50c0J5SWRBZnRlclRpbWVzdGFtcFNjaGVtYSwgRGVsZXRlRG9tYWluVG9waWNTY2hlbWEsIERlbGV0ZURyaXZlSXRlbVNjaGVtYSwgRGVsZXRlRHJpdmVSb290SXRlbVNjaGVtYSwgRGVsZXRlRHJpdmVSb290U2NoZW1hLCBEZWxldGVFbXBsb2lkU2NoZW1hLCBEZWxldGVFeHRlbnNpb25TY2hlbWEsIERlbGV0ZUlucHV0U2NoZW1hLCBEZWxldGVJbnN0cnVjdGlvblNjaGVtYSwgRGVsZXRlSm9iRGVmaW5pdGlvblNjaGVtYSwgRGVsZXRlS25vd2xlZGdlU2NoZW1hLCBEZWxldGVNZXNzYWdlc0J5Q2hhdElkQWZ0ZXJUaW1lc3RhbXBTY2hlbWEsIERlbGV0ZU9jY3VwYXRpb25TY2hlbWEsIERlbGV0ZVJlY29yZFNjaGVtYSwgRGVsZXRlU2NvcGVTY2hlbWEsIERlbGV0ZVNraWxsU2NoZW1hLCBEZWxldGVUYXNrVGVtcGxhdGVTY2hlbWEsIERlbGV0ZVRlYW1TY2hlbWEsIERlbGV0ZVRvcGljU2NoZW1hLCBEZWxldGVXaWtpQ29tbWVudFNjaGVtYSwgRGVsZXRlV2lraVBhZ2VTY2hlbWEsIERlbGV0ZVdpa2lSZWZlcmVuY2VTY2hlbWEsIERlbGV0ZVdvcmtlclNjaGVtYSwgRGVsZXRlV29ya2VyVG9waWNTY2hlbWEsIERpc3RpbmN0RmllbGRWYWx1ZXNTY2hlbWEsIER1cGxpY2F0ZUFnZW50Rmxvd1NjaGVtYSwgRHVwbGljYXRlUmVjb3JkU2NoZW1hLCBFbmhhbmNlVG9waWNTY2hlbWEsIEVuc3VyZUFpcnRhYmxlSW1wb3J0Q3JlZGVudGlhbFNjaGVtYSwgRW5zdXJlRHJpdmVQcm92aWRlckNyZWRlbnRpYWxTY2hlbWEsIEVuc3VyZUdtYWlsSW1wb3J0Q3JlZGVudGlhbFNjaGVtYSwgRW5zdXJlR2l0aHViSW1wb3J0Q3JlZGVudGlhbFNjaGVtYSwgRW5zdXJlSmlyYUltcG9ydENyZWRlbnRpYWxTY2hlbWEsIEVuc3VyZUxpbmVhckltcG9ydENyZWRlbnRpYWxTY2hlbWEsIEVuc3VyZU5vdGlvbkltcG9ydENyZWRlbnRpYWxTY2hlbWEsIEVuc3VyZVRyZWxsb0ltcG9ydENyZWRlbnRpYWxTY2hlbWEsIEV4ZWN1dGVDb2xsZWN0aW9uQWlGaWVsZFNjaGVtYSwgRXhlY3V0ZUNvbGxlY3Rpb25CdXR0b25TY2hlbWEsIEV4cG9ydERhdGFNb2RlbFNjaGVtYSwgR2V0Q2hhdEJ5SWRTY2hlbWEsIEdldENoYXRzQnlVc2VySWRTY2hlbWEsIEdldENvbGxlY3Rpb25CeUlkU2NoZW1hLCBHZXRDb2xsZWN0aW9uU2NoZW1hU2NoZW1hLCBHZXREYXRhTW9kZWxCeUlkU2NoZW1hLCBHZXREb2N1bWVudEJ5SWRTY2hlbWEsIEdldERvY3VtZW50c0J5SWRTY2hlbWEsIEdldERyaXZlRGVsZXRlSW1wYWN0U2NoZW1hLCBHZXREcml2ZVJvb3REZWxldGVJbXBhY3RTY2hlbWEsIEdldExhdGVzdFdpa2lSZXZpc2lvblNjaGVtYSwgR2V0TWFya2V0U3RvcmVJdGVtU2NoZW1hLCBHZXRNZXNzYWdlQnlJZFNjaGVtYSwgR2V0TWVzc2FnZUNvdW50QnlVc2VySWRTY2hlbWEsIEdldE1lc3NhZ2VzQnlDaGF0SWRTY2hlbWEsIEdldFByaXZhdGVBZ2VudEZsb3dGb2xkZXJTY2hlbWEsIEdldFJlY29yZEJ5SWRTY2hlbWEsIEdldFJlY29yZFJlbGF0aW9uc1NjaGVtYSwgR2V0U2NvcGVCeVR5cGVTY2hlbWEsIEdldFN0cmVhbUlkc0J5Q2hhdElkU2NoZW1hLCBHZXRTdWdnZXN0aW9uc0J5RG9jdW1lbnRJZFNjaGVtYSwgR2V0Vm90ZXNCeUNoYXRJZFNjaGVtYSwgR2V0V2lraUFpU2V0dGluZ3NTY2hlbWEsIEdldFdpa2lQYWdlQnlJZFNjaGVtYSwgR2V0V2lraVBhZ2VCeVNsdWdTY2hlbWEsIEdldFdpa2lSZWZlcmVuY2VCeUlkU2NoZW1hLCBHZXRXaWtpUmV2aXNpb25CeUlkU2NoZW1hLCBHZXRXaWtpVHJlZVNjaGVtYSwgR3JhbnRSZWNvcmRQZXJtaXNzaW9uU2NoZW1hLCBHcm91cFJlY29yZHNTY2hlbWEsIEhhcmREZWxldGVEYXRhTW9kZWxTY2hlbWEsIExpc3RBZ2VudEZsb3dGb2xkZXJzU2NoZW1hLCBMaXN0QWdlbnRGbG93c1NjaGVtYSwgTGlzdEFpcnRhYmxlSW1wb3J0U291cmNlc1NjaGVtYSwgTGlzdEFzc2lzdGFudENoYW5uZWxzU2NoZW1hLCBMaXN0QXNzaXN0YW50Q29uc3RyYWludHNTY2hlbWEsIExpc3RBc3Npc3RhbnREYXRhc291cmNlc1NjaGVtYSwgTGlzdEFzc2lzdGFudEluc3RydWN0aW9uc1NjaGVtYSwgTGlzdEFzc2lzdGFudFNraWxsc1NjaGVtYSwgTGlzdEFzc2lzdGFudHNTY2hlbWEsIExpc3RDaGFubmVsc1NjaGVtYSwgTGlzdENoYXRIaXN0b3J5U2NoZW1hLCBMaXN0Q29sbGVjdGlvbkF1dG9tYXRpb25SdWxlc1NjaGVtYSwgTGlzdENvbGxlY3Rpb25CdXR0b25zU2NoZW1hLCBMaXN0Q29sbGVjdGlvblJlbGF0aW9uc1NjaGVtYSwgTGlzdENvbGxlY3Rpb25zU2NoZW1hLCBMaXN0Q29sbGVjdGlvblZpZXdzU2NoZW1hLCBMaXN0Q29tbWFuZHNTY2hlbWEsIExpc3RDb21wZXRlbmNpZXNTY2hlbWEsIExpc3RDb25zdHJhaW50c1NjaGVtYSwgTGlzdERhdGFNb2RlbHNTY2hlbWEsIExpc3REYXRhc291cmNlc1NjaGVtYSwgTGlzdERvbWFpblRvcGljc1NjaGVtYSwgTGlzdERyaXZlSXRlbXNTY2hlbWEsIExpc3REcml2ZVByb3ZpZGVyRm9sZGVyc1NjaGVtYSwgTGlzdERyaXZlUm9vdEl0ZW1zU2NoZW1hLCBMaXN0RHJpdmVSb290c1NjaGVtYSwgTGlzdERyaXZlUm9vdFRyZWVTY2hlbWEsIExpc3REcml2ZVRyZWVTY2hlbWEsIExpc3RFbXBsb2lkc1BhZ2luYXRlZFNjaGVtYSwgTGlzdEVtcGxvaWRzU2NoZW1hLCBMaXN0RXh0ZW5zaW9uc1NjaGVtYSwgTGlzdEdtYWlsSW1wb3J0U291cmNlc1NjaGVtYSwgTGlzdEdpdGh1YkltcG9ydFNvdXJjZXNTY2hlbWEsIExpc3RJbnB1dFNjaGVtYSwgTGlzdEluc3RydWN0aW9uc1NjaGVtYSwgTGlzdEppcmFJbXBvcnRTb3VyY2VzU2NoZW1hLCBMaXN0Sm9iRGVmaW5pdGlvblNjaGVtYSwgTGlzdEtub3dsZWRnZXNTY2hlbWEsIExpc3RMaW5lYXJJbXBvcnRTb3VyY2VzU2NoZW1hLCBMaXN0TWFya2V0U3RvcmVJdGVtc1NjaGVtYSwgTGlzdE5vdGlvbkltcG9ydFNvdXJjZXNTY2hlbWEsIExpc3RPY2N1cGF0aW9uc1NjaGVtYSwgTGlzdFJlY29yZFBlcm1pc3Npb25zU2NoZW1hLCBMaXN0UmVjb3Jkc1NjaGVtYSwgTGlzdFJlbGF0aW9uQ2FuZGlkYXRlc1NjaGVtYSwgTGlzdFNjb3Blc1NjaGVtYSwgTGlzdFNraWxsc1NjaGVtYSwgTGlzdFRhc2tUZW1wbGF0ZXNTY2hlbWEsIExpc3RUZWFtc1NjaGVtYSwgTGlzdFRvcGljc1NjaGVtYSwgTGlzdFRyZWxsb0ltcG9ydFNvdXJjZXNTY2hlbWEsIExpc3RXaWtpQWlDb21tYW5kc1NjaGVtYSwgTGlzdFdpa2lDb21tZW50c1NjaGVtYSwgTGlzdFdpa2lQYWdlc1NjaGVtYSwgTGlzdFdpa2lSZWZlcmVuY2VzU2NoZW1hLCBMaXN0V29ya2Vyc1NjaGVtYSwgTGlzdFdvcmtlclRvcGljc1NjaGVtYSwgTW92ZURyaXZlSXRlbVNjaGVtYSwgTW92ZURyaXZlUm9vdEl0ZW1TY2hlbWEsIE1vdmVXaWtpUGFnZVNjaGVtYSwgUHJlcGFyZURyaXZlVXBsb2FkU2NoZW1hLCBQcmV2aWV3QWlydGFibGVJbXBvcnRTY2hlbWEsIFByZXZpZXdDc3ZJbXBvcnRTY2hlbWEsIFByZXZpZXdHbWFpbEltcG9ydFNjaGVtYSwgUHJldmlld0dpdGh1YkltcG9ydFNjaGVtYSwgUHJldmlld0ppcmFJbXBvcnRTY2hlbWEsIFByZXZpZXdMaW5lYXJJbXBvcnRTY2hlbWEsIFByZXZpZXdOb3Rpb25JbXBvcnRTY2hlbWEsIFByZXZpZXdUcmVsbG9JbXBvcnRTY2hlbWEsIFByZXZpZXdWYWxpZGF0aW9uRXJyb3JzU2NoZW1hLCBQdWJsaXNoRG9tYWluU2NoZW1hLCBQdWJsaXNoRW1wbG9pZFNjaGVtYSwgUHVibGlzaFdvcmtlclRvTWFya2V0U3RvcmVTY2hlbWEsIFF1ZXJ5UmVjb3Jkc1NjaGVtYSwgUmVhZERyaXZlUm9vdEZpbGVDb250ZW50U2NoZW1hLCBSZW5hbWVEcml2ZUl0ZW1TY2hlbWEsIFJlbmFtZURyaXZlUm9vdEl0ZW1TY2hlbWEsIFJlb3JkZXJDb2xsZWN0aW9uRmllbGRzU2NoZW1hLCBSZXNvbHZlQ29sbGVjdGlvbkZpbGVWaWV3U2NoZW1hLCBSZXNvbHZlRHJpdmVEb3dubG9hZFNjaGVtYSwgUmVzb2x2ZURyaXZlUm9vdERvd25sb2FkU2NoZW1hLCBSZXNvbHZlU2NvcGVGaWxlVmlld1NjaGVtYSwgUmVzb2x2ZVdpa2lGaWxlVmlld1NjaGVtYSwgUmVzdG9yZURhdGFNb2RlbFNjaGVtYSwgUmVzdG9yZVJlY29yZFNjaGVtYSwgUmVzdG9yZVdpa2lQYWdlU2NoZW1hLCBSZXZva2VSZWNvcmRQZXJtaXNzaW9uU2NoZW1hLCBSdW5BaXJ0YWJsZUltcG9ydFNjaGVtYSwgUnVuQ3N2SW1wb3J0U2NoZW1hLCBSdW5HbWFpbEltcG9ydFNjaGVtYSwgUnVuR2l0aHViSW1wb3J0U2NoZW1hLCBSdW5KaXJhSW1wb3J0U2NoZW1hLCBSdW5MaW5lYXJJbXBvcnRTY2hlbWEsIFJ1bk5vdGlvbkltcG9ydFNjaGVtYSwgUnVuVHJlbGxvSW1wb3J0U2NoZW1hLCBSdW5XaWtpQWlDb21tYW5kU2NoZW1hLCBTYXZlQ2hhdFNjaGVtYSwgU2F2ZURvY3VtZW50U2NoZW1hLCBTYXZlTWVzc2FnZXNTY2hlbWEsIFNhdmVTdWdnZXN0aW9uc1NjaGVtYSwgU2VhcmNoRHJpdmVJdGVtc1NjaGVtYSwgU2VhcmNoRHJpdmVSb290SXRlbXNTY2hlbWEsIFNlYXJjaFJlY29yZHNTY2hlbWEsIFNldFdpa2lBaVNldHRpbmdzU2NoZW1hLCBTZXRXaWtpUGFnZVVzZXJTdGF0ZVNjaGVtYSwgVXBkYXRlQWdlbnRGbG93Rm9sZGVyU2NoZW1hLCBVcGRhdGVBZ2VudEZsb3dTY2hlbWEsIFVwZGF0ZUFzc2lzdGFudENoYW5uZWxTY2hlbWEsIFVwZGF0ZUFzc2lzdGFudERhdGFzb3VyY2VTY2hlbWEsIFVwZGF0ZUFzc2lzdGFudFNjaGVtYSwgVXBkYXRlQXNzaXN0YW50U2tpbGxTY2hlbWEsIFVwZGF0ZUNoYW5uZWxTY2hlbWEsIFVwZGF0ZUNoYXRMYXN0Q29udGV4dEJ5SWRTY2hlbWEsIFVwZGF0ZUNoYXRWaXNpYmxpdHlCeUlkU2NoZW1hLCBVcGRhdGVDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGVTY2hlbWEsIFVwZGF0ZUNvbGxlY3Rpb25CdXR0b25TY2hlbWEsIFVwZGF0ZUNvbGxlY3Rpb25GaWVsZFNjaGVtYSwgVXBkYXRlQ29sbGVjdGlvblJlbGF0aW9uU2NoZW1hLCBVcGRhdGVDb2xsZWN0aW9uVmlld1NjaGVtYSwgVXBkYXRlQ29tbWFuZFNjaGVtYSwgVXBkYXRlQ29tcGV0ZW5jeVNjaGVtYSwgVXBkYXRlQ29uc3RyYWludFNjaGVtYSwgVXBkYXRlRGF0YU1vZGVsU2NoZW1hLCBVcGRhdGVEYXRhc291cmNlU2NoZW1hLCBVcGRhdGVEb21haW5Ub3BpY1NjaGVtYSwgVXBkYXRlRW1wbG9pZFNjaGVtYSwgVXBkYXRlRXh0ZW5zaW9uU2NoZW1hLCBVcGRhdGVJbnB1dFNjaGVtYSwgVXBkYXRlSW5zdHJ1Y3Rpb25TY2hlbWEsIFVwZGF0ZUpvYkRlZmluaXRpb25TY2hlbWEsIFVwZGF0ZUtub3dsZWRnZVNjaGVtYSwgVXBkYXRlT2NjdXBhdGlvblNjaGVtYSwgVXBkYXRlUmVjb3JkU2NoZW1hLCBVcGRhdGVTY29wZVNjaGVtYSwgVXBkYXRlU2tpbGxTY2hlbWEsIFVwZGF0ZVRhc2tUZW1wbGF0ZVNjaGVtYSwgVXBkYXRlVGVhbVNjaGVtYSwgVXBkYXRlVG9waWNTY2hlbWEsIFVwZGF0ZVdpa2lDb21tZW50U2NoZW1hLCBVcGRhdGVXaWtpUGFnZVNjaGVtYSwgVXBkYXRlV2lraVJlZmVyZW5jZVNjaGVtYSwgVXBkYXRlV29ya2VyU2NoZW1hLCBVcGRhdGVXb3JrZXJUb3BpY1NjaGVtYSwgVXBsb2FkQ29sbGVjdGlvbkZpbGVTY2hlbWEsIFVwbG9hZERyaXZlUm9vdEZpbGVzU2NoZW1hLCBVcGxvYWRFZGl0b3JGaWxlU2NoZW1hLCBVcHNlcnRSZWNvcmRTY2hlbWEsIFZhbGlkYXRlUmVjb3JkU2NoZW1hLCBWb3RlTWVzc2FnZVNjaGVtYSB9IGZyb20gXCIuL3NjaGVtYVwiO1xuaW1wb3J0IHsgVEFnZW50RmxvdywgVEFnZW50Rmxvd0ZvbGRlciwgVEFzc2lzdGFudCwgVEFzc2lzdGFudENoYW5uZWwsIFRBc3Npc3RhbnRDb25zdHJhaW50LCBUQXNzaXN0YW50RGF0YXNvdXJjZSwgVEFzc2lzdGFudEluc3RydWN0aW9uLCBUQXNzaXN0YW50U2tpbGwsIFRDaGFubmVsLCBUQ2hhdCwgVENvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZSwgVENvbGxlY3Rpb25CdXR0b24sIFRDb2xsZWN0aW9uUmVsYXRpb24sIFRDb2xsZWN0aW9uVmlldywgVENvbW1hbmQsIFRDb21wZXRlbmN5LCBUQ29uc3RyYWludCwgVERhdGFzb3VyY2UsIFREZWxldGVBZ2VudEZsb3dSZXN1bHQsIFREb2N1bWVudCwgVERvbWFpblRvcGljLCBURHJpdmVEZWxldGVJbXBhY3QsIFREcml2ZUZpbGVDb250ZW50LCBURHJpdmVJdGVtLCBURHJpdmVQcm92aWRlckZvbGRlciwgVERyaXZlUm9vdCwgVERyaXZlUm9vdFByb3ZpZGVyLCBURHJpdmVUcmVlTm9kZSwgVEVtcGxvaWQsIFRFbmhhbmNlVG9waWMsIFRFeHRlbnNpb24sIFRJbnB1dCwgVEluc3RydWN0aW9uLCBUSm9iRGVmaW5pdGlvbiwgVEtub3dsZWRnZSwgVE1hcmtldFN0b3JlSXRlbSwgVE9jY3VwYXRpb24sIFRQYWdpbmF0ZWRFbXBsb2lkc1Jlc3VsdCwgVFByZXBhcmVkRHJpdmVVcGxvYWQsIFRQdWJsaXNoRW1wbG9pZCwgVFB1Ymxpc2hXb3JrZXJUb01hcmtldFN0b3JlLCBUUmVsYXRpb25SZWNvcmRPcHRpb24sIFRTY29wZSwgVFNraWxsLCBUU3RyZWFtSWQsIFRUYXNrVGVtcGxhdGUsIFRUZWFtLCBUVG9waWMsIFRVcGxvYWRlZEZpbGUsIFRXaWtpQWlDb21tYW5kLCBUV2lraUFpUnVuUmVzdWx0LCBUV2lraUFpU2V0dGluZywgVFdpa2lDb21tZW50LCBUV2lraUNvbW1lbnRQYWdpbmF0aW9uLCBUV2lraUZpbGVWaWV3UmVzb2x1dGlvbiwgVFdpa2lSZWZlcmVuY2UsIFRXaWtpUmVmZXJlbmNlTGlzdFJlc3BvbnNlLCBUV29ya2VyLCBUV29ya2VyVG9waWMgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgSW1wb3J0RGF0YU1vZGVsU2NoZW1hIH0gZnJvbSBcIi4vc2NoZW1hXCI7XG5pbXBvcnQge1xuICAgIENyZWF0ZVdpa2lTcGFjZVNjaGVtYSxcbiAgICBEZWxldGVXaWtpU3BhY2VTY2hlbWEsXG4gICAgR2V0UHJpdmF0ZVdpa2lTcGFjZVNjaGVtYSxcbiAgICBMaXN0V2lraVNwYWNlc1NjaGVtYSxcbiAgICBVcGRhdGVXaWtpU3BhY2VTY2hlbWEsXG59IGZyb20gXCIuL3NjaGVtYVwiO1xuaW1wb3J0IHR5cGUgeyBUV2lraVNwYWNlIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuZXhwb3J0IGNsYXNzIEVtcGxvaWRTZXJ2aWNlIGV4dGVuZHMgU2VydmljZUNsaWVudCB7XG4gICAgcHJvdGVjdGVkIGdldFNlcnZpY2VOYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnY29tLmFwcGNvbmRhLnNlcnZpY2UuZW1wbG9pZCc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0h0dHBVcmwodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gL15odHRwcz86XFwvXFwvL2kudGVzdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBub3JtYWxpemVTdG9yYWdlUGF0aChwYXRoTGlrZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IFN0cmluZyhwYXRoTGlrZSB8fCBcIlwiKS50cmltKCk7XG4gICAgICAgIGlmICghbm9ybWFsaXplZCkge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0h0dHBVcmwobm9ybWFsaXplZCkpIHtcbiAgICAgICAgICAgIHJldHVybiBub3JtYWxpemVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWQuc3RhcnRzV2l0aChcIi9cIikgPyBub3JtYWxpemVkIDogYC8ke25vcm1hbGl6ZWR9YDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc29sdmVFbnZFbmRwb2ludCgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBlbnZDYW5kaWRhdGVzID0gW1xuICAgICAgICAgICAgdHlwZW9mIHByb2Nlc3MgIT09IFwidW5kZWZpbmVkXCIgPyBwcm9jZXNzPy5lbnY/LkFQUENPTkRBX0VORFBPSU5UIDogXCJcIixcbiAgICAgICAgICAgIHR5cGVvZiBwcm9jZXNzICE9PSBcInVuZGVmaW5lZFwiID8gcHJvY2Vzcz8uZW52Py5ORVhUX1BVQkxJQ19BUFBDT05EQV9FTkRQT0lOVCA6IFwiXCIsXG4gICAgICAgICAgICB0eXBlb2YgcHJvY2VzcyAhPT0gXCJ1bmRlZmluZWRcIiA/IHByb2Nlc3M/LmVudj8uX0FQUF9BUFBDT05EQV9FTkRQT0lOVCA6IFwiXCIsXG4gICAgICAgIF07XG5cbiAgICAgICAgZm9yIChjb25zdCBjYW5kaWRhdGUgb2YgZW52Q2FuZGlkYXRlcykge1xuICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IFN0cmluZyhjYW5kaWRhdGUgfHwgXCJcIikudHJpbSgpLnJlcGxhY2UoL1xcLyskLywgXCJcIik7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0h0dHBVcmwobm9ybWFsaXplZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9ybWFsaXplZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzb2x2ZVN0b3JhZ2VWaWV3VXJsKHN0b3JhZ2VQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBub3JtYWxpemVkUGF0aCA9IHRoaXMubm9ybWFsaXplU3RvcmFnZVBhdGgoc3RvcmFnZVBhdGgpO1xuICAgICAgICBpZiAoIW5vcm1hbGl6ZWRQYXRoKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzSHR0cFVybChub3JtYWxpemVkUGF0aCkpIHtcbiAgICAgICAgICAgIHJldHVybiBub3JtYWxpemVkUGF0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVuZHBvaW50ID0gU3RyaW5nKHRoaXMuY2xpZW50LmNvbmZpZy5lbmRwb2ludCB8fCBcIlwiKS50cmltKCkucmVwbGFjZSgvXFwvKyQvLCBcIlwiKTtcbiAgICAgICAgaWYgKHRoaXMuaXNIdHRwVXJsKGVuZHBvaW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIGAke2VuZHBvaW50fSR7bm9ybWFsaXplZFBhdGh9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICBjb25zdCBwcm90b2NvbCA9IHdpbmRvdz8ubG9jYXRpb24/LnByb3RvY29sIHx8IFwiXCI7XG4gICAgICAgICAgICBpZiAocHJvdG9jb2wgJiYgcHJvdG9jb2wgIT09IFwiZmlsZTpcIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbiA9IFN0cmluZyh3aW5kb3c/LmxvY2F0aW9uPy5vcmlnaW4gfHwgXCJcIikucmVwbGFjZSgvXFwvKyQvLCBcIlwiKTtcbiAgICAgICAgICAgICAgICBpZiAob3JpZ2luKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRFbmRwb2ludCA9IGVuZHBvaW50XG4gICAgICAgICAgICAgICAgICAgICAgICA/IChlbmRwb2ludC5zdGFydHNXaXRoKFwiL1wiKSA/IGVuZHBvaW50IDogYC8ke2VuZHBvaW50fWApXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtvcmlnaW59JHtub3JtYWxpemVkRW5kcG9pbnR9JHtub3JtYWxpemVkUGF0aH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVudkVuZHBvaW50ID0gdGhpcy5yZXNvbHZlRW52RW5kcG9pbnQoKTtcbiAgICAgICAgaWYgKGVudkVuZHBvaW50KSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7ZW52RW5kcG9pbnR9JHtub3JtYWxpemVkUGF0aH1gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWRQYXRoO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVFbXBsb2lkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUVtcGxvaWRTY2hlbWE+KTogUHJvbWlzZTxURW1wbG9pZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0NyZWF0ZUVtcGxvaWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlRW1wbG9pZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVFbXBsb2lkU2NoZW1hPik6IFByb21pc2U8VEVtcGxvaWQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdVcGRhdGVFbXBsb2lkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUVtcGxvaWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlRW1wbG9pZFNjaGVtYT4pOiBQcm9taXNlPFRFbXBsb2lkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnRGVsZXRlRW1wbG9pZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQdWJsaXNoRW1wbG9pZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBQdWJsaXNoRW1wbG9pZFNjaGVtYT4pOiBQcm9taXNlPFRQdWJsaXNoRW1wbG9pZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ1B1Ymxpc2hFbXBsb2lkJywgcGF5bG9hZCk7XG4gICAgfVxuICAgIHB1YmxpYyBhc3luYyBMaXN0RW1wbG9pZHMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEVtcGxvaWRzU2NoZW1hPik6IFByb21pc2U8VEVtcGxvaWRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0xpc3RFbXBsb2lkcycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0RW1wbG9pZHNQYWdpbmF0ZWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEVtcGxvaWRzUGFnaW5hdGVkU2NoZW1hPik6IFByb21pc2U8VFBhZ2luYXRlZEVtcGxvaWRzUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnTGlzdEVtcGxvaWRzUGFnaW5hdGVkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUluc3RydWN0aW9uKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUluc3RydWN0aW9uU2NoZW1hPik6IFByb21pc2U8VEluc3RydWN0aW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnQ3JlYXRlSW5zdHJ1Y3Rpb24nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdEluc3RydWN0aW9ucyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0SW5zdHJ1Y3Rpb25zU2NoZW1hPik6IFByb21pc2U8VEluc3RydWN0aW9uW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdMaXN0SW5zdHJ1Y3Rpb25zJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUluc3RydWN0aW9uKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUluc3RydWN0aW9uU2NoZW1hPik6IFByb21pc2U8VEluc3RydWN0aW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnVXBkYXRlSW5zdHJ1Y3Rpb24nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlSW5zdHJ1Y3Rpb24ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlSW5zdHJ1Y3Rpb25TY2hlbWE+KTogUHJvbWlzZTxUSW5zdHJ1Y3Rpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdEZWxldGVJbnN0cnVjdGlvbicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVDb25zdHJhaW50KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUNvbnN0cmFpbnRTY2hlbWE+KTogUHJvbWlzZTxUQ29uc3RyYWludD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0NyZWF0ZUNvbnN0cmFpbnQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdENvbnN0cmFpbnRzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RDb25zdHJhaW50c1NjaGVtYT4pOiBQcm9taXNlPFRDb25zdHJhaW50W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdMaXN0Q29uc3RyYWludHMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlQ29uc3RyYWludChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVDb25zdHJhaW50U2NoZW1hPik6IFByb21pc2U8VENvbnN0cmFpbnQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdVcGRhdGVDb25zdHJhaW50JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUNvbnN0cmFpbnQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlQ29uc3RyYWludFNjaGVtYT4pOiBQcm9taXNlPFRDb25zdHJhaW50PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnRGVsZXRlQ29uc3RyYWludCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0U2NvcGVzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RTY29wZXNTY2hlbWE+KTogUHJvbWlzZTxUU2NvcGVbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0xpc3RTY29wZXMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0U2NvcGVCeVR5cGUocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0U2NvcGVCeVR5cGVTY2hlbWE+KTogUHJvbWlzZTxUU2NvcGUgfCBudWxsPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnR2V0U2NvcGVCeVR5cGUnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlU2NvcGUocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlU2NvcGVTY2hlbWE+KTogUHJvbWlzZTxUU2NvcGU+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdDcmVhdGVTY29wZScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVTY29wZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVTY29wZVNjaGVtYT4pOiBQcm9taXNlPFRTY29wZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ1VwZGF0ZVNjb3BlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZVNjb3BlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVNjb3BlU2NoZW1hPik6IFByb21pc2U8VFNjb3BlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnRGVsZXRlU2NvcGUnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBsb2FkU2NvcGVGaWxlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGxvYWRFZGl0b3JGaWxlU2NoZW1hPlxuICAgICk6IFByb21pc2U8VFVwbG9hZGVkRmlsZT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmFjdGlvbkNhbGw8YW55PihcInNjb3BlXCIsIFwiVXBsb2FkRmlsZVwiLCBwYXlsb2FkKTtcbiAgICAgICAgY29uc3Qgc3RvcmFnZVBhdGggPVxuICAgICAgICAgICAgdGhpcy5ub3JtYWxpemVTdG9yYWdlUGF0aChTdHJpbmcocmVzdWx0Py5wYXRoIHx8IHJlc3VsdD8uZmlsZVBhdGggfHwgcmVzdWx0Py51cmwgfHwgXCJcIikpO1xuICAgICAgICBjb25zdCByZXNvbHZlZFVybCA9IHRoaXMucmVzb2x2ZVN0b3JhZ2VWaWV3VXJsKHN0b3JhZ2VQYXRoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICAgICAgZmlsZUlkOiBTdHJpbmcocmVzdWx0Py5maWxlSWQgfHwgcmVzdWx0Py5pZCB8fCBwYXlsb2FkLmF0dGFjaG1lbnRJZCB8fCBcIlwiKSxcbiAgICAgICAgICAgIHBhdGg6IHN0b3JhZ2VQYXRoLFxuICAgICAgICAgICAgZmlsZVBhdGg6IHJlc29sdmVkVXJsIHx8IHN0b3JhZ2VQYXRoLFxuICAgICAgICAgICAgdXJsOiByZXNvbHZlZFVybCB8fCBzdG9yYWdlUGF0aCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUmVzb2x2ZVNjb3BlRmlsZVZpZXcoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJlc29sdmVTY29wZUZpbGVWaWV3U2NoZW1hPlxuICAgICk6IFByb21pc2U8VFdpa2lGaWxlVmlld1Jlc29sdXRpb24+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5hY3Rpb25DYWxsPGFueT4oXCJzY29wZVwiLCBcIlJlc29sdmVTY29wZUZpbGVWaWV3XCIsIHBheWxvYWQpO1xuICAgICAgICBjb25zdCBzdG9yYWdlUGF0aCA9XG4gICAgICAgICAgICB0aGlzLm5vcm1hbGl6ZVN0b3JhZ2VQYXRoKFN0cmluZyhyZXN1bHQ/LnBhdGggfHwgcmVzdWx0Py5maWxlUGF0aCB8fCByZXN1bHQ/LnVybCB8fCBcIlwiKSk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkVXJsID0gdGhpcy5yZXNvbHZlU3RvcmFnZVZpZXdVcmwoc3RvcmFnZVBhdGgpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgICAgICBmaWxlSWQ6IFN0cmluZyhyZXN1bHQ/LmZpbGVJZCB8fCBwYXlsb2FkLmZpbGVJZCB8fCBcIlwiKSxcbiAgICAgICAgICAgIHBhdGg6IHN0b3JhZ2VQYXRoLFxuICAgICAgICAgICAgZmlsZVBhdGg6IHJlc29sdmVkVXJsIHx8IHN0b3JhZ2VQYXRoLFxuICAgICAgICAgICAgdXJsOiByZXNvbHZlZFVybCB8fCBzdG9yYWdlUGF0aCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlT2NjdXBhdGlvbihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVPY2N1cGF0aW9uU2NoZW1hPik6IFByb21pc2U8VE9jY3VwYXRpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnb2NjdXBhdGlvbicsICdDcmVhdGVPY2N1cGF0aW9uJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZU9jY3VwYXRpb24ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlT2NjdXBhdGlvblNjaGVtYT4pOiBQcm9taXNlPFRPY2N1cGF0aW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ29jY3VwYXRpb24nLCAnVXBkYXRlT2NjdXBhdGlvbicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVPY2N1cGF0aW9uKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZU9jY3VwYXRpb25TY2hlbWE+KTogUHJvbWlzZTxUT2NjdXBhdGlvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdvY2N1cGF0aW9uJywgJ0RlbGV0ZU9jY3VwYXRpb24nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdE9jY3VwYXRpb25zKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RPY2N1cGF0aW9uc1NjaGVtYT4pOiBQcm9taXNlPFRPY2N1cGF0aW9uW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnb2NjdXBhdGlvbicsICdMaXN0T2NjdXBhdGlvbnMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUHVibGlzaERvbWFpbihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBQdWJsaXNoRG9tYWluU2NoZW1hPik6IFByb21pc2U8VE9jY3VwYXRpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnb2NjdXBhdGlvbicsICdQdWJsaXNoRG9tYWluJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZURvbWFpblRvcGljKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZURvbWFpblRvcGljU2NoZW1hPik6IFByb21pc2U8VERvbWFpblRvcGljPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ29jY3VwYXRpb24nLCAnQ3JlYXRlRG9tYWluVG9waWMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlRG9tYWluVG9waWMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlRG9tYWluVG9waWNTY2hlbWE+KTogUHJvbWlzZTxURG9tYWluVG9waWM+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnb2NjdXBhdGlvbicsICdVcGRhdGVEb21haW5Ub3BpYycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVEb21haW5Ub3BpYyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVEb21haW5Ub3BpY1NjaGVtYT4pOiBQcm9taXNlPFREb21haW5Ub3BpYz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdvY2N1cGF0aW9uJywgJ0RlbGV0ZURvbWFpblRvcGljJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3REb21haW5Ub3BpY3MocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdERvbWFpblRvcGljc1NjaGVtYT4pOiBQcm9taXNlPFREb21haW5Ub3BpY1tdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ29jY3VwYXRpb24nLCAnTGlzdERvbWFpblRvcGljcycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVKb2JEZWZpbml0aW9uKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUpvYkRlZmluaXRpb25TY2hlbWE+KTogUHJvbWlzZTxUSm9iRGVmaW5pdGlvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0NyZWF0ZUpvYkRlZmluaXRpb24nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlSm9iRGVmaW5pdGlvbihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVKb2JEZWZpbml0aW9uU2NoZW1hPik6IFByb21pc2U8VEpvYkRlZmluaXRpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdVcGRhdGVKb2JEZWZpbml0aW9uJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUpvYkRlZmluaXRpb24ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlSm9iRGVmaW5pdGlvblNjaGVtYT4pOiBQcm9taXNlPFRKb2JEZWZpbml0aW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnRGVsZXRlSm9iRGVmaW5pdGlvbicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0Sm9iRGVmaW5pdGlvbnMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEpvYkRlZmluaXRpb25TY2hlbWE+KTogUHJvbWlzZTxUSm9iRGVmaW5pdGlvbltdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnTGlzdEpvYkRlZmluaXRpb25zJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUNvbXBldGVuY3kocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQ29tcGV0ZW5jeVNjaGVtYT4pOiBQcm9taXNlPFRDb21wZXRlbmN5PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnQ3JlYXRlQ29tcGV0ZW5jeScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVDb21wZXRlbmN5KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUNvbXBldGVuY3lTY2hlbWE+KTogUHJvbWlzZTxUQ29tcGV0ZW5jeT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ1VwZGF0ZUNvbXBldGVuY3knLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQ29tcGV0ZW5jeShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVDb21wZXRlbmN5U2NoZW1hPik6IFByb21pc2U8VENvbXBldGVuY3k+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdEZWxldGVDb21wZXRlbmN5JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RDb21wZXRlbmNpZXMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdENvbXBldGVuY2llc1NjaGVtYT4pOiBQcm9taXNlPFRDb21wZXRlbmN5W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdMaXN0Q29tcGV0ZW5jaWVzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZVRhc2tUZW1wbGF0ZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVUYXNrVGVtcGxhdGVTY2hlbWE+KTogUHJvbWlzZTxUVGFza1RlbXBsYXRlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnQ3JlYXRlVGFza1RlbXBsYXRlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZVRhc2tUZW1wbGF0ZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVUYXNrVGVtcGxhdGVTY2hlbWE+KTogUHJvbWlzZTxUVGFza1RlbXBsYXRlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnVXBkYXRlVGFza1RlbXBsYXRlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZVRhc2tUZW1wbGF0ZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVUYXNrVGVtcGxhdGVTY2hlbWE+KTogUHJvbWlzZTxUVGFza1RlbXBsYXRlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnRGVsZXRlVGFza1RlbXBsYXRlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RUYXNrVGVtcGxhdGVzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RUYXNrVGVtcGxhdGVzU2NoZW1hPik6IFByb21pc2U8VFRhc2tUZW1wbGF0ZVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnTGlzdFRhc2tUZW1wbGF0ZXMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQWdlbnRGbG93KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUFnZW50Rmxvd1NjaGVtYT4pOiBQcm9taXNlPFRBZ2VudEZsb3c+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYWdlbnQtZmxvdycsICdDcmVhdGVBZ2VudEZsb3cnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQWdlbnRGbG93KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUFnZW50Rmxvd1NjaGVtYT4pOiBQcm9taXNlPFREZWxldGVBZ2VudEZsb3dSZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYWdlbnQtZmxvdycsICdEZWxldGVBZ2VudEZsb3cnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRHVwbGljYXRlQWdlbnRGbG93KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIER1cGxpY2F0ZUFnZW50Rmxvd1NjaGVtYT4pOiBQcm9taXNlPFRBZ2VudEZsb3c+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYWdlbnQtZmxvdycsICdEdXBsaWNhdGVBZ2VudEZsb3cnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ2hhbmdlQWdlbnRmbG93UHJvamVjdChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDaGFuZ2VBZ2VudGZsb3dQcm9qZWN0U2NoZW1hPik6IFByb21pc2U8VEFnZW50Rmxvdz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhZ2VudC1mbG93JywgJ0NoYW5nZUFnZW50Zmxvd1Byb2plY3QnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlQWdlbnRGbG93KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUFnZW50Rmxvd1NjaGVtYT4pOiBQcm9taXNlPFRBZ2VudEZsb3c+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYWdlbnQtZmxvdycsICdVcGRhdGVBZ2VudEZsb3cnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdEFnZW50Rmxvd3MocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEFnZW50Rmxvd3NTY2hlbWE+KTogUHJvbWlzZTxUQWdlbnRGbG93W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYWdlbnQtZmxvdycsICdMaXN0QWdlbnRGbG93cycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVBZ2VudEZsb3dGb2xkZXIocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQWdlbnRGbG93Rm9sZGVyU2NoZW1hPik6IFByb21pc2U8VEFnZW50Rmxvd0ZvbGRlcj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhZ2VudC1mbG93JywgJ0NyZWF0ZUFnZW50Rmxvd0ZvbGRlcicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVBZ2VudEZsb3dGb2xkZXIocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQWdlbnRGbG93Rm9sZGVyU2NoZW1hPik6IFByb21pc2U8VEFnZW50Rmxvd0ZvbGRlcj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhZ2VudC1mbG93JywgJ1VwZGF0ZUFnZW50Rmxvd0ZvbGRlcicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVBZ2VudEZsb3dGb2xkZXIocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlQWdlbnRGbG93Rm9sZGVyU2NoZW1hPik6IFByb21pc2U8VEFnZW50Rmxvd0ZvbGRlcj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhZ2VudC1mbG93JywgJ0RlbGV0ZUFnZW50Rmxvd0ZvbGRlcicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0QWdlbnRGbG93Rm9sZGVycyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0QWdlbnRGbG93Rm9sZGVyc1NjaGVtYT4pOiBQcm9taXNlPFRBZ2VudEZsb3dGb2xkZXJbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhZ2VudC1mbG93JywgJ0xpc3RBZ2VudEZsb3dGb2xkZXJzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldFByaXZhdGVBZ2VudEZsb3dGb2xkZXIocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0UHJpdmF0ZUFnZW50Rmxvd0ZvbGRlclNjaGVtYT4pOiBQcm9taXNlPFRBZ2VudEZsb3dGb2xkZXIgfCBudWxsPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2FnZW50LWZsb3cnLCAnR2V0UHJpdmF0ZUFnZW50Rmxvd0ZvbGRlcicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0RHJpdmVJdGVtcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdERyaXZlSXRlbXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTx7IGN1cnJlbnRGb2xkZXI6IFREcml2ZUl0ZW07IGl0ZW1zOiBURHJpdmVJdGVtW10gfT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJMaXN0RHJpdmVJdGVtc1wiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdERyaXZlVHJlZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdERyaXZlVHJlZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPFREcml2ZVRyZWVOb2RlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIkxpc3REcml2ZVRyZWVcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFNlYXJjaERyaXZlSXRlbXMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFNlYXJjaERyaXZlSXRlbXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxURHJpdmVJdGVtW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiU2VhcmNoRHJpdmVJdGVtc1wiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlRHJpdmVGb2xkZXIoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZURyaXZlRm9sZGVyU2NoZW1hPlxuICAgICk6IFByb21pc2U8VERyaXZlSXRlbT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJDcmVhdGVEcml2ZUZvbGRlclwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUHJlcGFyZURyaXZlVXBsb2FkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBQcmVwYXJlRHJpdmVVcGxvYWRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUUHJlcGFyZWREcml2ZVVwbG9hZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJQcmVwYXJlRHJpdmVVcGxvYWRcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJlbmFtZURyaXZlSXRlbShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUmVuYW1lRHJpdmVJdGVtU2NoZW1hPlxuICAgICk6IFByb21pc2U8VERyaXZlSXRlbT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJSZW5hbWVEcml2ZUl0ZW1cIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIE1vdmVEcml2ZUl0ZW0oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIE1vdmVEcml2ZUl0ZW1TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxURHJpdmVJdGVtPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIk1vdmVEcml2ZUl0ZW1cIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldERyaXZlRGVsZXRlSW1wYWN0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXREcml2ZURlbGV0ZUltcGFjdFNjaGVtYT5cbiAgICApOiBQcm9taXNlPFREcml2ZURlbGV0ZUltcGFjdD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJHZXREcml2ZURlbGV0ZUltcGFjdFwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlRHJpdmVJdGVtKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVEcml2ZUl0ZW1TY2hlbWE+XG4gICAgKTogUHJvbWlzZTx7IGlkOiBzdHJpbmc7IGRlbGV0ZWQ6IGJvb2xlYW47IHRvdGFsSXRlbXM6IG51bWJlciB9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIkRlbGV0ZURyaXZlSXRlbVwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUmVzb2x2ZURyaXZlRG93bmxvYWQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJlc29sdmVEcml2ZURvd25sb2FkU2NoZW1hPlxuICAgICk6IFByb21pc2U8VFdpa2lGaWxlVmlld1Jlc29sdXRpb24+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5hY3Rpb25DYWxsPGFueT4oXCJkcml2ZVwiLCBcIlJlc29sdmVEcml2ZURvd25sb2FkXCIsIHBheWxvYWQpO1xuICAgICAgICBjb25zdCBzdG9yYWdlUGF0aCA9XG4gICAgICAgICAgICB0aGlzLm5vcm1hbGl6ZVN0b3JhZ2VQYXRoKFN0cmluZyhyZXN1bHQ/LnBhdGggfHwgcmVzdWx0Py5maWxlUGF0aCB8fCByZXN1bHQ/LnVybCB8fCBcIlwiKSk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkVXJsID0gdGhpcy5yZXNvbHZlU3RvcmFnZVZpZXdVcmwoc3RvcmFnZVBhdGgpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgICAgICBmaWxlSWQ6IFN0cmluZyhyZXN1bHQ/Lml0ZW1JZCB8fCBwYXlsb2FkLml0ZW1JZCB8fCBcIlwiKSxcbiAgICAgICAgICAgIHBhdGg6IHN0b3JhZ2VQYXRoLFxuICAgICAgICAgICAgZmlsZVBhdGg6IHJlc29sdmVkVXJsIHx8IHN0b3JhZ2VQYXRoLFxuICAgICAgICAgICAgdXJsOiByZXNvbHZlZFVybCB8fCBzdG9yYWdlUGF0aCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdERyaXZlUm9vdHMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3REcml2ZVJvb3RzU2NoZW1hPlxuICAgICk6IFByb21pc2U8VERyaXZlUm9vdFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIkxpc3REcml2ZVJvb3RzXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbnN1cmVEcml2ZVByb3ZpZGVyQ3JlZGVudGlhbChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRW5zdXJlRHJpdmVQcm92aWRlckNyZWRlbnRpYWxTY2hlbWE+XG4gICAgKTogUHJvbWlzZTx7IGNyZWRlbnRpYWxJZDogc3RyaW5nOyBjb25uZWN0ZWQ6IGJvb2xlYW47IHByb3ZpZGVyOiBURHJpdmVSb290UHJvdmlkZXIgfT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJFbnN1cmVEcml2ZVByb3ZpZGVyQ3JlZGVudGlhbFwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdERyaXZlUHJvdmlkZXJGb2xkZXJzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0RHJpdmVQcm92aWRlckZvbGRlcnNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTx7XG4gICAgICAgIGNyZWRlbnRpYWxJZDogc3RyaW5nO1xuICAgICAgICBjb25uZWN0ZWQ6IGJvb2xlYW47XG4gICAgICAgIGN1cnJlbnRGb2xkZXI6IFREcml2ZVByb3ZpZGVyRm9sZGVyO1xuICAgICAgICBmb2xkZXJzOiBURHJpdmVQcm92aWRlckZvbGRlcltdO1xuICAgIH0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiTGlzdERyaXZlUHJvdmlkZXJGb2xkZXJzXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVEcml2ZVJvb3QoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZURyaXZlUm9vdFNjaGVtYT5cbiAgICApOiBQcm9taXNlPFREcml2ZVJvb3Q+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiQ3JlYXRlRHJpdmVSb290XCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVEcml2ZVJvb3QoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZURyaXZlUm9vdFNjaGVtYT5cbiAgICApOiBQcm9taXNlPHsgaWQ6IHN0cmluZzsgZGVsZXRlZDogYm9vbGVhbiB9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIkRlbGV0ZURyaXZlUm9vdFwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdERyaXZlUm9vdEl0ZW1zKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0RHJpdmVSb290SXRlbXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTx7IGN1cnJlbnRGb2xkZXI6IFREcml2ZUl0ZW07IGl0ZW1zOiBURHJpdmVJdGVtW10gfT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJMaXN0RHJpdmVSb290SXRlbXNcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3REcml2ZVJvb3RUcmVlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0RHJpdmVSb290VHJlZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPFREcml2ZVRyZWVOb2RlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIkxpc3REcml2ZVJvb3RUcmVlXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBTZWFyY2hEcml2ZVJvb3RJdGVtcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgU2VhcmNoRHJpdmVSb290SXRlbXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxURHJpdmVJdGVtW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiU2VhcmNoRHJpdmVSb290SXRlbXNcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZURyaXZlUm9vdEZvbGRlcihcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlRHJpdmVSb290Rm9sZGVyU2NoZW1hPlxuICAgICk6IFByb21pc2U8VERyaXZlSXRlbT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJDcmVhdGVEcml2ZVJvb3RGb2xkZXJcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwbG9hZERyaXZlUm9vdEZpbGVzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGxvYWREcml2ZVJvb3RGaWxlc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPFREcml2ZUl0ZW1bXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJVcGxvYWREcml2ZVJvb3RGaWxlc1wiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUmVuYW1lRHJpdmVSb290SXRlbShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUmVuYW1lRHJpdmVSb290SXRlbVNjaGVtYT5cbiAgICApOiBQcm9taXNlPFREcml2ZUl0ZW0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiUmVuYW1lRHJpdmVSb290SXRlbVwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTW92ZURyaXZlUm9vdEl0ZW0oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIE1vdmVEcml2ZVJvb3RJdGVtU2NoZW1hPlxuICAgICk6IFByb21pc2U8VERyaXZlSXRlbT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJNb3ZlRHJpdmVSb290SXRlbVwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0RHJpdmVSb290RGVsZXRlSW1wYWN0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXREcml2ZVJvb3REZWxldGVJbXBhY3RTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxURHJpdmVEZWxldGVJbXBhY3Q+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiR2V0RHJpdmVSb290RGVsZXRlSW1wYWN0XCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVEcml2ZVJvb3RJdGVtKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVEcml2ZVJvb3RJdGVtU2NoZW1hPlxuICAgICk6IFByb21pc2U8eyBpZDogc3RyaW5nOyBkZWxldGVkOiBib29sZWFuOyB0b3RhbEl0ZW1zOiBudW1iZXIgfT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJEZWxldGVEcml2ZVJvb3RJdGVtXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSZWFkRHJpdmVSb290RmlsZUNvbnRlbnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJlYWREcml2ZVJvb3RGaWxlQ29udGVudFNjaGVtYT5cbiAgICApOiBQcm9taXNlPFREcml2ZUZpbGVDb250ZW50PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIlJlYWREcml2ZVJvb3RGaWxlQ29udGVudFwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUmVzb2x2ZURyaXZlUm9vdERvd25sb2FkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSZXNvbHZlRHJpdmVSb290RG93bmxvYWRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUV2lraUZpbGVWaWV3UmVzb2x1dGlvbj4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmFjdGlvbkNhbGw8YW55PihcImRyaXZlXCIsIFwiUmVzb2x2ZURyaXZlUm9vdERvd25sb2FkXCIsIHBheWxvYWQpO1xuICAgICAgICBjb25zdCByYXdVcmwgPSBTdHJpbmcocmVzdWx0Py51cmwgfHwgXCJcIik7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRVcmwgPSByYXdVcmwuc3RhcnRzV2l0aChcImRhdGE6XCIpID8gcmF3VXJsIDogdGhpcy5ub3JtYWxpemVTdG9yYWdlUGF0aChyYXdVcmwpO1xuICAgICAgICBjb25zdCByZXNvbHZlZFVybCA9IHJhd1VybC5zdGFydHNXaXRoKFwiZGF0YTpcIilcbiAgICAgICAgICAgID8gcmF3VXJsXG4gICAgICAgICAgICA6ICh0aGlzLnJlc29sdmVTdG9yYWdlVmlld1VybChub3JtYWxpemVkVXJsKSB8fCBub3JtYWxpemVkVXJsKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICAgICAgZmlsZUlkOiBTdHJpbmcocmVzdWx0Py5pdGVtSWQgfHwgcGF5bG9hZC5pdGVtSWQgfHwgXCJcIiksXG4gICAgICAgICAgICBwYXRoOiBub3JtYWxpemVkVXJsLFxuICAgICAgICAgICAgZmlsZVBhdGg6IHJlc29sdmVkVXJsIHx8IG5vcm1hbGl6ZWRVcmwsXG4gICAgICAgICAgICB1cmw6IHJlc29sdmVkVXJsIHx8IG5vcm1hbGl6ZWRVcmwsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUV4dGVuc2lvbihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVFeHRlbnNpb25TY2hlbWE+KTogUHJvbWlzZTxURXh0ZW5zaW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2V4dGVuc2lvbicsICdDcmVhdGVFeHRlbnNpb24nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlRXh0ZW5zaW9uKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUV4dGVuc2lvblNjaGVtYT4pOiBQcm9taXNlPFRFeHRlbnNpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZXh0ZW5zaW9uJywgJ1VwZGF0ZUV4dGVuc2lvbicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVFeHRlbnNpb24ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlRXh0ZW5zaW9uU2NoZW1hPik6IFByb21pc2U8VEV4dGVuc2lvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdleHRlbnNpb24nLCAnRGVsZXRlRXh0ZW5zaW9uJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RFeHRlbnNpb25zKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RFeHRlbnNpb25zU2NoZW1hPik6IFByb21pc2U8VEV4dGVuc2lvbltdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2V4dGVuc2lvbicsICdMaXN0RXh0ZW5zaW9ucycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tQXNzaXN0YW50LS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVBc3Npc3RhbnQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQXNzaXN0YW50U2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnQ3JlYXRlQXNzaXN0YW50JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUFzc2lzdGFudChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVBc3Npc3RhbnRTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdVcGRhdGVBc3Npc3RhbnQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQXNzaXN0YW50KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUFzc2lzdGFudFNjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0RlbGV0ZUFzc2lzdGFudCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0QXNzaXN0YW50cyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0QXNzaXN0YW50c1NjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnTGlzdEFzc2lzdGFudHMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQXNzaXN0YW50SW5zdHJ1Y3Rpb24ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQXNzaXN0YW50SW5zdHJ1Y3Rpb25TY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50SW5zdHJ1Y3Rpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0NyZWF0ZUFzc2lzdGFudEluc3RydWN0aW9uJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RBc3Npc3RhbnRJbnN0cnVjdGlvbnMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEFzc2lzdGFudEluc3RydWN0aW9uc1NjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnRJbnN0cnVjdGlvbltdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdMaXN0QXNzaXN0YW50SW5zdHJ1Y3Rpb25zJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUFzc2lzdGFudENvbnN0cmFpbnQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQXNzaXN0YW50Q29uc3RyYWludFNjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnRDb25zdHJhaW50PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdDcmVhdGVBc3Npc3RhbnRDb25zdHJhaW50JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RBc3Npc3RhbnRDb25zdHJhaW50cyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0QXNzaXN0YW50Q29uc3RyYWludHNTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50Q29uc3RyYWludFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdMaXN0QXNzaXN0YW50Q29uc3RyYWludHMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQXNzaXN0YW50RGF0YXNvdXJjZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVBc3Npc3RhbnREYXRhc291cmNlU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudERhdGFzb3VyY2U+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0NyZWF0ZUFzc2lzdGFudERhdGFzb3VyY2UnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlQXNzaXN0YW50RGF0YXNvdXJjZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVBc3Npc3RhbnREYXRhc291cmNlU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudERhdGFzb3VyY2U+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ1VwZGF0ZUFzc2lzdGFudERhdGFzb3VyY2UnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQXNzaXN0YW50RGF0YXNvdXJjZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVBc3Npc3RhbnREYXRhc291cmNlU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudERhdGFzb3VyY2U+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0RlbGV0ZUFzc2lzdGFudERhdGFzb3VyY2UnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdEFzc2lzdGFudERhdGFzb3VyY2VzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RBc3Npc3RhbnREYXRhc291cmNlc1NjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnREYXRhc291cmNlW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0xpc3RBc3Npc3RhbnREYXRhc291cmNlcycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVBc3Npc3RhbnRTa2lsbChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVBc3Npc3RhbnRTa2lsbFNjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnRTa2lsbD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnQ3JlYXRlQXNzaXN0YW50U2tpbGwnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlQXNzaXN0YW50U2tpbGwocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQXNzaXN0YW50U2tpbGxTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50U2tpbGw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ1VwZGF0ZUFzc2lzdGFudFNraWxsJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUFzc2lzdGFudFNraWxsKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUFzc2lzdGFudFNraWxsU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudFNraWxsPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdEZWxldGVBc3Npc3RhbnRTa2lsbCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0QXNzaXN0YW50U2tpbGxzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RBc3Npc3RhbnRTa2lsbHNTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50U2tpbGxbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnTGlzdEFzc2lzdGFudFNraWxscycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVBc3Npc3RhbnRDaGFubmVsKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUFzc2lzdGFudENoYW5uZWxTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50Q2hhbm5lbD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnQ3JlYXRlQXNzaXN0YW50Q2hhbm5lbCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVBc3Npc3RhbnRDaGFubmVsKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUFzc2lzdGFudENoYW5uZWxTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50Q2hhbm5lbD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnVXBkYXRlQXNzaXN0YW50Q2hhbm5lbCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVBc3Npc3RhbnRDaGFubmVsKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUFzc2lzdGFudENoYW5uZWxTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50Q2hhbm5lbD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnRGVsZXRlQXNzaXN0YW50Q2hhbm5lbCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0QXNzaXN0YW50Q2hhbm5lbHMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEFzc2lzdGFudENoYW5uZWxzU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudENoYW5uZWxbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnTGlzdEFzc2lzdGFudENoYW5uZWxzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS1EYXRhc291cmNlcy0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlRGF0YXNvdXJjZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVEYXRhc291cmNlU2NoZW1hPik6IFByb21pc2U8VERhdGFzb3VyY2U+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZGF0YS1zb3VyY2UnLCAnQ3JlYXRlRGF0YXNvdXJjZScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVEYXRhc291cmNlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZURhdGFzb3VyY2VTY2hlbWE+KTogUHJvbWlzZTxURGF0YXNvdXJjZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdkYXRhLXNvdXJjZScsICdVcGRhdGVEYXRhc291cmNlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZURhdGFzb3VyY2UocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlRGF0YXNvdXJjZVNjaGVtYT4pOiBQcm9taXNlPFREYXRhc291cmNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2RhdGEtb3VyY2UnLCAnRGVsZXRlRGF0YXNvdXJjZScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0RGF0YXNvdXJjZXMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdERhdGFzb3VyY2VzU2NoZW1hPik6IFByb21pc2U8VERhdGFzb3VyY2VbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdkYXRhLXNvdXJjZScsICdMaXN0RGF0YXNvdXJjZXMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tU2tpbGxzLS0tLS0tLS0tLS0tLS0tLVxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVTa2lsbChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVTa2lsbFNjaGVtYT4pOiBQcm9taXNlPFRTa2lsbD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdza2lsbCcsICdDcmVhdGVTa2lsbCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0U2tpbGxzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RTa2lsbHNTY2hlbWE+KTogUHJvbWlzZTxUU2tpbGxbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdza2lsbCcsICdMaXN0U2tpbGxzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZVNraWxsKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZVNraWxsU2NoZW1hPik6IFByb21pc2U8VFNraWxsPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3NraWxsJywgJ1VwZGF0ZVNraWxsJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZVNraWxsKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVNraWxsU2NoZW1hPik6IFByb21pc2U8VFNraWxsPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3NraWxsJywgJ0RlbGV0ZVNraWxsJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLUNoYW5uZWxzLS0tLS0tLS0tLS0tLS0tLVxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVDaGFubmVsKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUNoYW5uZWxTY2hlbWE+KTogUHJvbWlzZTxUQ2hhbm5lbD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGFubmVsJywgJ0NyZWF0ZUNoYW5uZWwnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdENoYW5uZWxzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RDaGFubmVsc1NjaGVtYT4pOiBQcm9taXNlPFRDaGFubmVsW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhbm5lbCcsICdMaXN0Q2hhbm5lbHMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlQ2hhbm5lbChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVDaGFubmVsU2NoZW1hPik6IFByb21pc2U8VENoYW5uZWw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhbm5lbCcsICdVcGRhdGVDaGFubmVsJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUNoYW5uZWwocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlQ2hhbm5lbFNjaGVtYT4pOiBQcm9taXNlPFRDaGFubmVsPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYW5uZWwnLCAnRGVsZXRlQ2hhbm5lbCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1Lbm93bGVkZ2UtLS0tLS0tLS0tLS0tLS0tXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUtub3dsZWRnZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVLbm93bGVkZ2VTY2hlbWE+KTogUHJvbWlzZTxUS25vd2xlZGdlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2tub3dsZWRnZScsICdDcmVhdGVLbm93bGVkZ2UnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdEtub3dsZWRnZXMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEtub3dsZWRnZXNTY2hlbWE+KTogUHJvbWlzZTxUS25vd2xlZGdlW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgna25vd2xlZGdlJywgJ0xpc3RLbm93bGVkZ2VzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUtub3dsZWRnZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVLbm93bGVkZ2VTY2hlbWE+KTogUHJvbWlzZTxUS25vd2xlZGdlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2tub3dsZWRnZScsICdVcGRhdGVLbm93bGVkZ2UnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlS25vd2xlZGdlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUtub3dsZWRnZVNjaGVtYT4pOiBQcm9taXNlPFRLbm93bGVkZ2U+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgna25vd2xlZGdlJywgJ0RlbGV0ZUtub3dsZWRnZScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLVdPUktFUi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVXb3JrZXIocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlV29ya2VyU2NoZW1hPik6IFByb21pc2U8VFdvcmtlcj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCd3b3JrZXInLCAnQ3JlYXRlV29ya2VyJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZVdvcmtlcihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVXb3JrZXJTY2hlbWE+KTogUHJvbWlzZTxUV29ya2VyPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3dvcmtlcicsICdVcGRhdGVXb3JrZXInLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlV29ya2VyKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVdvcmtlclNjaGVtYT4pOiBQcm9taXNlPFRXb3JrZXI+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnd29ya2VyJywgJ0RlbGV0ZVdvcmtlcicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQdWJsaXNoV29ya2VyVG9NYXJrZXRTdG9yZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBQdWJsaXNoV29ya2VyVG9NYXJrZXRTdG9yZVNjaGVtYT4pOiBQcm9taXNlPFRQdWJsaXNoV29ya2VyVG9NYXJrZXRTdG9yZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdtYXJrZXQtc3RvcmUnLCAnUHVibGlzaFdvcmtlclRvTWFya2V0U3RvcmUnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdFdvcmtlcnMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdFdvcmtlcnNTY2hlbWE+KTogUHJvbWlzZTxUV29ya2VyW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnd29ya2VyJywgJ0xpc3RXb3JrZXJzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZVdvcmtlclRvcGljKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVdvcmtlclRvcGljU2NoZW1hPik6IFByb21pc2U8VFdvcmtlclRvcGljPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3dvcmtlcicsICdDcmVhdGVXb3JrZXJUb3BpYycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVXb3JrZXJUb3BpYyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVXb3JrZXJUb3BpY1NjaGVtYT4pOiBQcm9taXNlPFRXb3JrZXJUb3BpYz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCd3b3JrZXInLCAnVXBkYXRlV29ya2VyVG9waWMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlV29ya2VyVG9waWMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlV29ya2VyVG9waWNTY2hlbWE+KTogUHJvbWlzZTxUV29ya2VyVG9waWM+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnd29ya2VyJywgJ0RlbGV0ZVdvcmtlclRvcGljJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RXb3JrZXJUb3BpY3MocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdFdvcmtlclRvcGljc1NjaGVtYT4pOiBQcm9taXNlPFRXb3JrZXJUb3BpY1tdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3dvcmtlcicsICdMaXN0V29ya2VyVG9waWNzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RNYXJrZXRTdG9yZUl0ZW1zKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RNYXJrZXRTdG9yZUl0ZW1zU2NoZW1hPik6IFByb21pc2U8VE1hcmtldFN0b3JlSXRlbVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ21hcmtldC1zdG9yZScsICdMaXN0TWFya2V0U3RvcmVJdGVtcycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRNYXJrZXRTdG9yZUl0ZW0ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0TWFya2V0U3RvcmVJdGVtU2NoZW1hPik6IFByb21pc2U8VE1hcmtldFN0b3JlSXRlbSB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnbWFya2V0LXN0b3JlJywgJ0dldE1hcmtldFN0b3JlSXRlbScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS1Ub3BpY3MtLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlVG9waWMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlVG9waWNTY2hlbWE+KTogUHJvbWlzZTxUVG9waWM+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgndG9waWMnLCAnQ3JlYXRlVG9waWMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlVG9waWMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlVG9waWNTY2hlbWE+KTogUHJvbWlzZTxUVG9waWM+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgndG9waWMnLCAnVXBkYXRlVG9waWMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlVG9waWMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlVG9waWNTY2hlbWE+KTogUHJvbWlzZTxUVG9waWM+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgndG9waWMnLCAnRGVsZXRlVG9waWMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdFRvcGljcyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0VG9waWNzU2NoZW1hPik6IFByb21pc2U8VFRvcGljW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgndG9waWMnLCAnTGlzdFRvcGljcycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbmhhbmNlVG9waWMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRW5oYW5jZVRvcGljU2NoZW1hPik6IFByb21pc2U8VEVuaGFuY2VUb3BpYz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCd0b3BpYycsICdFbmhhbmNlVG9waWMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUlucHV0KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUlucHV0U2NoZW1hPik6IFByb21pc2U8VElucHV0PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2lucHV0LW91dHB1dCcsICdDcmVhdGVJbnB1dCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVJbnB1dChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVJbnB1dFNjaGVtYT4pOiBQcm9taXNlPFRJbnB1dD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdpbnB1dC1vdXRwdXQnLCAnVXBkYXRlSW5wdXQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlSW5wdXQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlSW5wdXRTY2hlbWE+KTogUHJvbWlzZTxUSW5wdXQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnaW5wdXQtb3V0cHV0JywgJ0RlbGV0ZUlucHV0JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RJbnB1dHMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdElucHV0U2NoZW1hPik6IFByb21pc2U8VElucHV0W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnaW5wdXQtb3V0cHV0JywgJ0xpc3RJbnB1dHMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlVGVhbShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVUZWFtU2NoZW1hPik6IFByb21pc2U8VFRlYW0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgndGVhbScsICdDcmVhdGVUZWFtJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RUZWFtcyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0VGVhbXNTY2hlbWE+KTogUHJvbWlzZTxUVGVhbVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3RlYW0nLCAnTGlzdFRlYW1zJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZVRlYW0ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlVGVhbVNjaGVtYT4pOiBQcm9taXNlPFRUZWFtPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3RlYW0nLCAnVXBkYXRlVGVhbScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVUZWFtKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVRlYW1TY2hlbWE+KTogUHJvbWlzZTxUVGVhbT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCd0ZWFtJywgJ0RlbGV0ZVRlYW0nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgU2F2ZUNoYXQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgU2F2ZUNoYXRTY2hlbWE+KTogUHJvbWlzZTxUQ2hhdD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ1NhdmVDaGF0JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUNoYXRCeUlkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUNoYXRCeUlkU2NoZW1hPik6IFByb21pc2U8VENoYXQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdEZWxldGVDaGF0QnlJZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRDaGF0QnlJZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRDaGF0QnlJZFNjaGVtYT4pOiBQcm9taXNlPFRDaGF0PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnR2V0Q2hhdEJ5SWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0Q2hhdHNCeVVzZXJJZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRDaGF0c0J5VXNlcklkU2NoZW1hPik6IFByb21pc2U8VENoYXRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0dldENoYXRzQnlVc2VySWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgU2F2ZU1lc3NhZ2VzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFNhdmVNZXNzYWdlc1NjaGVtYT4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdTYXZlTWVzc2FnZXMnLCBwYXlsb2FkKTtcbiAgICB9XG5cblxuICAgIHB1YmxpYyBhc3luYyBHZXRNZXNzYWdlc0J5Q2hhdElkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldE1lc3NhZ2VzQnlDaGF0SWRTY2hlbWE+KTogUHJvbWlzZTxUQ2hhdFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnR2V0TWVzc2FnZXNCeUNoYXRJZCcsIHBheWxvYWQpO1xuICAgIH1cblxuXG4gICAgcHVibGljIGFzeW5jIEdldE1lc3NhZ2VCeUlkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldE1lc3NhZ2VCeUlkU2NoZW1hPik6IFByb21pc2U8VENoYXRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0dldE1lc3NhZ2VCeUlkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFZvdGVNZXNzYWdlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFZvdGVNZXNzYWdlU2NoZW1hPik6IFByb21pc2U8VENoYXRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ1ZvdGVNZXNzYWdlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldFZvdGVzQnlDaGF0SWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0Vm90ZXNCeUNoYXRJZFNjaGVtYT4pOiBQcm9taXNlPFRDaGF0W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdHZXRWb3Rlc0J5Q2hhdElkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZURvY3VtZW50c0J5SWRBZnRlclRpbWVzdGFtcChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVEb2N1bWVudHNCeUlkQWZ0ZXJUaW1lc3RhbXBTY2hlbWE+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnRGVsZXRlRG9jdW1lbnRzQnlJZEFmdGVyVGltZXN0YW1wJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFNhdmVTdWdnZXN0aW9ucyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBTYXZlU3VnZ2VzdGlvbnNTY2hlbWE+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnU2F2ZVN1Z2dlc3Rpb25zJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldFN1Z2dlc3Rpb25zQnlEb2N1bWVudElkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldFN1Z2dlc3Rpb25zQnlEb2N1bWVudElkU2NoZW1hPik6IFByb21pc2U8VENoYXRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0dldFN1Z2dlc3Rpb25zQnlEb2N1bWVudElkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZU1lc3NhZ2VzQnlDaGF0SWRBZnRlclRpbWVzdGFtcChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVNZXNzYWdlc0J5Q2hhdElkQWZ0ZXJUaW1lc3RhbXBTY2hlbWE+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnRGVsZXRlTWVzc2FnZXNCeUNoYXRJZEFmdGVyVGltZXN0YW1wJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUNoYXRWaXNpYmxpdHlCeUlkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUNoYXRWaXNpYmxpdHlCeUlkU2NoZW1hPik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ1VwZGF0ZUNoYXRWaXNpYmxpdHlCeUlkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUNoYXRMYXN0Q29udGV4dEJ5SWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQ2hhdExhc3RDb250ZXh0QnlJZFNjaGVtYT4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdVcGRhdGVDaGF0TGFzdENvbnRleHRCeUlkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldE1lc3NhZ2VDb3VudEJ5VXNlcklkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldE1lc3NhZ2VDb3VudEJ5VXNlcklkU2NoZW1hPik6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnR2V0TWVzc2FnZUNvdW50QnlVc2VySWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlU3RyZWFtSWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlU3RyZWFtSWRTY2hlbWE+KTogUHJvbWlzZTxUU3RyZWFtSWQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdDcmVhdGVTdHJlYW1JZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRTdHJlYW1JZHNCeUNoYXRJZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRTdHJlYW1JZHNCeUNoYXRJZFNjaGVtYT4pOiBQcm9taXNlPFRTdHJlYW1JZFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnR2V0U3RyZWFtSWRzQnlDaGF0SWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgU2F2ZURvY3VtZW50KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFNhdmVEb2N1bWVudFNjaGVtYT4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdTYXZlRG9jdW1lbnQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0RG9jdW1lbnRCeUlkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldERvY3VtZW50QnlJZFNjaGVtYT4pOiBQcm9taXNlPFREb2N1bWVudD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0dldERvY3VtZW50QnlJZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXREb2N1bWVudHNCeUlkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldERvY3VtZW50c0J5SWRTY2hlbWE+KTogUHJvbWlzZTxURG9jdW1lbnRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0dldERvY3VtZW50c0J5SWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cblxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUNvbW1hbmQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQ29tbWFuZFNjaGVtYT4pOiBQcm9taXNlPFRDb21tYW5kPiB7XG4gICAgICAgIC8qICBkZWJ1Z2dlclxuICAgICAgICAgIGlmICggdHlwZW9mIHBheWxvYWQuaW5wdXRzID09PSAnb2JqZWN0JyApIHtcbiAgICAgICAgICAgICAgcGF5bG9hZC5pbnB1dHMgPSBKU09OLnN0cmluZ2lmeShwYXlsb2FkLmlucHV0cykgYXMgYW55O1xuICAgICAgICAgIH0gKi9cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY29tbWFuZCcsICdDcmVhdGVDb21tYW5kJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RDb21tYW5kcyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0Q29tbWFuZHNTY2hlbWE+KTogUHJvbWlzZTxUQ29tbWFuZFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NvbW1hbmQnLCAnTGlzdENvbW1hbmRzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUNvbW1hbmQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQ29tbWFuZFNjaGVtYT4pOiBQcm9taXNlPFRDb21tYW5kPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NvbW1hbmQnLCAnVXBkYXRlQ29tbWFuZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVDb21tYW5kKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUNvbW1hbmRTY2hlbWE+KTogUHJvbWlzZTxUQ29tbWFuZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjb21tYW5kJywgJ0RlbGV0ZUNvbW1hbmQnLCBwYXlsb2FkKTtcbiAgICB9XG5cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tQ29sbGVjdGlvbnMtLS0tLS0tLS0tLS0tLS0tLS0tXG5cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVEYXRhTW9kZWwoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZURhdGFNb2RlbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkNyZWF0ZURhdGFNb2RlbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVEYXRhTW9kZWwoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZURhdGFNb2RlbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlVwZGF0ZURhdGFNb2RlbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVEYXRhTW9kZWwoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZURhdGFNb2RlbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkRlbGV0ZURhdGFNb2RlbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXREYXRhTW9kZWxCeUlkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXREYXRhTW9kZWxCeUlkU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiR2V0RGF0YU1vZGVsQnlJZFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFeHBvcnREYXRhTW9kZWwoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEV4cG9ydERhdGFNb2RlbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkV4cG9ydERhdGFNb2RlbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBJbXBvcnREYXRhTW9kZWwoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEltcG9ydERhdGFNb2RlbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkltcG9ydERhdGFNb2RlbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0RGF0YU1vZGVscyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdERhdGFNb2RlbHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0RGF0YU1vZGVsc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSZXN0b3JlRGF0YU1vZGVsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSZXN0b3JlRGF0YU1vZGVsU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUmVzdG9yZURhdGFNb2RlbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBIYXJkRGVsZXRlRGF0YU1vZGVsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBIYXJkRGVsZXRlRGF0YU1vZGVsU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiSGFyZERlbGV0ZURhdGFNb2RlbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVDb2xsZWN0aW9uKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVDb2xsZWN0aW9uU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiQ3JlYXRlQ29sbGVjdGlvblwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0Q29sbGVjdGlvbnMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RDb2xsZWN0aW9uc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkxpc3RDb2xsZWN0aW9uc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRDb2xsZWN0aW9uQnlJZChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0Q29sbGVjdGlvbkJ5SWRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJHZXRDb2xsZWN0aW9uQnlJZFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZVJlY29yZChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlUmVjb3JkU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiQ3JlYXRlUmVjb3JkXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwbG9hZENvbGxlY3Rpb25GaWxlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGxvYWRDb2xsZWN0aW9uRmlsZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPFRVcGxvYWRlZEZpbGU+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5hY3Rpb25DYWxsPGFueT4oXCJjb2xsZWN0aW9uXCIsIFwiVXBsb2FkQ29sbGVjdGlvbkZpbGVcIiwgcGF5bG9hZCk7XG4gICAgICAgIGNvbnN0IHN0b3JhZ2VQYXRoID1cbiAgICAgICAgICAgIHRoaXMubm9ybWFsaXplU3RvcmFnZVBhdGgoU3RyaW5nKHJlc3VsdD8ucGF0aCB8fCByZXN1bHQ/LmZpbGVQYXRoIHx8IHJlc3VsdD8udXJsIHx8IFwiXCIpKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRVcmwgPSB0aGlzLnJlc29sdmVTdG9yYWdlVmlld1VybChzdG9yYWdlUGF0aCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICAgIGZpbGVJZDogU3RyaW5nKHJlc3VsdD8uaXRlbUlkIHx8IHJlc3VsdD8uZmlsZUlkIHx8IHJlc3VsdD8uaWQgfHwgcGF5bG9hZC5pdGVtSWQgfHwgXCJcIiksXG4gICAgICAgICAgICBwYXRoOiBzdG9yYWdlUGF0aCxcbiAgICAgICAgICAgIGZpbGVQYXRoOiByZXNvbHZlZFVybCB8fCBzdG9yYWdlUGF0aCxcbiAgICAgICAgICAgIHVybDogcmVzb2x2ZWRVcmwgfHwgc3RvcmFnZVBhdGgsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJlc29sdmVDb2xsZWN0aW9uRmlsZVZpZXcoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJlc29sdmVDb2xsZWN0aW9uRmlsZVZpZXdTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUV2lraUZpbGVWaWV3UmVzb2x1dGlvbj4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmFjdGlvbkNhbGw8YW55PihcImNvbGxlY3Rpb25cIiwgXCJSZXNvbHZlQ29sbGVjdGlvbkZpbGVWaWV3XCIsIHBheWxvYWQpO1xuICAgICAgICBjb25zdCBzdG9yYWdlUGF0aCA9XG4gICAgICAgICAgICB0aGlzLm5vcm1hbGl6ZVN0b3JhZ2VQYXRoKFN0cmluZyhyZXN1bHQ/LnBhdGggfHwgcmVzdWx0Py5maWxlUGF0aCB8fCByZXN1bHQ/LnVybCB8fCBcIlwiKSk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkVXJsID0gdGhpcy5yZXNvbHZlU3RvcmFnZVZpZXdVcmwoc3RvcmFnZVBhdGgpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgICAgICBmaWxlSWQ6IFN0cmluZyhyZXN1bHQ/LmZpbGVJZCB8fCByZXN1bHQ/Lml0ZW1JZCB8fCBwYXlsb2FkLml0ZW1JZCB8fCBcIlwiKSxcbiAgICAgICAgICAgIHBhdGg6IHN0b3JhZ2VQYXRoLFxuICAgICAgICAgICAgZmlsZVBhdGg6IHJlc29sdmVkVXJsIHx8IHN0b3JhZ2VQYXRoLFxuICAgICAgICAgICAgdXJsOiByZXNvbHZlZFVybCB8fCBzdG9yYWdlUGF0aCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0UmVjb3JkQnlJZChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0UmVjb3JkQnlJZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkdldFJlY29yZEJ5SWRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0UmVjb3JkcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdFJlY29yZHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTx7XG4gICAgICAgIHRvdGFsOiBudW1iZXI7XG4gICAgICAgIHJlY29yZHM6IGFueVtdO1xuICAgIH0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0UmVjb3Jkc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVSZWNvcmQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZVJlY29yZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlVwZGF0ZVJlY29yZFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVSZWNvcmQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVJlY29yZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkRlbGV0ZVJlY29yZFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgcHVibGljIGFzeW5jIFJlc3RvcmVSZWNvcmQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJlc3RvcmVSZWNvcmRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJSZXN0b3JlUmVjb3JkXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwc2VydFJlY29yZChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBzZXJ0UmVjb3JkU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiVXBzZXJ0UmVjb3JkXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEJ1bGtDcmVhdGVSZWNvcmRzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBCdWxrQ3JlYXRlUmVjb3Jkc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkJ1bGtDcmVhdGVSZWNvcmRzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEVuc3VyZUFpcnRhYmxlSW1wb3J0Q3JlZGVudGlhbChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRW5zdXJlQWlydGFibGVJbXBvcnRDcmVkZW50aWFsU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRW5zdXJlQWlydGFibGVJbXBvcnRDcmVkZW50aWFsXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RBaXJ0YWJsZUltcG9ydFNvdXJjZXMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RBaXJ0YWJsZUltcG9ydFNvdXJjZXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0QWlydGFibGVJbXBvcnRTb3VyY2VzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFByZXZpZXdBaXJ0YWJsZUltcG9ydChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUHJldmlld0FpcnRhYmxlSW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUHJldmlld0FpcnRhYmxlSW1wb3J0XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJ1bkFpcnRhYmxlSW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSdW5BaXJ0YWJsZUltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlJ1bkFpcnRhYmxlSW1wb3J0XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEVuc3VyZUxpbmVhckltcG9ydENyZWRlbnRpYWwoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEVuc3VyZUxpbmVhckltcG9ydENyZWRlbnRpYWxTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJFbnN1cmVMaW5lYXJJbXBvcnRDcmVkZW50aWFsXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RMaW5lYXJJbXBvcnRTb3VyY2VzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0TGluZWFySW1wb3J0U291cmNlc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkxpc3RMaW5lYXJJbXBvcnRTb3VyY2VzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFByZXZpZXdMaW5lYXJJbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFByZXZpZXdMaW5lYXJJbXBvcnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJQcmV2aWV3TGluZWFySW1wb3J0XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJ1bkxpbmVhckltcG9ydChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUnVuTGluZWFySW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUnVuTGluZWFySW1wb3J0XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEVuc3VyZUdtYWlsSW1wb3J0Q3JlZGVudGlhbChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRW5zdXJlR21haWxJbXBvcnRDcmVkZW50aWFsU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRW5zdXJlR21haWxJbXBvcnRDcmVkZW50aWFsXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEVuc3VyZUdpdGh1YkltcG9ydENyZWRlbnRpYWwoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEVuc3VyZUdpdGh1YkltcG9ydENyZWRlbnRpYWxTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJFbnN1cmVHaXRodWJJbXBvcnRDcmVkZW50aWFsXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RHbWFpbEltcG9ydFNvdXJjZXMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RHbWFpbEltcG9ydFNvdXJjZXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0R21haWxJbXBvcnRTb3VyY2VzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RHaXRodWJJbXBvcnRTb3VyY2VzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0R2l0aHViSW1wb3J0U291cmNlc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkxpc3RHaXRodWJJbXBvcnRTb3VyY2VzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFByZXZpZXdHbWFpbEltcG9ydChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUHJldmlld0dtYWlsSW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUHJldmlld0dtYWlsSW1wb3J0XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFByZXZpZXdDc3ZJbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFByZXZpZXdDc3ZJbXBvcnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJQcmV2aWV3Q3N2SW1wb3J0XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFByZXZpZXdHaXRodWJJbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFByZXZpZXdHaXRodWJJbXBvcnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJQcmV2aWV3R2l0aHViSW1wb3J0XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJ1bkdtYWlsSW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSdW5HbWFpbEltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlJ1bkdtYWlsSW1wb3J0XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJ1bkNzdkltcG9ydChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUnVuQ3N2SW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUnVuQ3N2SW1wb3J0XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJ1bkdpdGh1YkltcG9ydChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUnVuR2l0aHViSW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUnVuR2l0aHViSW1wb3J0XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEVuc3VyZU5vdGlvbkltcG9ydENyZWRlbnRpYWwoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEVuc3VyZU5vdGlvbkltcG9ydENyZWRlbnRpYWxTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJFbnN1cmVOb3Rpb25JbXBvcnRDcmVkZW50aWFsXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3ROb3Rpb25JbXBvcnRTb3VyY2VzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0Tm90aW9uSW1wb3J0U291cmNlc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkxpc3ROb3Rpb25JbXBvcnRTb3VyY2VzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFByZXZpZXdOb3Rpb25JbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFByZXZpZXdOb3Rpb25JbXBvcnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJQcmV2aWV3Tm90aW9uSW1wb3J0XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJ1bk5vdGlvbkltcG9ydChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUnVuTm90aW9uSW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUnVuTm90aW9uSW1wb3J0XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEVuc3VyZUppcmFJbXBvcnRDcmVkZW50aWFsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBFbnN1cmVKaXJhSW1wb3J0Q3JlZGVudGlhbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkVuc3VyZUppcmFJbXBvcnRDcmVkZW50aWFsXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RKaXJhSW1wb3J0U291cmNlcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEppcmFJbXBvcnRTb3VyY2VzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdEppcmFJbXBvcnRTb3VyY2VzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFByZXZpZXdKaXJhSW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBQcmV2aWV3SmlyYUltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlByZXZpZXdKaXJhSW1wb3J0XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJ1bkppcmFJbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJ1bkppcmFJbXBvcnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJSdW5KaXJhSW1wb3J0XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEVuc3VyZVRyZWxsb0ltcG9ydENyZWRlbnRpYWwoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEVuc3VyZVRyZWxsb0ltcG9ydENyZWRlbnRpYWxTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJFbnN1cmVUcmVsbG9JbXBvcnRDcmVkZW50aWFsXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENvbm5lY3RUcmVsbG9JbXBvcnRDcmVkZW50aWFsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDb25uZWN0VHJlbGxvSW1wb3J0Q3JlZGVudGlhbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkNvbm5lY3RUcmVsbG9JbXBvcnRDcmVkZW50aWFsXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RUcmVsbG9JbXBvcnRTb3VyY2VzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0VHJlbGxvSW1wb3J0U291cmNlc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkxpc3RUcmVsbG9JbXBvcnRTb3VyY2VzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFByZXZpZXdUcmVsbG9JbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFByZXZpZXdUcmVsbG9JbXBvcnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJQcmV2aWV3VHJlbGxvSW1wb3J0XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJ1blRyZWxsb0ltcG9ydChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUnVuVHJlbGxvSW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUnVuVHJlbGxvSW1wb3J0XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEJ1bGtVcGRhdGVSZWNvcmRzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBCdWxrVXBkYXRlUmVjb3Jkc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkJ1bGtVcGRhdGVSZWNvcmRzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEJ1bGtEZWxldGVSZWNvcmRzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBCdWxrRGVsZXRlUmVjb3Jkc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkJ1bGtEZWxldGVSZWNvcmRzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuICAgIHB1YmxpYyBhc3luYyBEdXBsaWNhdGVSZWNvcmQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIER1cGxpY2F0ZVJlY29yZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkR1cGxpY2F0ZVJlY29yZFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBRdWVyeVJlY29yZHMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFF1ZXJ5UmVjb3Jkc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPHtcbiAgICAgICAgdG90YWw6IG51bWJlcjtcbiAgICAgICAgcmVjb3JkczogYW55W107XG4gICAgfT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlF1ZXJ5UmVjb3Jkc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBTZWFyY2hSZWNvcmRzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBTZWFyY2hSZWNvcmRzU2NoZW1hPlxuICAgICk6IFByb21pc2U8e1xuICAgICAgICB0b3RhbDogbnVtYmVyO1xuICAgICAgICByZWNvcmRzOiBhbnlbXTtcbiAgICB9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiU2VhcmNoUmVjb3Jkc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDb3VudFJlY29yZHMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENvdW50UmVjb3Jkc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkNvdW50UmVjb3Jkc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHcm91cFJlY29yZHMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdyb3VwUmVjb3Jkc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiR3JvdXBSZWNvcmRzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEFnZ3JlZ2F0ZVJlY29yZHMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEFnZ3JlZ2F0ZVJlY29yZHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkFnZ3JlZ2F0ZVJlY29yZHNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGlzdGluY3RGaWVsZFZhbHVlcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGlzdGluY3RGaWVsZFZhbHVlc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRGlzdGluY3RGaWVsZFZhbHVlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVDb2xsZWN0aW9uRmllbGQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUNvbGxlY3Rpb25GaWVsZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkNyZWF0ZUNvbGxlY3Rpb25GaWVsZFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVDb2xsZWN0aW9uRmllbGQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUNvbGxlY3Rpb25GaWVsZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlVwZGF0ZUNvbGxlY3Rpb25GaWVsZFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVDb2xsZWN0aW9uRmllbGQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUNvbGxlY3Rpb25GaWVsZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkRlbGV0ZUNvbGxlY3Rpb25GaWVsZFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0Q29sbGVjdGlvbkF1dG9tYXRpb25SdWxlcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdENvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0Q29sbGVjdGlvbkF1dG9tYXRpb25SdWxlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGUoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUNvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPFRDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGU+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJDcmVhdGVDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGVcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGVTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiVXBkYXRlQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUNvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRGVsZXRlQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RDb2xsZWN0aW9uVmlld3MoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RDb2xsZWN0aW9uVmlld3NTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUQ29sbGVjdGlvblZpZXdbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkxpc3RDb2xsZWN0aW9uVmlld3NcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQ29sbGVjdGlvblZpZXcoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUNvbGxlY3Rpb25WaWV3U2NoZW1hPlxuICAgICk6IFByb21pc2U8VENvbGxlY3Rpb25WaWV3PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiQ3JlYXRlQ29sbGVjdGlvblZpZXdcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlQ29sbGVjdGlvblZpZXcoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUNvbGxlY3Rpb25WaWV3U2NoZW1hPlxuICAgICk6IFByb21pc2U8VENvbGxlY3Rpb25WaWV3PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiVXBkYXRlQ29sbGVjdGlvblZpZXdcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQ29sbGVjdGlvblZpZXcoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUNvbGxlY3Rpb25WaWV3U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRGVsZXRlQ29sbGVjdGlvblZpZXdcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdENvbGxlY3Rpb25CdXR0b25zKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0Q29sbGVjdGlvbkJ1dHRvbnNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUQ29sbGVjdGlvbkJ1dHRvbltdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdENvbGxlY3Rpb25CdXR0b25zXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUNvbGxlY3Rpb25CdXR0b24oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUNvbGxlY3Rpb25CdXR0b25TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUQ29sbGVjdGlvbkJ1dHRvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkNyZWF0ZUNvbGxlY3Rpb25CdXR0b25cIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlQ29sbGVjdGlvbkJ1dHRvbihcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQ29sbGVjdGlvbkJ1dHRvblNjaGVtYT5cbiAgICApOiBQcm9taXNlPFRDb2xsZWN0aW9uQnV0dG9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiVXBkYXRlQ29sbGVjdGlvbkJ1dHRvblwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVDb2xsZWN0aW9uQnV0dG9uKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVDb2xsZWN0aW9uQnV0dG9uU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRGVsZXRlQ29sbGVjdGlvbkJ1dHRvblwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFeGVjdXRlQ29sbGVjdGlvbkJ1dHRvbihcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRXhlY3V0ZUNvbGxlY3Rpb25CdXR0b25TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJFeGVjdXRlQ29sbGVjdGlvbkJ1dHRvblwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFeGVjdXRlQ29sbGVjdGlvbkFpRmllbGQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEV4ZWN1dGVDb2xsZWN0aW9uQWlGaWVsZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkV4ZWN1dGVDb2xsZWN0aW9uQWlGaWVsZFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0Q29sbGVjdGlvblJlbGF0aW9ucyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdENvbGxlY3Rpb25SZWxhdGlvbnNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUQ29sbGVjdGlvblJlbGF0aW9uW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0Q29sbGVjdGlvblJlbGF0aW9uc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVDb2xsZWN0aW9uUmVsYXRpb24oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUNvbGxlY3Rpb25SZWxhdGlvblNjaGVtYT5cbiAgICApOiBQcm9taXNlPFRDb2xsZWN0aW9uUmVsYXRpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJDcmVhdGVDb2xsZWN0aW9uUmVsYXRpb25cIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlQ29sbGVjdGlvblJlbGF0aW9uKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVDb2xsZWN0aW9uUmVsYXRpb25TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUQ29sbGVjdGlvblJlbGF0aW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiVXBkYXRlQ29sbGVjdGlvblJlbGF0aW9uXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUNvbGxlY3Rpb25SZWxhdGlvbihcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlQ29sbGVjdGlvblJlbGF0aW9uU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRGVsZXRlQ29sbGVjdGlvblJlbGF0aW9uXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RSZWxhdGlvbkNhbmRpZGF0ZXMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RSZWxhdGlvbkNhbmRpZGF0ZXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTx7IGZpZWxkSWQ6IHN0cmluZzsgaXRlbXM6IFRSZWxhdGlvblJlY29yZE9wdGlvbltdIH0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0UmVsYXRpb25DYW5kaWRhdGVzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldFJlY29yZFJlbGF0aW9ucyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0UmVjb3JkUmVsYXRpb25zU2NoZW1hPlxuICAgICk6IFByb21pc2U8e1xuICAgICAgICByZWNvcmRJZDogc3RyaW5nO1xuICAgICAgICB2YWx1ZXM6IFJlY29yZDxzdHJpbmcsIFRSZWxhdGlvblJlY29yZE9wdGlvbltdIHwgVFJlbGF0aW9uUmVjb3JkT3B0aW9uIHwgbnVsbD47XG4gICAgfT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkdldFJlY29yZFJlbGF0aW9uc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSZW9yZGVyQ29sbGVjdGlvbkZpZWxkcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUmVvcmRlckNvbGxlY3Rpb25GaWVsZHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJSZW9yZGVyQ29sbGVjdGlvbkZpZWxkc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRDb2xsZWN0aW9uU2NoZW1hKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRDb2xsZWN0aW9uU2NoZW1hU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiR2V0Q29sbGVjdGlvblNjaGVtYVwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBWYWxpZGF0ZVJlY29yZChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVmFsaWRhdGVSZWNvcmRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJWYWxpZGF0ZVJlY29yZFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQcmV2aWV3VmFsaWRhdGlvbkVycm9ycyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUHJldmlld1ZhbGlkYXRpb25FcnJvcnNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJQcmV2aWV3VmFsaWRhdGlvbkVycm9yc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDaGVja1JlY29yZFBlcm1pc3Npb24oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENoZWNrUmVjb3JkUGVybWlzc2lvblNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkNoZWNrUmVjb3JkUGVybWlzc2lvblwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0UmVjb3JkUGVybWlzc2lvbnMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RSZWNvcmRQZXJtaXNzaW9uc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdFJlY29yZFBlcm1pc3Npb25zXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdyYW50UmVjb3JkUGVybWlzc2lvbihcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR3JhbnRSZWNvcmRQZXJtaXNzaW9uU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiR3JhbnRSZWNvcmRQZXJtaXNzaW9uXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBwdWJsaWMgYXN5bmMgUmV2b2tlUmVjb3JkUGVybWlzc2lvbihcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUmV2b2tlUmVjb3JkUGVybWlzc2lvblNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlJldm9rZVJlY29yZFBlcm1pc3Npb25cIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIC8vLS0td2lraS0tLS0tLS0tXG5cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVXaWtpUGFnZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlV2lraVBhZ2VTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwid2lraVwiLFxuICAgICAgICAgICAgXCJDcmVhdGVXaWtpUGFnZVwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVXaWtpUGFnZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlV2lraVBhZ2VTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJVcGRhdGVXaWtpUGFnZVwiLCB7XG4gICAgICAgICAgICAuLi5wYXlsb2FkLFxuICAgICAgICAgICAgLi4uKHR5cGVvZiBwYXlsb2FkLmZ1bGxQYWdlV2lkdGggPT09IFwiYm9vbGVhblwiXG4gICAgICAgICAgICAgICAgPyB7IGZ1bGxQYWdlV2lkdGg6IFN0cmluZyhwYXlsb2FkLmZ1bGxQYWdlV2lkdGgpIH1cbiAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZVdpa2lQYWdlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVXaWtpUGFnZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkRlbGV0ZVdpa2lQYWdlXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBNb3ZlV2lraVBhZ2UoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIE1vdmVXaWtpUGFnZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIk1vdmVXaWtpUGFnZVwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdFdpa2lQYWdlcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdFdpa2lQYWdlc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiTGlzdFdpa2lQYWdlc1wiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdFdpa2lTcGFjZXMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RXaWtpU3BhY2VzU2NoZW1hPlxuICAgICk6IFByb21pc2U8VFdpa2lTcGFjZVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiTGlzdFdpa2lTcGFjZXNcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZVdpa2lTcGFjZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlV2lraVNwYWNlU2NoZW1hPlxuICAgICk6IFByb21pc2U8VFdpa2lTcGFjZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkNyZWF0ZVdpa2lTcGFjZVwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlV2lraVNwYWNlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVXaWtpU3BhY2VTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUV2lraVNwYWNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiVXBkYXRlV2lraVNwYWNlXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVXaWtpU3BhY2UoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVdpa2lTcGFjZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPHsgZGVsZXRlZDogYm9vbGVhbjsgaWQ6IHN0cmluZyB9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiRGVsZXRlV2lraVNwYWNlXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRQcml2YXRlV2lraVNwYWNlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRQcml2YXRlV2lraVNwYWNlU2NoZW1hPlxuICAgICk6IFByb21pc2U8VFdpa2lTcGFjZSB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJHZXRQcml2YXRlV2lraVNwYWNlXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRXaWtpQWlTZXR0aW5ncyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0V2lraUFpU2V0dGluZ3NTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUV2lraUFpU2V0dGluZyB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJHZXRXaWtpQWlTZXR0aW5nc1wiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgU2V0V2lraUFpU2V0dGluZ3MoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFNldFdpa2lBaVNldHRpbmdzU2NoZW1hPlxuICAgICk6IFByb21pc2U8VFdpa2lBaVNldHRpbmc+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJTZXRXaWtpQWlTZXR0aW5nc1wiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdFdpa2lBaUNvbW1hbmRzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0V2lraUFpQ29tbWFuZHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUV2lraUFpQ29tbWFuZFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiTGlzdFdpa2lBaUNvbW1hbmRzXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVXaWtpQWlDb21tYW5kKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVXaWtpQWlDb21tYW5kU2NoZW1hPlxuICAgICk6IFByb21pc2U8VFdpa2lBaUNvbW1hbmQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJDcmVhdGVXaWtpQWlDb21tYW5kXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSdW5XaWtpQWlDb21tYW5kKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSdW5XaWtpQWlDb21tYW5kU2NoZW1hPlxuICAgICk6IFByb21pc2U8VFdpa2lBaVJ1blJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIlJ1bldpa2lBaUNvbW1hbmRcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFNldFdpa2lQYWdlVXNlclN0YXRlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBTZXRXaWtpUGFnZVVzZXJTdGF0ZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIlNldFdpa2lQYWdlVXNlclN0YXRlXCIsIHtcbiAgICAgICAgICAgIHBhZ2VJZDogcGF5bG9hZC5wYWdlSWQsXG4gICAgICAgICAgICAuLi4odHlwZW9mIHBheWxvYWQudXNlcklkID09PSBcInN0cmluZ1wiICYmIHBheWxvYWQudXNlcklkLnRyaW0oKVxuICAgICAgICAgICAgICAgID8geyB1c2VySWQ6IHBheWxvYWQudXNlcklkLnRyaW0oKSB9XG4gICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAuLi4odHlwZW9mIHBheWxvYWQuaXNGYXZvcml0ZSA9PT0gXCJib29sZWFuXCJcbiAgICAgICAgICAgICAgICA/IHsgaXNGYXZvcml0ZTogU3RyaW5nKHBheWxvYWQuaXNGYXZvcml0ZSkgfVxuICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgLi4uKHR5cGVvZiBwYXlsb2FkLmlzV2F0Y2hpbmcgPT09IFwiYm9vbGVhblwiXG4gICAgICAgICAgICAgICAgPyB7IGlzV2F0Y2hpbmc6IFN0cmluZyhwYXlsb2FkLmlzV2F0Y2hpbmcpIH1cbiAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwbG9hZFdpa2lGaWxlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGxvYWRFZGl0b3JGaWxlU2NoZW1hPlxuICAgICk6IFByb21pc2U8VFVwbG9hZGVkRmlsZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIlVwbG9hZEZpbGVcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJlc29sdmVXaWtpRmlsZVZpZXcoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJlc29sdmVXaWtpRmlsZVZpZXdTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUV2lraUZpbGVWaWV3UmVzb2x1dGlvbj4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmFjdGlvbkNhbGw8YW55PihcIndpa2lcIiwgXCJSZXNvbHZlV2lraUZpbGVWaWV3XCIsIHBheWxvYWQpO1xuICAgICAgICBjb25zdCBzdG9yYWdlUGF0aCA9XG4gICAgICAgICAgICB0aGlzLm5vcm1hbGl6ZVN0b3JhZ2VQYXRoKFN0cmluZyhyZXN1bHQ/LnBhdGggfHwgcmVzdWx0Py5maWxlUGF0aCB8fCByZXN1bHQ/LnVybCB8fCBcIlwiKSk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkVXJsID0gdGhpcy5yZXNvbHZlU3RvcmFnZVZpZXdVcmwoc3RvcmFnZVBhdGgpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgICAgICBmaWxlSWQ6IFN0cmluZyhyZXN1bHQ/LmZpbGVJZCB8fCBwYXlsb2FkLmZpbGVJZCB8fCBcIlwiKSxcbiAgICAgICAgICAgIHBhdGg6IHN0b3JhZ2VQYXRoLFxuICAgICAgICAgICAgZmlsZVBhdGg6IHJlc29sdmVkVXJsIHx8IHN0b3JhZ2VQYXRoLFxuICAgICAgICAgICAgdXJsOiByZXNvbHZlZFVybCB8fCBzdG9yYWdlUGF0aCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlV2lraUNvbW1lbnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVdpa2lDb21tZW50U2NoZW1hPlxuICAgICk6IFByb21pc2U8VFdpa2lDb21tZW50PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiQ3JlYXRlV2lraUNvbW1lbnRcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZVdpa2lDb21tZW50KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVXaWtpQ29tbWVudFNjaGVtYT5cbiAgICApOiBQcm9taXNlPFRXaWtpQ29tbWVudD4ge1xuICAgICAgICBjb25zdCBub3JtYWxpemVkUGF5bG9hZCA9IHtcbiAgICAgICAgICAgIC4uLnBheWxvYWQsXG4gICAgICAgICAgICAuLi4odHlwZW9mIHBheWxvYWQucmVzb2x2ZWQgPT09IFwiYm9vbGVhblwiXG4gICAgICAgICAgICAgICAgPyB7IHJlc29sdmVkOiBwYXlsb2FkLnJlc29sdmVkID8gXCJ0cnVlXCIgOiBcImZhbHNlXCIgfVxuICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICB9IGFzIGFueTtcblxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIlVwZGF0ZVdpa2lDb21tZW50XCIsIG5vcm1hbGl6ZWRQYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlV2lraUNvbW1lbnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVdpa2lDb21tZW50U2NoZW1hPlxuICAgICk6IFByb21pc2U8eyBpZDogc3RyaW5nOyBkZWxldGVkQXQ6IHN0cmluZyB9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiRGVsZXRlV2lraUNvbW1lbnRcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RXaWtpQ29tbWVudHMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RXaWtpQ29tbWVudHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUV2lraUNvbW1lbnRQYWdpbmF0aW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiTGlzdFdpa2lDb21tZW50c1wiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlV2lraVJlZmVyZW5jZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlV2lraVJlZmVyZW5jZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPFRXaWtpUmVmZXJlbmNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiQ3JlYXRlV2lraVJlZmVyZW5jZVwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlV2lraVJlZmVyZW5jZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlV2lraVJlZmVyZW5jZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPFRXaWtpUmVmZXJlbmNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiVXBkYXRlV2lraVJlZmVyZW5jZVwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0V2lraVJlZmVyZW5jZUJ5SWQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldFdpa2lSZWZlcmVuY2VCeUlkU2NoZW1hPlxuICAgICk6IFByb21pc2U8VFdpa2lSZWZlcmVuY2U+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJHZXRXaWtpUmVmZXJlbmNlQnlJZFwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdFdpa2lSZWZlcmVuY2VzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0V2lraVJlZmVyZW5jZXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUV2lraVJlZmVyZW5jZUxpc3RSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkxpc3RXaWtpUmVmZXJlbmNlc1wiLCB7XG4gICAgICAgICAgICAuLi5wYXlsb2FkLFxuICAgICAgICAgICAgLi4uKHR5cGVvZiBwYXlsb2FkLmxpbWl0ID09PSBcIm51bWJlclwiID8geyBsaW1pdDogU3RyaW5nKHBheWxvYWQubGltaXQpIH0gOiB7fSksXG4gICAgICAgICAgICAuLi4odHlwZW9mIHBheWxvYWQub2Zmc2V0ID09PSBcIm51bWJlclwiID8geyBvZmZzZXQ6IFN0cmluZyhwYXlsb2FkLm9mZnNldCkgfSA6IHt9KSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZVdpa2lSZWZlcmVuY2UoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVdpa2lSZWZlcmVuY2VTY2hlbWE+XG4gICAgKTogUHJvbWlzZTx7IGlkOiBzdHJpbmc7IGRlbGV0ZWRBdDogc3RyaW5nIH0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJEZWxldGVXaWtpUmVmZXJlbmNlXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSZXN0b3JlV2lraVBhZ2UoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJlc3RvcmVXaWtpUGFnZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIlJlc3RvcmVXaWtpUGFnZVwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0V2lraVBhZ2VCeUlkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRXaWtpUGFnZUJ5SWRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJHZXRXaWtpUGFnZUJ5SWRcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldFdpa2lQYWdlQnlTbHVnKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRXaWtpUGFnZUJ5U2x1Z1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkdldFdpa2lQYWdlQnlTbHVnXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRXaWtpVHJlZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0V2lraVRyZWVTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJHZXRXaWtpVHJlZVwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgKiBXaWtpIFJldmlzaW9uXG4gICAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlV2lraVJldmlzaW9uKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVXaWtpUmV2aXNpb25TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJDcmVhdGVXaWtpUmV2aXNpb25cIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldExhdGVzdFdpa2lSZXZpc2lvbihcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0TGF0ZXN0V2lraVJldmlzaW9uU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiR2V0TGF0ZXN0V2lraVJldmlzaW9uXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRXaWtpUmV2aXNpb25CeUlkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRXaWtpUmV2aXNpb25CeUlkU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiR2V0V2lraVJldmlzaW9uQnlJZFwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdENoYXRIaXN0b3J5KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0Q2hhdEhpc3RvcnlTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwR2V0KFwiL2NoYXQvaGlzdG9yeVwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbn1cbiJdfQ==
|
package/dist/service-client.d.ts
CHANGED
|
@@ -5,6 +5,6 @@ export declare abstract class ServiceClient {
|
|
|
5
5
|
protected abstract getServiceName(): string;
|
|
6
6
|
protected actionCall<T>(folder: string, actionName: string, payload: Payload): Promise<T>;
|
|
7
7
|
protected actionCall<T>(actionName: string, payload: Payload): Promise<T>;
|
|
8
|
-
protected
|
|
8
|
+
protected httpGet<T>(url: string, payload?: Payload): Promise<T>;
|
|
9
9
|
protected post<T>(url: string, payload: Payload): Promise<T>;
|
|
10
10
|
}
|
package/dist/service-client.js
CHANGED
|
@@ -18,7 +18,7 @@ export class ServiceClient {
|
|
|
18
18
|
};
|
|
19
19
|
return await this.client.call('post', uri, apiHeaders, args.length === 3 ? args[2] : args[1]);
|
|
20
20
|
}
|
|
21
|
-
|
|
21
|
+
httpGet(url, payload) {
|
|
22
22
|
return this.client.call('get', new URL(this.client.config.endpoint + url + (payload ? '?' + new URLSearchParams(payload) : '')));
|
|
23
23
|
}
|
|
24
24
|
post(url, payload) {
|
|
@@ -28,4 +28,4 @@ export class ServiceClient {
|
|
|
28
28
|
return this.client.call('post', new URL(this.client.config.endpoint + url), apiHeaders, payload);
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc2VydmljZS1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFnQixhQUFhO0lBSS9CLFlBQVksTUFBYztRQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN6QixDQUFDO0lBTVMsS0FBSyxDQUFDLFVBQVUsQ0FBSSxHQUFHLElBQVc7UUFFeEMsSUFBSSxPQUFPLEdBQVcsRUFBRSxDQUFDO1FBRXpCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNwQixNQUFNLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDM0MsT0FBTyxHQUFHLHFCQUFxQixJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksTUFBTSxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ25GLENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDbkMsT0FBTyxHQUFHLHFCQUFxQixJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksVUFBVSxFQUFFLENBQUM7UUFDekUsQ0FBQztRQUVELE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsQ0FBQztRQUUzRCxNQUFNLFVBQVUsR0FBaUM7WUFDN0MsY0FBYyxFQUFFLGtCQUFrQjtTQUNyQyxDQUFBO1FBRUQsT0FBTyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUN6QixNQUFNLEVBQ04sR0FBRyxFQUNILFVBQVUsRUFDVixJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ3hDLENBQUM7SUFDTixDQUFDO0lBRVMsT0FBTyxDQUFJLEdBQVcsRUFBRSxPQUFpQjtRQUMvQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNuQixLQUFLLEVBQ0wsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksZUFBZSxDQUFDLE9BQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUMxRyxDQUFDO0lBQ04sQ0FBQztJQUVTLElBQUksQ0FBSSxHQUFXLEVBQUUsT0FBZ0I7UUFDM0MsTUFBTSxVQUFVLEdBQWlDO1lBQzdDLGNBQWMsRUFBRSxrQkFBa0I7U0FDckMsQ0FBQTtRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ25CLE1BQU0sRUFDTixJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLEVBQzFDLFVBQVUsRUFDVixPQUFPLENBQ1YsQ0FBQztJQUNOLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENsaWVudCwgUGF5bG9hZCB9IGZyb20gXCIuL2NsaWVudFwiO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2VydmljZUNsaWVudCB7XG4gICAgY2xpZW50OiBDbGllbnQ7XG5cblxuICAgIGNvbnN0cnVjdG9yKGNsaWVudDogQ2xpZW50KSB7XG4gICAgICAgIHRoaXMuY2xpZW50ID0gY2xpZW50O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRTZXJ2aWNlTmFtZSgpOiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgYWN0aW9uQ2FsbDxUPihmb2xkZXI6IHN0cmluZywgYWN0aW9uTmFtZTogc3RyaW5nLCBwYXlsb2FkOiBQYXlsb2FkKTogUHJvbWlzZTxUPjtcbiAgICBwcm90ZWN0ZWQgYXN5bmMgYWN0aW9uQ2FsbDxUPihhY3Rpb25OYW1lOiBzdHJpbmcsIHBheWxvYWQ6IFBheWxvYWQpOiBQcm9taXNlPFQ+XG4gICAgcHJvdGVjdGVkIGFzeW5jIGFjdGlvbkNhbGw8VD4oLi4uYXJnczogYW55W10pOiBQcm9taXNlPFQ+IHtcblxuICAgICAgICBsZXQgYXBpUGF0aDogc3RyaW5nID0gJyc7XG5cbiAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAzKSB7XG4gICAgICAgICAgICBjb25zdCBbZm9sZGVyLCBhY3Rpb25OYW1lLCBwYXlsb2FkXSA9IGFyZ3M7XG4gICAgICAgICAgICBhcGlQYXRoID0gYC9zZXJ2aWNlL3JlZ2lzdHJ5LyR7dGhpcy5nZXRTZXJ2aWNlTmFtZSgpfS8ke2ZvbGRlcn0vJHthY3Rpb25OYW1lfWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBbYWN0aW9uTmFtZSwgcGF5bG9hZF0gPSBhcmdzO1xuICAgICAgICAgICAgYXBpUGF0aCA9IGAvc2VydmljZS9yZWdpc3RyeS8ke3RoaXMuZ2V0U2VydmljZU5hbWUoKX0vJHthY3Rpb25OYW1lfWA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHRoaXMuY2xpZW50LmNvbmZpZy5lbmRwb2ludCArIGFwaVBhdGgpO1xuXG4gICAgICAgIGNvbnN0IGFwaUhlYWRlcnM6IHsgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY2xpZW50LmNhbGwoXG4gICAgICAgICAgICAncG9zdCcsXG4gICAgICAgICAgICB1cmksXG4gICAgICAgICAgICBhcGlIZWFkZXJzLFxuICAgICAgICAgICAgYXJncy5sZW5ndGggPT09IDMgPyBhcmdzWzJdIDogYXJnc1sxXSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaHR0cEdldDxUPih1cmw6IHN0cmluZywgcGF5bG9hZD86IFBheWxvYWQpOiBQcm9taXNlPFQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xpZW50LmNhbGwoXG4gICAgICAgICAgICAnZ2V0JyxcbiAgICAgICAgICAgIG5ldyBVUkwodGhpcy5jbGllbnQuY29uZmlnLmVuZHBvaW50ICsgdXJsICsgKHBheWxvYWQgPyAnPycgKyBuZXcgVVJMU2VhcmNoUGFyYW1zKHBheWxvYWQgYXMgYW55KSA6ICcnKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcG9zdDxUPih1cmw6IHN0cmluZywgcGF5bG9hZDogUGF5bG9hZCk6IFByb21pc2U8VD4ge1xuICAgICAgICBjb25zdCBhcGlIZWFkZXJzOiB7IFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jbGllbnQuY2FsbChcbiAgICAgICAgICAgICdwb3N0JyxcbiAgICAgICAgICAgIG5ldyBVUkwodGhpcy5jbGllbnQuY29uZmlnLmVuZHBvaW50ICsgdXJsKSxcbiAgICAgICAgICAgIGFwaUhlYWRlcnMsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@appconda/sdk",
|
|
3
3
|
"homepage": "https://appconda.io/support",
|
|
4
4
|
"description": "Appconda is an open-source self-hosted backend server that abstract and simplify complex and repetitive development tasks behind a very simple REST API",
|
|
5
|
-
"version": "1.0.
|
|
5
|
+
"version": "1.0.662",
|
|
6
6
|
"license": "BSD-3-Clause",
|
|
7
7
|
"main": "dist/index.js",
|
|
8
8
|
"types": "dist/index.d.ts",
|
|
@@ -2119,7 +2119,7 @@ export class EmploidService extends ServiceClient {
|
|
|
2119
2119
|
public async ListChatHistory(
|
|
2120
2120
|
payload: z.infer<typeof ListChatHistorySchema>
|
|
2121
2121
|
): Promise<any[]> {
|
|
2122
|
-
return await this.
|
|
2122
|
+
return await this.httpGet("/chat/history", payload);
|
|
2123
2123
|
}
|
|
2124
2124
|
|
|
2125
2125
|
}
|
package/src/service-client.ts
CHANGED
|
@@ -38,7 +38,7 @@ export abstract class ServiceClient {
|
|
|
38
38
|
);
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
protected
|
|
41
|
+
protected httpGet<T>(url: string, payload?: Payload): Promise<T> {
|
|
42
42
|
return this.client.call(
|
|
43
43
|
'get',
|
|
44
44
|
new URL(this.client.config.endpoint + url + (payload ? '?' + new URLSearchParams(payload as any) : ''))
|
|
@@ -56,4 +56,4 @@ export abstract class ServiceClient {
|
|
|
56
56
|
payload
|
|
57
57
|
);
|
|
58
58
|
}
|
|
59
|
-
}
|
|
59
|
+
}
|