@bitgo/statics 55.1.0 → 55.3.0

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.
@@ -20,6 +20,7 @@ function getErc20TokenConfig(coin) {
20
20
  baseCoin = 'gteth';
21
21
  break;
22
22
  case networks_1.Networks.test.holesky.name:
23
+ case networks_1.Networks.test.hoodi.name:
23
24
  baseCoin = 'hteth';
24
25
  break;
25
26
  default:
@@ -484,6 +485,22 @@ const getFormattedVetTokens = (customCoinMap = coins_1.coins) => customCoinMap.r
484
485
  }
485
486
  return acc;
486
487
  }, []);
488
+ const getFormattedCosmosChainTokens = (customCoinMap = coins_1.coins) => customCoinMap.reduce((acc, coin) => {
489
+ if (coin instanceof account_1.CosmosChainToken) {
490
+ acc.push(getCosmosTokenConfig(coin));
491
+ }
492
+ return acc;
493
+ }, []);
494
+ function getCosmosTokenConfig(coin) {
495
+ return {
496
+ type: coin.name,
497
+ coin: coin.name.split(':')[0].toLowerCase(),
498
+ network: coin.network.type === networks_1.NetworkType.MAINNET ? 'Mainnet' : 'Testnet',
499
+ name: coin.fullName,
500
+ denom: coin.denom,
501
+ decimalPlaces: coin.decimalPlaces,
502
+ };
503
+ }
487
504
  const getFormattedTokens = (coinMap = coins_1.coins) => {
488
505
  const formattedAptNFTCollections = getFormattedAptNFTCollections(coinMap);
489
506
  return {
@@ -567,6 +584,9 @@ const getFormattedTokens = (coinMap = coins_1.coins) => {
567
584
  vet: {
568
585
  tokens: getFormattedVetTokens(coinMap).filter((token) => token.network === 'Mainnet'),
569
586
  },
587
+ cosmos: {
588
+ tokens: getFormattedCosmosChainTokens(coinMap).filter((token) => token.network === 'Mainnet'),
589
+ },
570
590
  },
571
591
  testnet: {
572
592
  eth: {
@@ -648,6 +668,9 @@ const getFormattedTokens = (coinMap = coins_1.coins) => {
648
668
  vet: {
649
669
  tokens: getFormattedVetTokens(coinMap).filter((token) => token.network === 'Testnet'),
650
670
  },
671
+ cosmos: {
672
+ tokens: getFormattedCosmosChainTokens(coinMap).filter((token) => token.network === 'Testnet'),
673
+ },
651
674
  },
652
675
  };
653
676
  };
@@ -754,4 +777,4 @@ function getFormattedTokenConfigForCoin(coin) {
754
777
  }
755
778
  return undefined;
756
779
  }
757
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5Db25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9rZW5Db25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBMGtDQSx3RUFrREM7QUE1bkNELHVDQTRCbUI7QUFDbkIsaUNBQXdEO0FBQ3hELG1DQUFnQztBQUNoQyx5Q0FBbUQ7QUFDbkQsK0JBQWdDO0FBd1RoQyxTQUFTLG1CQUFtQixDQUFDLElBQWU7SUFDMUMsSUFBSSxRQUFnQixDQUFDO0lBQ3JCLFFBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQixLQUFLLG1CQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJO1lBQzlCLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDakIsTUFBTTtRQUNSLEtBQUssbUJBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUk7WUFDM0IsUUFBUSxHQUFHLE1BQU0sQ0FBQztZQUNsQixNQUFNO1FBQ1IsS0FBSyxtQkFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSTtZQUM1QixRQUFRLEdBQUcsT0FBTyxDQUFDO1lBQ25CLE1BQU07UUFDUixLQUFLLG1CQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO1lBQzdCLFFBQVEsR0FBRyxPQUFPLENBQUM7WUFDbkIsTUFBTTtRQUNSO1lBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLElBQUksQ0FBQyxJQUFJLDZCQUE2QixDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUNELE9BQU87UUFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7UUFDZixJQUFJLEVBQUUsUUFBUTtRQUNkLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxzQkFBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQzFFLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUTtR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QUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQzthQUMxRjtZQUNELE9BQU8sRUFBRTtnQkFDUCxNQUFNLEVBQUUseUJBQXlCLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQzthQUMxRjtZQUNELE1BQU0sRUFBRTtnQkFDTixNQUFNLEVBQUUsd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQzthQUN6RjtZQUNELEtBQUssRUFBRTtnQkFDTCxNQUFNLEVBQUUsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQzthQUN4RjtZQUNELEtBQUssRUFBRTtnQkFDTCxNQUFNLEVBQUUsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQzthQUN4RjtZQUNELEdBQUcsRUFBRTtnQkFDSCxNQUFNLEVBQUUscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQzthQUN0RjtZQUNELElBQUksRUFBRTtnQkFDSixNQUFNLEVBQUUsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQzthQUN2RjtZQUNELEdBQUcsRUFBRTtnQkFDSCxNQUFNLEVBQUUscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQzthQUN0RjtZQUNELEdBQUcsRUFBRTtnQkFDSCxNQUFNLEVBQUUscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQzthQUN0RjtZQUNELEdBQUcsRUFBRTtnQkFDSCxNQUFNLEVBQUUscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQzthQUN0RjtZQUNELEdBQUcsRUFBRTtnQkFDSCxNQUFNLEVBQUUscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQzthQUN0RjtZQUNELElBQUksRUFBRTtnQkFDSixNQUFNLEVBQUUsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQzthQUN2RjtZQUNELE9BQU8sRUFBRTtnQkFDUCxNQUFNLEVBQUUseUJBQXlCLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQzthQUMxRjtZQUNELEtBQUssRUFBRTtnQkFDTCxNQUFNLEVBQUUsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQzthQUN4RjtZQUNELEdBQUcsRUFBRTtnQkFDSCxNQUFNLEVBQUUscUJBQXFCLENBQUMs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LENBQUM7UUFDdEMsT0FBTyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO1NBQU0sSUFBSSxJQUFJLFlBQVkscUJBQVcsRUFBRSxDQUFDO1FBQ3ZDLE9BQU8sb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZGFDb2luLFxuICBBbGdvQ29pbixcbiAgQXB0Q29pbixcbiAgQXB0TkZUQ29sbGVjdGlvbixcbiAgQXJiZXRoRVJDMjBUb2tlbixcbiAgQXZheEVSQzIwVG9rZW4sXG4gIEJlcmFFUkMyMFRva2VuLFxuICBCc2NDb2luLFxuICBDZWxvQ29pbixcbiAgQ29yZWRhb0VSQzIwVG9rZW4sXG4gIEVvc0NvaW4sXG4gIEVyYzExNTVDb2luLFxuICBFcmMyMENvaW4sXG4gIEVyYzcyMUNvaW4sXG4gIEhlZGVyYVRva2VuLFxuICBOZXAxNDFUb2tlbixcbiAgT3BldGhFUkMyMFRva2VuLFxuICBQb2x5Z29uRVJDMjBUb2tlbixcbiAgU2lwMTBUb2tlbixcbiAgU29sQ29pbixcbiAgU3RlbGxhckNvaW4sXG4gIFN1aUNvaW4sXG4gIFRyb25FcmMyMENvaW4sXG4gIFZldFRva2VuLFxuICBXb3JsZEVSQzIwVG9rZW4sXG4gIFhycENvaW4sXG4gIFprZXRoRVJDMjBUb2tlbixcbn0gZnJvbSAnLi9hY2NvdW50JztcbmltcG9ydCB7IENvaW5GYW1pbHksIENvaW5LaW5kLCBCYXNlQ29pbiB9IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBjb2lucyB9IGZyb20gJy4vY29pbnMnO1xuaW1wb3J0IHsgTmV0d29ya3MsIE5ldHdvcmtUeXBlIH0gZnJvbSAnLi9uZXR3b3Jrcyc7XG5pbXBvcnQgeyBPZmNDb2luIH0gZnJvbSAnLi9vZmMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VUb2tlbkNvbmZpZyB7XG4gIGNvaW46IHN0cmluZztcbiAgZGVjaW1hbFBsYWNlczogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYXNlTmV0d29ya0NvbmZpZyBleHRlbmRzIEJhc2VUb2tlbkNvbmZpZyB7XG4gIG5ldHdvcms6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYXNlQ29udHJhY3RBZGRyZXNzQ29uZmlnIGV4dGVuZHMgQmFzZU5ldHdvcmtDb25maWcge1xuICB0b2tlbkNvbnRyYWN0QWRkcmVzczogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBBdmF4Y1Rva2VuQ29uZmlnID0gQmFzZUNvbnRyYWN0QWRkcmVzc0NvbmZpZztcbmV4cG9ydCB0eXBlIENlbG9Ub2tlbkNvbmZpZyA9IEJhc2VDb250cmFjdEFkZHJlc3NDb25maWc7XG5leHBvcnQgdHlwZSBFdGhMaWtlVG9rZW5Db25maWcgPSBCYXNlQ29udHJhY3RBZGRyZXNzQ29uZmlnO1xuZXhwb3J0IHR5cGUgRW9zVG9rZW5Db25maWcgPSBCYXNlQ29udHJhY3RBZGRyZXNzQ29uZmlnICYge1xuICBjb250cmFjdE5hbWU6IHN0cmluZztcbiAgY29udHJhY3RBZGRyZXNzOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgRXJjMjBUb2tlbkNvbmZpZyA9IEJhc2VDb250cmFjdEFkZHJlc3NDb25maWc7XG5leHBvcnQgdHlwZSBUcnhUb2tlbkNvbmZpZyA9IEJhc2VDb250cmFjdEFkZHJlc3NDb25maWc7XG5leHBvcnQgdHlwZSBTdGVsbGFyVG9rZW5Db25maWcgPSBCYXNlTmV0d29ya0NvbmZpZztcblxuZXhwb3J0IHR5cGUgU29sVG9rZW5Db25maWcgPSBCYXNlTmV0d29ya0NvbmZpZyAmIHtcbiAgdG9rZW5BZGRyZXNzOiBzdHJpbmc7XG4gIGNvbnRyYWN0QWRkcmVzczogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQWRhVG9rZW5Db25maWcgPSBCYXNlTmV0d29ya0NvbmZpZyAmIHtcbiAgcG9saWN5SWQ6IHN0cmluZztcbiAgYXNzZXROYW1lOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBBbGdvVG9rZW5Db25maWcgPSBCYXNlTmV0d29ya0NvbmZpZyAmIHtcbiAgYWxpYXM/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBPZmNUb2tlbkNvbmZpZyA9IEJhc2VUb2tlbkNvbmZpZyAmIHtcbiAgYmFja2luZ0NvaW46IHN0cmluZztcbiAgaXNGaWF0OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgSGJhclRva2VuQ29uZmlnID0gQmFzZU5ldHdvcmtDb25maWcgJiB7XG4gIG5vZGVBY2NvdW50SWQ6IHN0cmluZztcbiAgdG9rZW5JZDogc3RyaW5nO1xuICBjb250cmFjdEFkZHJlc3M6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFhycFRva2VuQ29uZmlnID0gQmFzZU5ldHdvcmtDb25maWcgJiB7XG4gIGlzc3VlckFkZHJlc3M6IHN0cmluZztcbiAgY3VycmVuY3lDb2RlOiBzdHJpbmc7XG4gIGRvbWFpbj86IHN0cmluZztcbiAgY29udHJhY3RBZGRyZXNzOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBTdWlUb2tlbkNvbmZpZyA9IEJhc2VOZXR3b3JrQ29uZmlnICYge1xuICBwYWNrYWdlSWQ6IHN0cmluZztcbiAgbW9kdWxlOiBzdHJpbmc7XG4gIHN5bWJvbDogc3RyaW5nO1xuICBjb250cmFjdEFkZHJlc3M6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEFwdFRva2VuQ29uZmlnID0gQmFzZU5ldHdvcmtDb25maWcgJiB7XG4gIGFzc2V0SWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEFwdE5GVENvbGxlY3Rpb25Db25maWcgPSBCYXNlTmV0d29ya0NvbmZpZyAmIHtcbiAgbmZ0Q29sbGVjdGlvbklkOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBTaXAxMFRva2VuQ29uZmlnID0gQmFzZU5ldHdvcmtDb25maWcgJiB7XG4gIGFzc2V0SWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE5lcDE0MVRva2VuQ29uZmlnID0gQmFzZU5ldHdvcmtDb25maWcgJiB7XG4gIGNvbnRyYWN0QWRkcmVzczogc3RyaW5nO1xuICBzdG9yYWdlRGVwb3NpdEFtb3VudDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgVmV0VG9rZW5Db25maWcgPSBCYXNlTmV0d29ya0NvbmZpZyAmIHtcbiAgY29udHJhY3RBZGRyZXNzOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBUb2tlbkNvbmZpZyA9XG4gIHwgRXJjMjBUb2tlbkNvbmZpZ1xuICB8IFN0ZWxsYXJUb2tlbkNvbmZpZ1xuICB8IE9mY1Rva2VuQ29uZmlnXG4gIHwgQ2Vsb1Rva2VuQ29uZmlnXG4gIHwgRXRoTGlrZVRva2VuQ29uZmlnXG4gIHwgRW9zVG9rZW5Db25maWdcbiAgfCBBdmF4Y1Rva2VuQ29uZmlnXG4gIHwgU29sVG9rZW5Db25maWdcbiAgfCBIYmFyVG9rZW5Db25maWdcbiAgfCBBZGFUb2tlbkNvbmZpZ1xuICB8IEFsZ29Ub2tlbkNvbmZpZ1xuICB8IFRyeFRva2VuQ29uZmlnXG4gIHwgWHJwVG9rZW5Db25maWdcbiAgfCBTdWlUb2tlbkNvbmZpZ1xuICB8IEFwdFRva2VuQ29uZmlnXG4gIHwgQXB0TkZUQ29sbGVjdGlvbkNvbmZpZ1xuICB8IFNpcDEwVG9rZW5Db25maWdcbiAgfCBOZXAxNDFUb2tlbkNvbmZpZztcblxuZXhwb3J0IGludGVyZmFjZSBUb2tlbnMge1xuICBiaXRjb2luOiB7XG4gICAgZXRoOiB7XG4gICAgICB0b2tlbnM6IEVyYzIwVG9rZW5Db25maWdbXTtcbiAgICB9O1xuICAgIHhsbToge1xuICAgICAgdG9rZW5zOiBTdGVsbGFyVG9rZW5Db25maWdbXTtcbiAgICB9O1xuICAgIGFsZ286IHtcbiAgICAgIHRva2VuczogQWxnb1Rva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICBvZmM6IHtcbiAgICAgIHRva2VuczogT2ZjVG9rZW5Db25maWdbXTtcbiAgICB9O1xuICAgIGNlbG86IHtcbiAgICAgIHRva2VuczogQ2Vsb1Rva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICBlb3M6IHtcbiAgICAgIHRva2VuczogRW9zVG9rZW5Db25maWdbXTtcbiAgICB9O1xuICAgIGF2YXhjOiB7XG4gICAgICB0b2tlbnM6IEF2YXhjVG9rZW5Db25maWdbXTtcbiAgICB9O1xuICAgIHBvbHlnb246IHtcbiAgICAgIHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICBzb25laXVtOiB7XG4gICAgICB0b2tlbnM6IEV0aExpa2VUb2tlbkNvbmZpZ1tdO1xuICAgIH07XG4gICAgYnNjOiB7XG4gICAgICB0b2tlbnM6IEV0aExpa2VUb2tlbkNvbmZpZ1tdO1xuICAgIH07XG4gICAgYXJiZXRoOiB7XG4gICAgICB0b2tlbnM6IEV0aExpa2VUb2tlbkNvbmZpZ1tdO1xuICAgIH07XG4gICAgb3BldGg6IHtcbiAgICAgIHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICBjb3JlZGFvOiB7XG4gICAgICB0b2tlbnM6IEV0aExpa2VUb2tlbkNvbmZpZ1tdO1xuICAgIH07XG4gICAgd29ybGQ6IHtcbiAgICAgIHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICBzb2w6IHtcbiAgICAgIHRva2VuczogU29sVG9rZW5Db25maWdbXTtcbiAgICB9O1xuICAgIGhiYXI6IHtcbiAgICAgIHRva2VuczogSGJhclRva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICBhZGE6IHtcbiAgICAgIHRva2VuczogQWRhVG9rZW5Db25maWdbXTtcbiAgICB9O1xuICAgIHRyeDoge1xuICAgICAgdG9rZW5zOiBUcnhUb2tlbkNvbmZpZ1tdO1xuICAgIH07XG4gICAgeHJwOiB7XG4gICAgICB0b2tlbnM6IFhycFRva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICB6a2V0aDoge1xuICAgICAgdG9rZW5zOiBFdGhMaWtlVG9rZW5Db25maWdbXTtcbiAgICB9O1xuICAgIHN1aToge1xuICAgICAgdG9rZW5zOiBTdWlUb2tlbkNvbmZpZ1tdO1xuICAgIH07XG4gICAgYmVyYToge1xuICAgICAgdG9rZW5zOiBFdGhMaWtlVG9rZW5Db25maWdbXTtcbiAgICB9O1xuICAgIGFwdDoge1xuICAgICAgdG9rZW5zOiBBcHRUb2tlbkNvbmZpZ1tdO1xuICAgICAgbmZ0Q29sbGVjdGlvbnM6IEFwdE5GVENvbGxlY3Rpb25Db25maWdbXTtcbiAgICB9O1xuICAgIHN0eDoge1xuICAgICAgdG9rZW5zOiBTaXAxMFRva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICBuZWFyOiB7XG4gICAgICB0b2tlbnM6IE5lcDE0MVRva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICB2ZXQ6IHtcbiAgICAgIHRva2VuczogVmV0VG9rZW5Db25maWdbXTtcbiAgICB9O1xuICB9O1xuICB0ZXN0bmV0OiB7XG4gICAgZXRoOiB7XG4gICAgICB0b2tlbnM6IEVyYzIwVG9rZW5Db25maWdbXTtcbiAgICB9O1xuICAgIHhsbToge1xuICAgICAgdG9rZW5zOiBTdGVsbGFyVG9rZW5Db25maWdbXTtcbiAgICB9O1xuICAgIGFsZ286IHtcbiAgICAgIHRva2VuczogQWxnb1Rva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICBvZmM6IHtcbiAgICAgIHRva2VuczogT2ZjVG9rZW5Db25maWdbXTtcbiAgICB9O1xuICAgIGNlbG86IHtcbiAgICAgIHRva2VuczogQ2Vsb1Rva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICBic2M6IHtcbiAgICAgIHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICBlb3M6IHtcbiAgICAgIHRva2VuczogRW9zVG9rZW5Db25maWdbXTtcbiAgICB9O1xuICAgIGF2YXhjOiB7XG4gICAgICB0b2tlbnM6IEF2YXhjVG9rZW5Db25maWdbXTtcbiAgICB9O1xuICAgIHBvbHlnb246IHtcbiAgICAgIHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICBzb25laXVtOiB7XG4gICAgICB0b2tlbnM6IEV0aExpa2VUb2tlbkNvbmZpZ1tdO1xuICAgIH07XG4gICAgYXJiZXRoOiB7XG4gICAgICB0b2tlbnM6IEV0aExpa2VUb2tlbkNvbmZpZ1tdO1xuICAgIH07XG4gICAgb3BldGg6IHtcbiAgICAgIHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICBzb2w6IHtcbiAgICAgIHRva2VuczogU29sVG9rZW5Db25maWdbXTtcbiAgICB9O1xuICAgIGhiYXI6IHtcbiAgICAgIHRva2VuczogSGJhclRva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICBhZGE6IHtcbiAgICAgIHRva2VuczogQWRhVG9rZW5Db25maWdbXTtcbiAgICB9O1xuICAgIHRyeDoge1xuICAgICAgdG9rZW5zOiBUcnhUb2tlbkNvbmZpZ1tdO1xuICAgIH07XG4gICAgeHJwOiB7XG4gICAgICB0b2tlbnM6IFhycFRva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICB6a2V0aDoge1xuICAgICAgdG9rZW5zOiBFdGhMaWtlVG9rZW5Db25maWdbXTtcbiAgICB9O1xuICAgIHN1aToge1xuICAgICAgdG9rZW5zOiBTdWlUb2tlbkNvbmZpZ1tdO1xuICAgIH07XG4gICAgYmVyYToge1xuICAgICAgdG9rZW5zOiBFdGhMaWtlVG9rZW5Db25maWdbXTtcbiAgICB9O1xuICAgIGNvcmVkYW86IHtcbiAgICAgIHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICB3b3JsZDoge1xuICAgICAgdG9rZW5zOiBFdGhMaWtlVG9rZW5Db25maWdbXTtcbiAgICB9O1xuICAgIGFwdDoge1xuICAgICAgdG9rZW5zOiBBcHRUb2tlbkNvbmZpZ1tdO1xuICAgICAgbmZ0Q29sbGVjdGlvbnM6IEFwdE5GVENvbGxlY3Rpb25Db25maWdbXTtcbiAgICB9O1xuICAgIHN0eDoge1xuICAgICAgdG9rZW5zOiBTaXAxMFRva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICBuZWFyOiB7XG4gICAgICB0b2tlbnM6IE5lcDE0MVRva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICB2ZXQ6IHtcbiAgICAgIHRva2VuczogVmV0VG9rZW5Db25maWdbXTtcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFtc1Rva2VuQ29uZmlnIHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBmdWxsTmFtZTogc3RyaW5nO1xuICBmYW1pbHk6IHN0cmluZztcbiAgZGVjaW1hbFBsYWNlczogbnVtYmVyO1xuICBhc3NldDogc3RyaW5nO1xuICBmZWF0dXJlcz86IHN0cmluZ1tdO1xuICBwcmVmaXg/OiBzdHJpbmc7XG4gIHN1ZmZpeD86IHN0cmluZztcbiAgbmV0d29yaz86IHVua25vd247XG4gIHByaW1hcnlLZXlDdXJ2ZT86IHN0cmluZztcbiAgY29udHJhY3RBZGRyZXNzPzogc3RyaW5nO1xuICB0b2tlbkFkZHJlc3M/OiBzdHJpbmc7XG4gIG5mdENvbGxlY3Rpb25JZD86IHN0cmluZztcbiAgYWxpYXM/OiBzdHJpbmc7XG4gIGNvbnRyYWN0TmFtZT86IHN0cmluZztcbiAgdG9rZW5JZD86IHN0cmluZztcbiAgcGFja2FnZUlkPzogc3RyaW5nO1xuICBtb2R1bGU/OiBzdHJpbmc7XG4gIHN5bWJvbD86IHN0cmluZztcbiAgaXNzdWVyQWRkcmVzcz86IHN0cmluZztcbiAgY3VycmVjbnljb2RlPzogc3RyaW5nO1xuICBkb21haW4/OiBzdHJpbmc7XG4gIGFzc2V0SWQ/OiBzdHJpbmc7XG4gIGlzVG9rZW46IGJvb2xlYW47XG4gIGJhc2VVbml0Pzogc3RyaW5nO1xuICBraW5kPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyaW1tZWRBbXNOZXR3b3JrQ29uZmlnIHtcbiAgbmFtZTogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBUcmltbWVkQW1zVG9rZW5Db25maWcgZXh0ZW5kcyBPbWl0PEFtc1Rva2VuQ29uZmlnLCAnZmVhdHVyZXMnIHwgJ25ldHdvcmsnPiB7XG4gIG5ldHdvcms6IFRyaW1tZWRBbXNOZXR3b3JrQ29uZmlnO1xuICBleGNsdWRlZEZlYXR1cmVzPzogc3RyaW5nW107XG4gIGFkZGl0aW9uYWxGZWF0dXJlcz86IHN0cmluZ1tdO1xufVxuXG5mdW5jdGlvbiBnZXRFcmMyMFRva2VuQ29uZmlnKGNvaW46IEVyYzIwQ29pbik6IEVyYzIwVG9rZW5Db25maWcge1xuICBsZXQgYmFzZUNvaW46IHN0cmluZztcbiAgc3dpdGNoIChjb2luLm5ldHdvcmsubmFtZSkge1xuICAgIGNhc2UgTmV0d29ya3MubWFpbi5ldGhlcmV1bS5uYW1lOlxuICAgICAgYmFzZUNvaW4gPSAnZXRoJztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTmV0d29ya3MudGVzdC5rb3Zhbi5uYW1lOlxuICAgICAgYmFzZUNvaW4gPSAndGV0aCc7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE5ldHdvcmtzLnRlc3QuZ29lcmxpLm5hbWU6XG4gICAgICBiYXNlQ29pbiA9ICdndGV0aCc7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE5ldHdvcmtzLnRlc3QuaG9sZXNreS5uYW1lOlxuICAgICAgYmFzZUNvaW4gPSAnaHRldGgnO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRXJjMjAgdG9rZW4gJHtjb2luLm5hbWV9IGhhcyBhbiB1bnN1cHBvcnRlZCBuZXR3b3JrYCk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogYmFzZUNvaW4sXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogY29pbi5jb250cmFjdEFkZHJlc3MudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cblxuLy8gR2V0IHRoZSBsaXN0IG9mIEVSQy0yMCB0b2tlbnMgZnJvbSBzdGF0aWNzIGFuZCBmb3JtYXQgaXQgcHJvcGVybHlcbmNvbnN0IGdldEZvcm1hdHRlZEVyYzIwVG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogRXJjMjBUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBFcmMyMENvaW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldEVyYzIwVG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmV4cG9ydCBjb25zdCBldGhHYXNDb25maWdzID0ge1xuICBtaW5pbXVtR2FzUHJpY2U6IDEwMDAwMDAwMDAsIC8vIG1pbmltdW0gZ2FzIHByaWNlIGEgdXNlciBjYW4gcHJvdmlkZSAoMSBHd2VpKVxuICBkZWZhdWx0R2FzUHJpY2U6IDIwMDAwMDAwMDAwLCAvLyBkZWZhdWx0IGdhcyBwcmljZSBpZiBlc3RpbWF0aW9uIGZhaWxzICgyMCBHd2VpKVxuICBtYXhpbXVtR2FzUHJpY2U6IDI1MDAwMDAwMDAwMDAsIC8vIG1pbmltdW0gZ2FzIHByaWNlIGEgdXNlciBjYW4gcHJvdmlkZSAoMjUwMCBHd2VpKVxuICBkZWZhdWx0R2FzTGltaXQ6IDUwMDAwMCwgLy8gRGVmYXVsdCBnYXMgbGltaXQgd2Ugc2V0IGZvciBjb250cmFjdCBzZW5kXG4gIGRlZmF1bHRHYXNMaW1pdFRva2VuU2VuZDogMTAwMDAwMCwgLy8gRGVmYXVsdCBnYXMgbGltaXQgd2Ugc2V0IGZvciB0b2tlbiBzZW5kXG4gIG1pbmltdW1HYXNMaW1pdDogMzAwMDAsIC8vIG1pbmltdW0gZ2FzIGxpbWl0IGEgdXNlciBjYW4gc2V0IGZvciBhIHNlbmRcbiAgbWF4aW11bUdhc0xpbWl0OiAyMDAwMDAwMCwgLy8gQ3VzdG9tZXJzIGNhbm5vdCBzZXQgZ2FzIGxpbWl0cyBiZXlvbmQgdGhpcyBhbW91bnRcbiAgbmV3RXRoTGlrZUNvaW5zTWluR2FzTGltaXQ6IDQwMDAwMCwgLy8gbWluaW11bSBnYXMgbGltaXQgYSB1c2VyIGNhbiBzZXQgZm9yIGEgc2VuZCBmb3IgZXRoIGxpa2UgY29pbnMgbGlrZSBhcmJpdHJ1bSwgb3B0aW1pc20sIGV0Y1xuICBvcGV0aEdhc0wxRmVlczogMTAwMDAwMDAwMDAwMDAwMCwgLy8gQnVmZmVyIGZvciBvcGV0aCBMMSBnYXMgZmVlc1xufTtcblxuZnVuY3Rpb24gZ2V0U3RlbGxhclRva2VuQ29uZmlnKGNvaW46IFN0ZWxsYXJDb2luKTogU3RlbGxhclRva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAneGxtJyA6ICd0eGxtJyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cbi8vIEdldCB0aGUgbGlzdCBvZiBTdGVsbGFyIHRva2VucyBmcm9tIHN0YXRpY3MgYW5kIGZvcm1hdCBpdCBwcm9wZXJseVxuY29uc3QgZ2V0Rm9ybWF0dGVkU3RlbGxhclRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IFN0ZWxsYXJUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBTdGVsbGFyQ29pbikge1xuICAgICAgYWNjLnB1c2goZ2V0U3RlbGxhclRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRPZmNUb2tlbkNvbmZpZyhjb2luOiBPZmNDb2luKTogT2ZjVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiAnb2ZjJyxcbiAgICBiYWNraW5nQ29pbjogY29pbi5hc3NldCxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgICBpc0ZpYXQ6IGNvaW4ua2luZCA9PT0gQ29pbktpbmQuRklBVCxcbiAgfTtcbn1cbi8vIEdldCB0aGUgbGlzdCBvZiBPRkMgdG9rZW5zIGZyb20gc3RhdGljcyBhbmQgZm9ybWF0IGl0IHByb3Blcmx5XG5jb25zdCBnZXRGb3JtYXR0ZWRPZmNDb2lucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IE9mY1Rva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIE9mY0NvaW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldE9mY1Rva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRDZWxvVG9rZW5Db25maWcoY29pbjogQ2Vsb0NvaW4pOiBDZWxvVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdjZWxvJyA6ICd0Y2VsbycsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogY29pbi5jb250cmFjdEFkZHJlc3MudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZENlbG9Ub2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBDZWxvVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgQ2Vsb0NvaW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldENlbG9Ub2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0QnNjVG9rZW5Db25maWcoY29pbjogQnNjQ29pbik6IEV0aExpa2VUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ2JzYycgOiAndGJzYycsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogY29pbi5jb250cmFjdEFkZHJlc3MudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZEJzY1Rva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEV0aExpa2VUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBCc2NDb2luKSB7XG4gICAgICBhY2MucHVzaChnZXRCc2NUb2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0RW9zVG9rZW5Db25maWcoY29pbjogRW9zQ29pbik6IEVvc1Rva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnZW9zJyA6ICd0ZW9zJyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0TmFtZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCksXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICAgIGNvbnRyYWN0TmFtZTogY29pbi5jb250cmFjdE5hbWUsXG4gICAgY29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZEVvc1Rva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEVvc1Rva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIEVvc0NvaW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldEVvc1Rva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRBdmF4Q1Rva2VuQ29uZmlnKGNvaW46IEF2YXhFUkMyMFRva2VuKTogQXZheGNUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ2F2YXhjJyA6ICd0YXZheGMnLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3RBZGRyZXNzLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5jb25zdCBnZXRGb3JtYXR0ZWRBdmF4Q1Rva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEF2YXhjVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgQXZheEVSQzIwVG9rZW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldEF2YXhDVG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldFBvbHlnb25Ub2tlbkNvbmZpZyhjb2luOiBQb2x5Z29uRVJDMjBUb2tlbiB8IEVyYzcyMUNvaW4gfCBFcmMxMTU1Q29pbik6IEV0aExpa2VUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ3BvbHlnb24nIDogJ3Rwb2x5Z29uJyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCksXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkUG9seWdvblRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEV0aExpa2VUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKFxuICAgICAgY29pbiBpbnN0YW5jZW9mIFBvbHlnb25FUkMyMFRva2VuIHx8XG4gICAgICAoKGNvaW4gaW5zdGFuY2VvZiBFcmM3MjFDb2luIHx8IGNvaW4gaW5zdGFuY2VvZiBFcmMxMTU1Q29pbikgJiYgY29pbi5mYW1pbHkgPT09IENvaW5GYW1pbHkuUE9MWUdPTilcbiAgICApIHtcbiAgICAgIGFjYy5wdXNoKGdldFBvbHlnb25Ub2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0U29uZWl1bVRva2VuQ29uZmlnKGNvaW46IEVyYzcyMUNvaW4gfCBFcmMxMTU1Q29pbik6IEV0aExpa2VUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ3NvbmVpdW0nIDogJ3Rzb25laXVtJyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCksXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkU29uZWl1bVRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEV0aExpa2VUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKChjb2luIGluc3RhbmNlb2YgRXJjNzIxQ29pbiB8fCBjb2luIGluc3RhbmNlb2YgRXJjMTE1NUNvaW4pICYmIGNvaW4uZmFtaWx5ID09PSBDb2luRmFtaWx5LlNPTkVJVU0pIHtcbiAgICAgIGFjYy5wdXNoKGdldFNvbmVpdW1Ub2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0QXJiZXRoVG9rZW5Db25maWcoY29pbjogQXJiZXRoRVJDMjBUb2tlbik6IEV0aExpa2VUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ2FyYmV0aCcgOiAndGFyYmV0aCcsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogY29pbi5jb250cmFjdEFkZHJlc3MudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZEFyYmV0aFRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEV0aExpa2VUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBBcmJldGhFUkMyMFRva2VuKSB7XG4gICAgICBhY2MucHVzaChnZXRBcmJldGhUb2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0T3BldGhUb2tlbkNvbmZpZyhjb2luOiBPcGV0aEVSQzIwVG9rZW4pOiBFdGhMaWtlVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdvcGV0aCcgOiAndG9wZXRoJyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCksXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkT3BldGhUb2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBFdGhMaWtlVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgT3BldGhFUkMyMFRva2VuKSB7XG4gICAgICBhY2MucHVzaChnZXRPcGV0aFRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRaa2V0aFRva2VuQ29uZmlnKGNvaW46IFprZXRoRVJDMjBUb2tlbik6IEV0aExpa2VUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ3prZXRoJyA6ICd0emtldGgnLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3RBZGRyZXNzLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5jb25zdCBnZXRGb3JtYXR0ZWRaa2V0aFRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEV0aExpa2VUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBaa2V0aEVSQzIwVG9rZW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldFprZXRoVG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldEJlcmFUb2tlbkNvbmZpZyhjb2luOiBCZXJhRVJDMjBUb2tlbik6IEV0aExpa2VUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ2JlcmEnIDogJ3RiZXJhJyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCksXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkQmVyYVRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEV0aExpa2VUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBCZXJhRVJDMjBUb2tlbikge1xuICAgICAgYWNjLnB1c2goZ2V0QmVyYVRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRDb3JlZGFvVG9rZW5Db25maWcoY29pbjogQ29yZWRhb0VSQzIwVG9rZW4pOiBFdGhMaWtlVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdjb3JlZGFvJyA6ICd0Y29yZWRhbycsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogY29pbi5jb250cmFjdEFkZHJlc3MudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZENvcmVkYW9Ub2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBFdGhMaWtlVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgQ29yZWRhb0VSQzIwVG9rZW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldENvcmVkYW9Ub2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0V29ybGRUb2tlbkNvbmZpZyhjb2luOiBXb3JsZEVSQzIwVG9rZW4pOiBFdGhMaWtlVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICd3b3JsZCcgOiAndHdvcmxkJyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCksXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkV29ybGRUb2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBFdGhMaWtlVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgV29ybGRFUkMyMFRva2VuKSB7XG4gICAgICBhY2MucHVzaChnZXRXb3JsZFRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRTb2xUb2tlbkNvbmZpZyhjb2luOiBTb2xDb2luKTogU29sVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdzb2wnIDogJ3Rzb2wnLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgdG9rZW5BZGRyZXNzOiBjb2luLnRva2VuQWRkcmVzcyxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gICAgY29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZFNvbFRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IFNvbFRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIFNvbENvaW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldFNvbFRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRBbGdvVG9rZW5Db25maWcoY29pbjogQWxnb0NvaW4pOiBBbGdvVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdhbGdvJyA6ICd0YWxnbycsXG4gICAgYWxpYXM6IGNvaW4uYWxpYXMsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5leHBvcnQgY29uc3QgZ2V0Rm9ybWF0dGVkQWxnb1Rva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEFsZ29Ub2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBBbGdvQ29pbikge1xuICAgICAgYWNjLnB1c2goZ2V0QWxnb1Rva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRIYmFyVG9rZW5Db25maWcoY29pbjogSGVkZXJhVG9rZW4pOiBIYmFyVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdoYmFyJyA6ICd0aGJhcicsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gICAgbm9kZUFjY291bnRJZDogY29pbi5ub2RlQWNjb3VudElkLFxuICAgIHRva2VuSWQ6IGNvaW4udG9rZW5JZCxcbiAgICBjb250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3RBZGRyZXNzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkSGJhclRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEhiYXJUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBIZWRlcmFUb2tlbikge1xuICAgICAgYWNjLnB1c2goZ2V0SGJhclRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRBZGFUb2tlbkNvbmZpZyhjb2luOiBBZGFDb2luKTogQWRhVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdhZGEnIDogJ3RhZGEnLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgcG9saWN5SWQ6IGNvaW4ucG9saWN5SWQsXG4gICAgYXNzZXROYW1lOiBjb2luLmFzc2V0TmFtZSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5jb25zdCBnZXRGb3JtYXR0ZWRBZGFUb2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBBZGFUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBBZGFDb2luKSB7XG4gICAgICBhY2MucHVzaChnZXRBZGFUb2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0VHJ4VG9rZW5Db25maWcoY29pbjogVHJvbkVyYzIwQ29pbik6IFRyeFRva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAndHJ4JyA6ICd0dHJ4JyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCksXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkVHJ4VG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogVHJ4VG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgVHJvbkVyYzIwQ29pbikge1xuICAgICAgYWNjLnB1c2goZ2V0VHJ4VG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldFhycFRva2VuQ29uZmlnKGNvaW46IFhycENvaW4pOiBYcnBUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ3hycCcgOiAndHhycCcsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gICAgaXNzdWVyQWRkcmVzczogY29pbi5pc3N1ZXJBZGRyZXNzLFxuICAgIGN1cnJlbmN5Q29kZTogY29pbi5jdXJyZW5jeUNvZGUsXG4gICAgZG9tYWluOiBjb2luLmRvbWFpbixcbiAgICBjb250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3RBZGRyZXNzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkWHJwVG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogWHJwVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgWHJwQ29pbikge1xuICAgICAgYWNjLnB1c2goZ2V0WHJwVG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldFN1aVRva2VuQ29uZmlnKGNvaW46IFN1aUNvaW4pOiBTdWlUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ3N1aScgOiAndHN1aScsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gICAgcGFja2FnZUlkOiBjb2luLnBhY2thZ2VJZCxcbiAgICBtb2R1bGU6IGNvaW4ubW9kdWxlLFxuICAgIHN5bWJvbDogY29pbi5zeW1ib2wsXG4gICAgY29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZFN1aVRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IFN1aVRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIFN1aUNvaW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldFN1aVRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRBcHRUb2tlbkNvbmZpZyhjb2luOiBBcHRDb2luKTogQXB0VG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdhcHQnIDogJ3RhcHQnLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgYXNzZXRJZDogY29pbi5hc3NldElkLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZEFwdFRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEFwdFRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIEFwdENvaW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldEFwdFRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRBcHRORlRDb2xsZWN0aW9uQ29uZmlnKGNvaW46IEFwdE5GVENvbGxlY3Rpb24pOiBBcHRORlRDb2xsZWN0aW9uQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnYXB0JyA6ICd0YXB0JyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIG5mdENvbGxlY3Rpb25JZDogY29pbi5uZnRDb2xsZWN0aW9uSWQsXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkQXB0TkZUQ29sbGVjdGlvbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBBcHRORlRDb2xsZWN0aW9uQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIEFwdE5GVENvbGxlY3Rpb24pIHtcbiAgICAgIGFjYy5wdXNoKGdldEFwdE5GVENvbGxlY3Rpb25Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldFNpcDEwVG9rZW5Db25maWcoY29pbjogU2lwMTBUb2tlbik6IFNpcDEwVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdzdHgnIDogJ3RzdHgnLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgYXNzZXRJZDogY29pbi5hc3NldElkLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZFNpcDEwVG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogU2lwMTBUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBTaXAxMFRva2VuKSB7XG4gICAgICBhY2MucHVzaChnZXRTaXAxMFRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXROZXAxNDFUb2tlbkNvbmZpZyhjb2luOiBOZXAxNDFUb2tlbik6IE5lcDE0MVRva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnbmVhcicgOiAndG5lYXInLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgY29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcyxcbiAgICBzdG9yYWdlRGVwb3NpdEFtb3VudDogY29pbi5zdG9yYWdlRGVwb3NpdEFtb3VudCxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5jb25zdCBnZXRGb3JtYXR0ZWROZXAxNDFUb2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBOZXAxNDFUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBOZXAxNDFUb2tlbikge1xuICAgICAgYWNjLnB1c2goZ2V0TmVwMTQxVG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldFZldFRva2VuQ29uZmlnKGNvaW46IFZldFRva2VuKTogVmV0VG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICd2ZXQnIDogJ3R2ZXQnLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgY29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcyxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5cbmNvbnN0IGdldEZvcm1hdHRlZFZldFRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IFZldFRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIFZldFRva2VuKSB7XG4gICAgICBhY2MucHVzaChnZXRWZXRUb2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZXhwb3J0IGNvbnN0IGdldEZvcm1hdHRlZFRva2VucyA9IChjb2luTWFwID0gY29pbnMpOiBUb2tlbnMgPT4ge1xuICBjb25zdCBmb3JtYXR0ZWRBcHRORlRDb2xsZWN0aW9ucyA9IGdldEZvcm1hdHRlZEFwdE5GVENvbGxlY3Rpb25zKGNvaW5NYXApO1xuICByZXR1cm4ge1xuICAgIGJpdGNvaW46IHtcbiAgICAgIGV0aDoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZEVyYzIwVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09ICdNYWlubmV0JyksXG4gICAgICB9LFxuICAgICAgeGxtOiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkU3RlbGxhclRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnTWFpbm5ldCcpLFxuICAgICAgfSxcbiAgICAgIGFsZ286IHtcbiAgICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRBbGdvVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09ICdNYWlubmV0JyksXG4gICAgICB9LFxuICAgICAgb2ZjOiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkT2ZjQ29pbnMoY29pbk1hcCkuZmlsdGVyKFxuICAgICAgICAgICh0b2tlbikgPT4gY29pbk1hcC5nZXQodG9rZW4udHlwZSkubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAgY2Vsbzoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZENlbG9Ub2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ01haW5uZXQnKSxcbiAgICAgIH0sXG4gICAgICBic2M6IHtcbiAgICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRCc2NUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ01haW5uZXQnKSxcbiAgICAgIH0sXG4gICAgICBlb3M6IHtcbiAgICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRFb3NUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ01haW5uZXQnKSxcbiAgICAgIH0sXG4gICAgICBhdmF4Yzoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZEF2YXhDVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09ICdNYWlubmV0JyksXG4gICAgICB9LFxuICAgICAgcG9seWdvbjoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZFBvbHlnb25Ub2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ01haW5uZXQnKSxcbiAgICAgIH0sXG4gICAgICBzb25laXVtOiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkU29uZWl1bVRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnTWFpbm5ldCcpLFxuICAgICAgfSxcbiAgICAgIGFyYmV0aDoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZEFyYmV0aFRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnTWFpbm5ldCcpLFxuICAgICAgfSxcbiAgICAgIG9wZXRoOiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkT3BldGhUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ01haW5uZXQnKSxcbiAgICAgIH0sXG4gICAgICB6a2V0aDoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZFprZXRoVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09ICdNYWlubmV0JyksXG4gICAgICB9LFxuICAgICAgc29sOiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkU29sVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09ICdNYWlubmV0JyksXG4gICAgICB9LFxuICAgICAgaGJhcjoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZEhiYXJUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ01haW5uZXQnKSxcbiAgICAgIH0sXG4gICAgICBhZGE6IHtcbiAgICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRBZGFUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ01haW5uZXQnKSxcbiAgICAgIH0sXG4gICAgICB0cng6IHtcbiAgICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRUcnhUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ01haW5uZXQnKSxcbiAgICAgIH0sXG4gICAgICB4cnA6IHtcbiAgICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRYcnBUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ01haW5uZXQnKSxcbiAgICAgIH0sXG4gICAgICBzdWk6IHtcbiAgICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRTdWlUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ01haW5uZXQnKSxcbiAgICAgIH0sXG4gICAgICBiZXJhOiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkQmVyYVRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnTWFpbm5ldCcpLFxuICAgICAgfSxcbiAgICAgIGNvcmVkYW86IHtcbiAgICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRDb3JlZGFvVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09ICdNYWlubmV0JyksXG4gICAgICB9LFxuICAgICAgd29ybGQ6IHtcbiAgICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRXb3JsZFRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnTWFpbm5ldCcpLFxuICAgICAgfSxcbiAgICAgIGFwdDoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZEFwdFRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnTWFpbm5ldCcpLFxuICAgICAgICBuZnRDb2xsZWN0aW9uczogZm9ybWF0dGVkQXB0TkZUQ29sbGVjdGlvbnMuZmlsdGVyKFxuICAgICAgICAgIChuZnRDb2xsZWN0aW9uOiBBcHRORlRDb2xsZWN0aW9uQ29uZmlnKSA9PiBuZnRDb2xsZWN0aW9uLm5ldHdvcmsgPT09ICdNYWlubmV0J1xuICAgICAgICApLFxuICAgICAgfSxcbiAgICAgIHN0eDoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZFNpcDEwVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09ICdNYWlubmV0JyksXG4gICAgICB9LFxuICAgICAgbmVhcjoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZE5lcDE0MVRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnTWFpbm5ldCcpLFxuICAgICAgfSxcbiAgICAgIHZldDoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZFZldFRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnTWFpbm5ldCcpLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHRlc3RuZXQ6IHtcbiAgICAgIGV0aDoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZEVyYzIwVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09ICdUZXN0bmV0JyksXG4gICAgICB9LFxuICAgICAgeGxtOiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkU3RlbGxhclRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnVGVzdG5ldCcpLFxuICAgICAgfSxcbiAgICAgIGFsZ286IHtcbiAgICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRBbGdvVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09ICdUZXN0bmV0JyksXG4gICAgICB9LFxuICAgICAgb2ZjOiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkT2ZjQ29pbnMoY29pbk1hcCkuZmlsdGVyKFxuICAgICAgICAgICh0b2tlbikgPT4gY29pbk1hcC5nZXQodG9rZW4udHlwZSkubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5URVNUTkVUXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAgY2Vsbzoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZENlbG9Ub2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ1Rlc3RuZXQnKSxcbiAgICAgIH0sXG4gICAgICBic2M6IHtcbiAgICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRCc2NUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ1Rlc3RuZXQnKSxcbiAgICAgIH0sXG4gICAgICBlb3M6IHtcbiAgICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRFb3NUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ1Rlc3RuZXQnKSxcbiAgICAgIH0sXG4gICAgICBhdmF4Yzoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZEF2YXhDVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09ICdUZXN0bmV0JyksXG4gICAgICB9LFxuICAgICAgcG9seWdvbjoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZFBvbHlnb25Ub2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ1Rlc3RuZXQnKSxcbiAgICAgIH0sXG4gICAgICBzb25laXVtOiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkU29uZWl1bVRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnVGVzdG5ldCcpLFxuICAgICAgfSxcbiAgICAgIGFyYmV0aDoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZEFyYmV0aFRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnVGVzdG5ldCcpLFxuICAgICAgfSxcbiAgICAgIG9wZXRoOiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkT3BldGhUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ1Rlc3RuZXQnKSxcbiAgICAgIH0sXG4gICAgICB6a2V0aDoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZFprZXRoVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09ICdUZXN0bmV0JyksXG4gICAgICB9LFxuICAgICAgc29sOiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkU29sVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09ICdUZXN0bmV0JyksXG4gICAgICB9LFxuICAgICAgaGJhcjoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZEhiYXJUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ1Rlc3RuZXQnKSxcbiAgICAgIH0sXG4gICAgICBhZGE6IHtcbiAgICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRBZGFUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ1Rlc3RuZXQnKSxcbiAgICAgIH0sXG4gICAgICB0cng6IHtcbiAgICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRUcnhUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ1Rlc3RuZXQnKSxcbiAgICAgIH0sXG4gICAgICB4cnA6IHtcbiAgICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRYcnBUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ1Rlc3RuZXQnKSxcbiAgICAgIH0sXG4gICAgICBzdWk6IHtcbiAgICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRTdWlUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ1Rlc3RuZXQnKSxcbiAgICAgIH0sXG4gICAgICBiZXJhOiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkQmVyYVRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnVGVzdG5ldCcpLFxuICAgICAgfSxcbiAgICAgIGFwdDoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZEFwdFRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnVGVzdG5ldCcpLFxuICAgICAgICBuZnRDb2xsZWN0aW9uczogZm9ybWF0dGVkQXB0TkZUQ29sbGVjdGlvbnMuZmlsdGVyKFxuICAgICAgICAgIChuZnRDb2xsZWN0aW9uOiBBcHRORlRDb2xsZWN0aW9uQ29uZmlnKSA9PiBuZnRDb2xsZWN0aW9uLm5ldHdvcmsgPT09ICdUZXN0bmV0J1xuICAgICAgICApLFxuICAgICAgfSxcbiAgICAgIHN0eDoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZFNpcDEwVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09ICdUZXN0bmV0JyksXG4gICAgICB9LFxuICAgICAgY29yZWRhbzoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZENvcmVkYW9Ub2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ1Rlc3RuZXQnKSxcbiAgICAgIH0sXG4gICAgICB3b3JsZDoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZFdvcmxkVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09ICdUZXN0bmV0JyksXG4gICAgICB9LFxuICAgICAgbmVhcjoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZE5lcDE0MVRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnVGVzdG5ldCcpLFxuICAgICAgfSxcbiAgICAgIHZldDoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZFZldFRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnVGVzdG5ldCcpLFxuICAgICAgfSxcbiAgICB9LFxuICB9O1xufTtcblxuLyoqXG4gKiBWZXJpZnkgbWFpbm5ldCBvciB0ZXN0bmV0IHRva2Vuc1xuICogQHBhcmFtIHRva2Vuc1xuICovXG5jb25zdCB2ZXJpZnlUb2tlbnMgPSBmdW5jdGlvbiAodG9rZW5zOiBCYXNlVG9rZW5Db25maWdbXSkge1xuICBjb25zdCB2ZXJpZmllZFRva2VuczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcbiAgdG9rZW5zLmZvckVhY2goKHRva2VuKSA9PiB7XG4gICAgaWYgKHZlcmlmaWVkVG9rZW5zW3Rva2VuLnR5cGVdKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Rva2VuIDogJyArIHRva2VuLnR5cGUgKyAnIGR1cGxpY2F0ZWQuJyk7XG4gICAgfVxuICAgIHZlcmlmaWVkVG9rZW5zW3Rva2VuLnR5cGVdID0gdHJ1ZTtcblxuICAgIGlmIChcbiAgICAgICh0b2tlbiBhcyBCYXNlQ29udHJhY3RBZGRyZXNzQ29uZmlnKS50b2tlbkNvbnRyYWN0QWRkcmVzcyAmJlxuICAgICAgKHRva2VuIGFzIEJhc2VDb250cmFjdEFkZHJlc3NDb25maWcpLnRva2VuQ29udHJhY3RBZGRyZXNzICE9PVxuICAgICAgICAodG9rZW4gYXMgQmFzZUNvbnRyYWN0QWRkcmVzc0NvbmZpZykudG9rZW5Db250cmFjdEFkZHJlc3MudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAndG9rZW4gY29udHJhY3Q6ICcgKyB0b2tlbi50eXBlICsgJyBpcyBub3QgYWxsIGxvd2VyIGNhc2U6ICcgKyAodG9rZW4gYXMgQmFzZUNvbnRyYWN0QWRkcmVzc0NvbmZpZylcbiAgICAgICk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gdmVyaWZpZWRUb2tlbnM7XG59O1xuXG5leHBvcnQgY29uc3QgdG9rZW5zID0gZ2V0Rm9ybWF0dGVkVG9rZW5zKCk7XG5cbmV4cG9ydCBjb25zdCBmb3JtYXR0ZWRBbGdvVG9rZW5zID0gZ2V0Rm9ybWF0dGVkQWxnb1Rva2VucygpO1xuXG5jb25zdCBtYWlubmV0RXJjMjBUb2tlbnMgPSB2ZXJpZnlUb2tlbnModG9rZW5zLmJpdGNvaW4uZXRoLnRva2Vucyk7XG5jb25zdCBtYWlubmV0U3RlbGxhclRva2VucyA9IHZlcmlmeVRva2Vucyh0b2tlbnMuYml0Y29pbi54bG0udG9rZW5zKTtcbmV4cG9ydCBjb25zdCBtYWlubmV0VG9rZW5zID0geyAuLi5tYWlubmV0RXJjMjBUb2tlbnMsIC4uLm1haW5uZXRTdGVsbGFyVG9rZW5zIH07XG5cbmNvbnN0IHRlc3RuZXRFcmMyMFRva2VucyA9IHZlcmlmeVRva2Vucyh0b2tlbnMudGVzdG5ldC5ldGgudG9rZW5zKTtcbmNvbnN0IHRlc3RuZXRTdGVsbGFyVG9rZW5zID0gdmVyaWZ5VG9rZW5zKHRva2Vucy50ZXN0bmV0LnhsbS50b2tlbnMpO1xuZXhwb3J0IGNvbnN0IHRlc3RuZXRUb2tlbnMgPSB7IC4uLnRlc3RuZXRFcmMyMFRva2VucywgLi4udGVzdG5ldFN0ZWxsYXJUb2tlbnMgfTtcblxuLyoqXG4gKiBHZXQgZm9ybWF0dGVkIHRva2VuIGNvbmZpZ3VyYXRpb24gZm9yIGEgc2luZ2xlIGNvaW5cbiAqIEBwYXJhbSBjb2luIC0gU3RhdGljIEJhc2UgY29pbiBpbnN0YW5jZVxuICogQHJldHVybnMgVGhlIGZvcm1hdHRlZCB0b2tlbiBjb25maWd1cmF0aW9uIGZvciB0aGUgY29pbiwgb3IgdW5kZWZpbmVkIGlmIG5vdCBzdXBwb3J0ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZvcm1hdHRlZFRva2VuQ29uZmlnRm9yQ29pbihjb2luOiBSZWFkb25seTxCYXNlQ29pbj4pOiBUb2tlbkNvbmZpZyB8IHVuZGVmaW5lZCB7XG4gIGlmIChjb2luIGluc3RhbmNlb2YgRXJjMjBDb2luKSB7XG4gICAgcmV0dXJuIGdldEVyYzIwVG9rZW5Db25maWcoY29pbik7XG4gIH0gZWxzZSBpZiAoY29pbiBpbnN0YW5jZW9mIFN0ZWxsYXJDb2luKSB7XG4gICAgcmV0dXJuIGdldFN0ZWxsYXJUb2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgT2ZjQ29pbikge1xuICAgIHJldHVybiBnZXRPZmNUb2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgQ2Vsb0NvaW4pIHtcbiAgICByZXR1cm4gZ2V0Q2Vsb1Rva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBCc2NDb2luKSB7XG4gICAgcmV0dXJuIGdldEJzY1Rva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBFb3NDb2luKSB7XG4gICAgcmV0dXJuIGdldEVvc1Rva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBBdmF4RVJDMjBUb2tlbikge1xuICAgIHJldHVybiBnZXRBdmF4Q1Rva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKFxuICAgIGNvaW4gaW5zdGFuY2VvZiBQb2x5Z29uRVJDMjBUb2tlbiB8fFxuICAgICgoY29pbiBpbnN0YW5jZW9mIEVyYzcyMUNvaW4gfHwgY29pbiBpbnN0YW5jZW9mIEVyYzExNTVDb2luKSAmJiBjb2luLmZhbWlseSA9PT0gQ29pbkZhbWlseS5QT0xZR09OKVxuICApIHtcbiAgICByZXR1cm4gZ2V0UG9seWdvblRva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKChjb2luIGluc3RhbmNlb2YgRXJjNzIxQ29pbiB8fCBjb2luIGluc3RhbmNlb2YgRXJjMTE1NUNvaW4pICYmIGNvaW4uZmFtaWx5ID09PSBDb2luRmFtaWx5LlNPTkVJVU0pIHtcbiAgICByZXR1cm4gZ2V0U29uZWl1bVRva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBBcmJldGhFUkMyMFRva2VuKSB7XG4gICAgcmV0dXJuIGdldEFyYmV0aFRva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBPcGV0aEVSQzIwVG9rZW4pIHtcbiAgICByZXR1cm4gZ2V0T3BldGhUb2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgWmtldGhFUkMyMFRva2VuKSB7XG4gICAgcmV0dXJuIGdldFprZXRoVG9rZW5Db25maWcoY29pbik7XG4gIH0gZWxzZSBpZiAoY29pbiBpbnN0YW5jZW9mIFNvbENvaW4pIHtcbiAgICByZXR1cm4gZ2V0U29sVG9rZW5Db25maWcoY29pbik7XG4gIH0gZWxzZSBpZiAoY29pbiBpbnN0YW5jZW9mIEhlZGVyYVRva2VuKSB7XG4gICAgcmV0dXJuIGdldEhiYXJUb2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgQWRhQ29pbikge1xuICAgIHJldHVybiBnZXRBZGFUb2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgVHJvbkVyYzIwQ29pbikge1xuICAgIHJldHVybiBnZXRUcnhUb2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgWHJwQ29pbikge1xuICAgIHJldHVybiBnZXRYcnBUb2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgU3VpQ29pbikge1xuICAgIHJldHVybiBnZXRTdWlUb2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgQXB0Q29pbikge1xuICAgIHJldHVybiBnZXRBcHRUb2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgQXB0TkZUQ29sbGVjdGlvbikge1xuICAgIHJldHVybiBnZXRBcHRORlRDb2xsZWN0aW9uQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBTaXAxMFRva2VuKSB7XG4gICAgcmV0dXJuIGdldFNpcDEwVG9rZW5Db25maWcoY29pbik7XG4gIH0gZWxzZSBpZiAoY29pbiBpbnN0YW5jZW9mIE5lcDE0MVRva2VuKSB7XG4gICAgcmV0dXJuIGdldE5lcDE0MVRva2VuQ29uZmlnKGNvaW4pO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG4iXX0=
780
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5Db25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9rZW5Db25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBK21DQSx3RUFrREM7QUFqcUNELHVDQTZCbUI7QUFDbkIsaUNBQXdEO0FBQ3hELG1DQUFnQztBQUNoQyx5Q0FBbUQ7QUFDbkQsK0JBQWdDO0FBa1VoQyxTQUFTLG1CQUFtQixDQUFDLElBQWU7SUFDMUMsSUFBSSxRQUFnQixDQUFDO0lBQ3JCLFFBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQixLQUFLLG1CQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJO1lBQzlCLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDakIsTUFBTTtRQUNSLEtBQUssbUJBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUk7WUFDM0IsUUFBUSxHQUFHLE1BQU0sQ0FBQztZQUNsQixNQUFNO1FBQ1IsS0FBSyxtQkFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSTtZQUM1QixRQUFRLEdBQUcsT0FBTyxDQUFDO1lBQ25CLE1BQU07UUFDUixLQUFLLG1CQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDaEMsS0FBSyxtQkFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSTtZQUMzQixRQUFRLEdBQUcsT0FBTyxDQUFDO1lBQ25CLE1BQU07UUFDUjtZQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxJQUFJLENBQUMsSUFBSSw2QkFBNkIsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFDRCxPQUFPO1FBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1FBQ2YsSUFBSSxFQUFFLFFBQVE7UUFDZCxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssc0JBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMs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RCxNQUFNLEVBQUU7Z0JBQ04sTUFBTSxFQUFFLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUM7YUFDekY7WUFDRCxLQUFLLEVBQUU7Z0JBQ0wsTUFBTSxFQUFFLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUM7YUFDeEY7WUFDRCxLQUFLLEVBQUU7Z0JBQ0wsTUFBTSxFQUFFLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUM7YUFDeEY7WUFDRCxHQUFHLEVBQUU7Z0JBQ0gsTUFBTSxFQUFFLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUM7YUFDdEY7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osTUFBTSxFQUFFLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUM7YUFDdkY7WUFDRCxHQUFHLEVBQUU7Z0JBQ0gsTUFBTSxFQUFFLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUM7YUFDdEY7WUFDRCxHQUFHLEVBQUU7Z0JBQ0gsTUFBTSxFQUFFLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUM7YUFDdEY7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QyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLEtBQUssU0FBUyxDQUFDO2FBQzFGO1lBQ0QsTUFBTSxFQUFFO2dCQUNOLE1BQU0sRUFBRSx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLEtBQUssU0FBUyxDQUFDO2FBQ3pGO1lBQ0QsS0FBSyxFQUFFO2dCQUNMLE1BQU0sRUFBRSx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLEtBQUssU0FBUyxDQUFDO2FBQ3hGO1lBQ0QsS0FBSyxFQUFFO2dCQUNMLE1BQU0sRUFBRSx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLEtBQUssU0FBUyxDQUFDO2FBQ3hGO1lBQ0QsR0FBRyxFQUFFO2dCQUNILE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLEtBQUssU0FBUyxDQUFDO2FBQ3RGO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLE1BQU0sRUFBRSxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLEtBQUssU0FBUyxDQUFDO2FBQ3ZGO1lBQ0QsR0FBRyxFQUFFO2dCQUNILE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLEtBQUssU0FBUyxDQUFDO2FBQ3RGO1lBQ0QsR0FBRyxFQUFFO2dCQUNILE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMs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Q0FBQztJQUN6QyxDQUFDO1NBQU0sSUFBSSxJQUFJLFlBQVksb0JBQVUsRUFBRSxDQUFDO1FBQ3RDLE9BQU8sbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQztTQUFNLElBQUksSUFBSSxZQUFZLHFCQUFXLEVBQUUsQ0FBQztRQUN2QyxPQUFPLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWRhQ29pbixcbiAgQWxnb0NvaW4sXG4gIEFwdENvaW4sXG4gIEFwdE5GVENvbGxlY3Rpb24sXG4gIEFyYmV0aEVSQzIwVG9rZW4sXG4gIEF2YXhFUkMyMFRva2VuLFxuICBCZXJhRVJDMjBUb2tlbixcbiAgQnNjQ29pbixcbiAgQ2Vsb0NvaW4sXG4gIENvcmVkYW9FUkMyMFRva2VuLFxuICBFb3NDb2luLFxuICBFcmMxMTU1Q29pbixcbiAgRXJjMjBDb2luLFxuICBFcmM3MjFDb2luLFxuICBIZWRlcmFUb2tlbixcbiAgTmVwMTQxVG9rZW4sXG4gIE9wZXRoRVJDMjBUb2tlbixcbiAgUG9seWdvbkVSQzIwVG9rZW4sXG4gIFNpcDEwVG9rZW4sXG4gIFNvbENvaW4sXG4gIFN0ZWxsYXJDb2luLFxuICBTdWlDb2luLFxuICBUcm9uRXJjMjBDb2luLFxuICBWZXRUb2tlbixcbiAgV29ybGRFUkMyMFRva2VuLFxuICBYcnBDb2luLFxuICBaa2V0aEVSQzIwVG9rZW4sXG4gIENvc21vc0NoYWluVG9rZW4sXG59IGZyb20gJy4vYWNjb3VudCc7XG5pbXBvcnQgeyBDb2luRmFtaWx5LCBDb2luS2luZCwgQmFzZUNvaW4gfSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICcuL2NvaW5zJztcbmltcG9ydCB7IE5ldHdvcmtzLCBOZXR3b3JrVHlwZSB9IGZyb20gJy4vbmV0d29ya3MnO1xuaW1wb3J0IHsgT2ZjQ29pbiB9IGZyb20gJy4vb2ZjJztcblxuZXhwb3J0IGludGVyZmFjZSBCYXNlVG9rZW5Db25maWcge1xuICBjb2luOiBzdHJpbmc7XG4gIGRlY2ltYWxQbGFjZXM6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZU5ldHdvcmtDb25maWcgZXh0ZW5kcyBCYXNlVG9rZW5Db25maWcge1xuICBuZXR3b3JrOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUNvbnRyYWN0QWRkcmVzc0NvbmZpZyBleHRlbmRzIEJhc2VOZXR3b3JrQ29uZmlnIHtcbiAgdG9rZW5Db250cmFjdEFkZHJlc3M6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgQXZheGNUb2tlbkNvbmZpZyA9IEJhc2VDb250cmFjdEFkZHJlc3NDb25maWc7XG5leHBvcnQgdHlwZSBDZWxvVG9rZW5Db25maWcgPSBCYXNlQ29udHJhY3RBZGRyZXNzQ29uZmlnO1xuZXhwb3J0IHR5cGUgRXRoTGlrZVRva2VuQ29uZmlnID0gQmFzZUNvbnRyYWN0QWRkcmVzc0NvbmZpZztcbmV4cG9ydCB0eXBlIEVvc1Rva2VuQ29uZmlnID0gQmFzZUNvbnRyYWN0QWRkcmVzc0NvbmZpZyAmIHtcbiAgY29udHJhY3ROYW1lOiBzdHJpbmc7XG4gIGNvbnRyYWN0QWRkcmVzczogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIEVyYzIwVG9rZW5Db25maWcgPSBCYXNlQ29udHJhY3RBZGRyZXNzQ29uZmlnO1xuZXhwb3J0IHR5cGUgVHJ4VG9rZW5Db25maWcgPSBCYXNlQ29udHJhY3RBZGRyZXNzQ29uZmlnO1xuZXhwb3J0IHR5cGUgU3RlbGxhclRva2VuQ29uZmlnID0gQmFzZU5ldHdvcmtDb25maWc7XG5cbmV4cG9ydCB0eXBlIFNvbFRva2VuQ29uZmlnID0gQmFzZU5ldHdvcmtDb25maWcgJiB7XG4gIHRva2VuQWRkcmVzczogc3RyaW5nO1xuICBjb250cmFjdEFkZHJlc3M6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEFkYVRva2VuQ29uZmlnID0gQmFzZU5ldHdvcmtDb25maWcgJiB7XG4gIHBvbGljeUlkOiBzdHJpbmc7XG4gIGFzc2V0TmFtZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQWxnb1Rva2VuQ29uZmlnID0gQmFzZU5ldHdvcmtDb25maWcgJiB7XG4gIGFsaWFzPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgT2ZjVG9rZW5Db25maWcgPSBCYXNlVG9rZW5Db25maWcgJiB7XG4gIGJhY2tpbmdDb2luOiBzdHJpbmc7XG4gIGlzRmlhdDogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEhiYXJUb2tlbkNvbmZpZyA9IEJhc2VOZXR3b3JrQ29uZmlnICYge1xuICBub2RlQWNjb3VudElkOiBzdHJpbmc7XG4gIHRva2VuSWQ6IHN0cmluZztcbiAgY29udHJhY3RBZGRyZXNzOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBYcnBUb2tlbkNvbmZpZyA9IEJhc2VOZXR3b3JrQ29uZmlnICYge1xuICBpc3N1ZXJBZGRyZXNzOiBzdHJpbmc7XG4gIGN1cnJlbmN5Q29kZTogc3RyaW5nO1xuICBkb21haW4/OiBzdHJpbmc7XG4gIGNvbnRyYWN0QWRkcmVzczogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgU3VpVG9rZW5Db25maWcgPSBCYXNlTmV0d29ya0NvbmZpZyAmIHtcbiAgcGFja2FnZUlkOiBzdHJpbmc7XG4gIG1vZHVsZTogc3RyaW5nO1xuICBzeW1ib2w6IHN0cmluZztcbiAgY29udHJhY3RBZGRyZXNzOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBBcHRUb2tlbkNvbmZpZyA9IEJhc2VOZXR3b3JrQ29uZmlnICYge1xuICBhc3NldElkOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBBcHRORlRDb2xsZWN0aW9uQ29uZmlnID0gQmFzZU5ldHdvcmtDb25maWcgJiB7XG4gIG5mdENvbGxlY3Rpb25JZDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgU2lwMTBUb2tlbkNvbmZpZyA9IEJhc2VOZXR3b3JrQ29uZmlnICYge1xuICBhc3NldElkOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBOZXAxNDFUb2tlbkNvbmZpZyA9IEJhc2VOZXR3b3JrQ29uZmlnICYge1xuICBjb250cmFjdEFkZHJlc3M6IHN0cmluZztcbiAgc3RvcmFnZURlcG9zaXRBbW91bnQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFZldFRva2VuQ29uZmlnID0gQmFzZU5ldHdvcmtDb25maWcgJiB7XG4gIGNvbnRyYWN0QWRkcmVzczogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQ29zbW9zVG9rZW5Db25maWcgPSBCYXNlTmV0d29ya0NvbmZpZyAmIHtcbiAgZGVub206IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFRva2VuQ29uZmlnID1cbiAgfCBFcmMyMFRva2VuQ29uZmlnXG4gIHwgU3RlbGxhclRva2VuQ29uZmlnXG4gIHwgT2ZjVG9rZW5Db25maWdcbiAgfCBDZWxvVG9rZW5Db25maWdcbiAgfCBFdGhMaWtlVG9rZW5Db25maWdcbiAgfCBFb3NUb2tlbkNvbmZpZ1xuICB8IEF2YXhjVG9rZW5Db25maWdcbiAgfCBTb2xUb2tlbkNvbmZpZ1xuICB8IEhiYXJUb2tlbkNvbmZpZ1xuICB8IEFkYVRva2VuQ29uZmlnXG4gIHwgQWxnb1Rva2VuQ29uZmlnXG4gIHwgVHJ4VG9rZW5Db25maWdcbiAgfCBYcnBUb2tlbkNvbmZpZ1xuICB8IFN1aVRva2VuQ29uZmlnXG4gIHwgQXB0VG9rZW5Db25maWdcbiAgfCBBcHRORlRDb2xsZWN0aW9uQ29uZmlnXG4gIHwgU2lwMTBUb2tlbkNvbmZpZ1xuICB8IE5lcDE0MVRva2VuQ29uZmlnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRva2VucyB7XG4gIGJpdGNvaW46IHtcbiAgICBldGg6IHtcbiAgICAgIHRva2VuczogRXJjMjBUb2tlbkNvbmZpZ1tdO1xuICAgIH07XG4gICAgeGxtOiB7XG4gICAgICB0b2tlbnM6IFN0ZWxsYXJUb2tlbkNvbmZpZ1tdO1xuICAgIH07XG4gICAgYWxnbzoge1xuICAgICAgdG9rZW5zOiBBbGdvVG9rZW5Db25maWdbXTtcbiAgICB9O1xuICAgIG9mYzoge1xuICAgICAgdG9rZW5zOiBPZmNUb2tlbkNvbmZpZ1tdO1xuICAgIH07XG4gICAgY2Vsbzoge1xuICAgICAgdG9rZW5zOiBDZWxvVG9rZW5Db25maWdbXTtcbiAgICB9O1xuICAgIGVvczoge1xuICAgICAgdG9rZW5zOiBFb3NUb2tlbkNvbmZpZ1tdO1xuICAgIH07XG4gICAgYXZheGM6IHtcbiAgICAgIHRva2VuczogQXZheGNUb2tlbkNvbmZpZ1tdO1xuICAgIH07XG4gICAgcG9seWdvbjoge1xuICAgICAgdG9rZW5zOiBFdGhMaWtlVG9rZW5Db25maWdbXTtcbiAgICB9O1xuICAgIHNvbmVpdW06IHtcbiAgICAgIHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICBic2M6IHtcbiAgICAgIHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICBhcmJldGg6IHtcbiAgICAgIHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICBvcGV0aDoge1xuICAgICAgdG9rZW5zOiBFdGhMaWtlVG9rZW5Db25maWdbXTtcbiAgICB9O1xuICAgIGNvcmVkYW86IHtcbiAgICAgIHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICB3b3JsZDoge1xuICAgICAgdG9rZW5zOiBFdGhMaWtlVG9rZW5Db25maWdbXTtcbiAgICB9O1xuICAgIHNvbDoge1xuICAgICAgdG9rZW5zOiBTb2xUb2tlbkNvbmZpZ1tdO1xuICAgIH07XG4gICAgaGJhcjoge1xuICAgICAgdG9rZW5zOiBIYmFyVG9rZW5Db25maWdbXTtcbiAgICB9O1xuICAgIGFkYToge1xuICAgICAgdG9rZW5zOiBBZGFUb2tlbkNvbmZpZ1tdO1xuICAgIH07XG4gICAgdHJ4OiB7XG4gICAgICB0b2tlbnM6IFRyeFRva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICB4cnA6IHtcbiAgICAgIHRva2VuczogWHJwVG9rZW5Db25maWdbXTtcbiAgICB9O1xuICAgIHprZXRoOiB7XG4gICAgICB0b2tlbnM6IEV0aExpa2VUb2tlbkNvbmZpZ1tdO1xuICAgIH07XG4gICAgc3VpOiB7XG4gICAgICB0b2tlbnM6IFN1aVRva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICBiZXJhOiB7XG4gICAgICB0b2tlbnM6IEV0aExpa2VUb2tlbkNvbmZpZ1tdO1xuICAgIH07XG4gICAgYXB0OiB7XG4gICAgICB0b2tlbnM6IEFwdFRva2VuQ29uZmlnW107XG4gICAgICBuZnRDb2xsZWN0aW9uczogQXB0TkZUQ29sbGVjdGlvbkNvbmZpZ1tdO1xuICAgIH07XG4gICAgc3R4OiB7XG4gICAgICB0b2tlbnM6IFNpcDEwVG9rZW5Db25maWdbXTtcbiAgICB9O1xuICAgIG5lYXI6IHtcbiAgICAgIHRva2VuczogTmVwMTQxVG9rZW5Db25maWdbXTtcbiAgICB9O1xuICAgIHZldDoge1xuICAgICAgdG9rZW5zOiBWZXRUb2tlbkNvbmZpZ1tdO1xuICAgIH07XG4gICAgY29zbW9zOiB7XG4gICAgICB0b2tlbnM6IENvc21vc1Rva2VuQ29uZmlnW107XG4gICAgfTtcbiAgfTtcbiAgdGVzdG5ldDoge1xuICAgIGV0aDoge1xuICAgICAgdG9rZW5zOiBFcmMyMFRva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICB4bG06IHtcbiAgICAgIHRva2VuczogU3RlbGxhclRva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICBhbGdvOiB7XG4gICAgICB0b2tlbnM6IEFsZ29Ub2tlbkNvbmZpZ1tdO1xuICAgIH07XG4gICAgb2ZjOiB7XG4gICAgICB0b2tlbnM6IE9mY1Rva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICBjZWxvOiB7XG4gICAgICB0b2tlbnM6IENlbG9Ub2tlbkNvbmZpZ1tdO1xuICAgIH07XG4gICAgYnNjOiB7XG4gICAgICB0b2tlbnM6IEV0aExpa2VUb2tlbkNvbmZpZ1tdO1xuICAgIH07XG4gICAgZW9zOiB7XG4gICAgICB0b2tlbnM6IEVvc1Rva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICBhdmF4Yzoge1xuICAgICAgdG9rZW5zOiBBdmF4Y1Rva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICBwb2x5Z29uOiB7XG4gICAgICB0b2tlbnM6IEV0aExpa2VUb2tlbkNvbmZpZ1tdO1xuICAgIH07XG4gICAgc29uZWl1bToge1xuICAgICAgdG9rZW5zOiBFdGhMaWtlVG9rZW5Db25maWdbXTtcbiAgICB9O1xuICAgIGFyYmV0aDoge1xuICAgICAgdG9rZW5zOiBFdGhMaWtlVG9rZW5Db25maWdbXTtcbiAgICB9O1xuICAgIG9wZXRoOiB7XG4gICAgICB0b2tlbnM6IEV0aExpa2VUb2tlbkNvbmZpZ1tdO1xuICAgIH07XG4gICAgc29sOiB7XG4gICAgICB0b2tlbnM6IFNvbFRva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICBoYmFyOiB7XG4gICAgICB0b2tlbnM6IEhiYXJUb2tlbkNvbmZpZ1tdO1xuICAgIH07XG4gICAgYWRhOiB7XG4gICAgICB0b2tlbnM6IEFkYVRva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICB0cng6IHtcbiAgICAgIHRva2VuczogVHJ4VG9rZW5Db25maWdbXTtcbiAgICB9O1xuICAgIHhycDoge1xuICAgICAgdG9rZW5zOiBYcnBUb2tlbkNvbmZpZ1tdO1xuICAgIH07XG4gICAgemtldGg6IHtcbiAgICAgIHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICBzdWk6IHtcbiAgICAgIHRva2VuczogU3VpVG9rZW5Db25maWdbXTtcbiAgICB9O1xuICAgIGJlcmE6IHtcbiAgICAgIHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICBjb3JlZGFvOiB7XG4gICAgICB0b2tlbnM6IEV0aExpa2VUb2tlbkNvbmZpZ1tdO1xuICAgIH07XG4gICAgd29ybGQ6IHtcbiAgICAgIHRva2VuczogRXRoTGlrZVRva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICBhcHQ6IHtcbiAgICAgIHRva2VuczogQXB0VG9rZW5Db25maWdbXTtcbiAgICAgIG5mdENvbGxlY3Rpb25zOiBBcHRORlRDb2xsZWN0aW9uQ29uZmlnW107XG4gICAgfTtcbiAgICBzdHg6IHtcbiAgICAgIHRva2VuczogU2lwMTBUb2tlbkNvbmZpZ1tdO1xuICAgIH07XG4gICAgbmVhcjoge1xuICAgICAgdG9rZW5zOiBOZXAxNDFUb2tlbkNvbmZpZ1tdO1xuICAgIH07XG4gICAgdmV0OiB7XG4gICAgICB0b2tlbnM6IFZldFRva2VuQ29uZmlnW107XG4gICAgfTtcbiAgICBjb3Ntb3M6IHtcbiAgICAgIHRva2VuczogQ29zbW9zVG9rZW5Db25maWdbXTtcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFtc1Rva2VuQ29uZmlnIHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBmdWxsTmFtZTogc3RyaW5nO1xuICBmYW1pbHk6IHN0cmluZztcbiAgZGVjaW1hbFBsYWNlczogbnVtYmVyO1xuICBhc3NldDogc3RyaW5nO1xuICBmZWF0dXJlcz86IHN0cmluZ1tdO1xuICBwcmVmaXg/OiBzdHJpbmc7XG4gIHN1ZmZpeD86IHN0cmluZztcbiAgbmV0d29yaz86IHVua25vd247XG4gIHByaW1hcnlLZXlDdXJ2ZT86IHN0cmluZztcbiAgY29udHJhY3RBZGRyZXNzPzogc3RyaW5nO1xuICB0b2tlbkFkZHJlc3M/OiBzdHJpbmc7XG4gIG5mdENvbGxlY3Rpb25JZD86IHN0cmluZztcbiAgYWxpYXM/OiBzdHJpbmc7XG4gIGNvbnRyYWN0TmFtZT86IHN0cmluZztcbiAgdG9rZW5JZD86IHN0cmluZztcbiAgcGFja2FnZUlkPzogc3RyaW5nO1xuICBtb2R1bGU/OiBzdHJpbmc7XG4gIHN5bWJvbD86IHN0cmluZztcbiAgaXNzdWVyQWRkcmVzcz86IHN0cmluZztcbiAgY3VycmVjbnljb2RlPzogc3RyaW5nO1xuICBkb21haW4/OiBzdHJpbmc7XG4gIGFzc2V0SWQ/OiBzdHJpbmc7XG4gIGlzVG9rZW46IGJvb2xlYW47XG4gIGJhc2VVbml0Pzogc3RyaW5nO1xuICBraW5kPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyaW1tZWRBbXNOZXR3b3JrQ29uZmlnIHtcbiAgbmFtZTogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBUcmltbWVkQW1zVG9rZW5Db25maWcgZXh0ZW5kcyBPbWl0PEFtc1Rva2VuQ29uZmlnLCAnZmVhdHVyZXMnIHwgJ25ldHdvcmsnPiB7XG4gIG5ldHdvcms6IFRyaW1tZWRBbXNOZXR3b3JrQ29uZmlnO1xuICBleGNsdWRlZEZlYXR1cmVzPzogc3RyaW5nW107XG4gIGFkZGl0aW9uYWxGZWF0dXJlcz86IHN0cmluZ1tdO1xufVxuXG5mdW5jdGlvbiBnZXRFcmMyMFRva2VuQ29uZmlnKGNvaW46IEVyYzIwQ29pbik6IEVyYzIwVG9rZW5Db25maWcge1xuICBsZXQgYmFzZUNvaW46IHN0cmluZztcbiAgc3dpdGNoIChjb2luLm5ldHdvcmsubmFtZSkge1xuICAgIGNhc2UgTmV0d29ya3MubWFpbi5ldGhlcmV1bS5uYW1lOlxuICAgICAgYmFzZUNvaW4gPSAnZXRoJztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTmV0d29ya3MudGVzdC5rb3Zhbi5uYW1lOlxuICAgICAgYmFzZUNvaW4gPSAndGV0aCc7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE5ldHdvcmtzLnRlc3QuZ29lcmxpLm5hbWU6XG4gICAgICBiYXNlQ29pbiA9ICdndGV0aCc7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE5ldHdvcmtzLnRlc3QuaG9sZXNreS5uYW1lOlxuICAgIGNhc2UgTmV0d29ya3MudGVzdC5ob29kaS5uYW1lOlxuICAgICAgYmFzZUNvaW4gPSAnaHRldGgnO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRXJjMjAgdG9rZW4gJHtjb2luLm5hbWV9IGhhcyBhbiB1bnN1cHBvcnRlZCBuZXR3b3JrYCk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogYmFzZUNvaW4sXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogY29pbi5jb250cmFjdEFkZHJlc3MudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cblxuLy8gR2V0IHRoZSBsaXN0IG9mIEVSQy0yMCB0b2tlbnMgZnJvbSBzdGF0aWNzIGFuZCBmb3JtYXQgaXQgcHJvcGVybHlcbmNvbnN0IGdldEZvcm1hdHRlZEVyYzIwVG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogRXJjMjBUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBFcmMyMENvaW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldEVyYzIwVG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmV4cG9ydCBjb25zdCBldGhHYXNDb25maWdzID0ge1xuICBtaW5pbXVtR2FzUHJpY2U6IDEwMDAwMDAwMDAsIC8vIG1pbmltdW0gZ2FzIHByaWNlIGEgdXNlciBjYW4gcHJvdmlkZSAoMSBHd2VpKVxuICBkZWZhdWx0R2FzUHJpY2U6IDIwMDAwMDAwMDAwLCAvLyBkZWZhdWx0IGdhcyBwcmljZSBpZiBlc3RpbWF0aW9uIGZhaWxzICgyMCBHd2VpKVxuICBtYXhpbXVtR2FzUHJpY2U6IDI1MDAwMDAwMDAwMDAsIC8vIG1pbmltdW0gZ2FzIHByaWNlIGEgdXNlciBjYW4gcHJvdmlkZSAoMjUwMCBHd2VpKVxuICBkZWZhdWx0R2FzTGltaXQ6IDUwMDAwMCwgLy8gRGVmYXVsdCBnYXMgbGltaXQgd2Ugc2V0IGZvciBjb250cmFjdCBzZW5kXG4gIGRlZmF1bHRHYXNMaW1pdFRva2VuU2VuZDogMTAwMDAwMCwgLy8gRGVmYXVsdCBnYXMgbGltaXQgd2Ugc2V0IGZvciB0b2tlbiBzZW5kXG4gIG1pbmltdW1HYXNMaW1pdDogMzAwMDAsIC8vIG1pbmltdW0gZ2FzIGxpbWl0IGEgdXNlciBjYW4gc2V0IGZvciBhIHNlbmRcbiAgbWF4aW11bUdhc0xpbWl0OiAyMDAwMDAwMCwgLy8gQ3VzdG9tZXJzIGNhbm5vdCBzZXQgZ2FzIGxpbWl0cyBiZXlvbmQgdGhpcyBhbW91bnRcbiAgbmV3RXRoTGlrZUNvaW5zTWluR2FzTGltaXQ6IDQwMDAwMCwgLy8gbWluaW11bSBnYXMgbGltaXQgYSB1c2VyIGNhbiBzZXQgZm9yIGEgc2VuZCBmb3IgZXRoIGxpa2UgY29pbnMgbGlrZSBhcmJpdHJ1bSwgb3B0aW1pc20sIGV0Y1xuICBvcGV0aEdhc0wxRmVlczogMTAwMDAwMDAwMDAwMDAwMCwgLy8gQnVmZmVyIGZvciBvcGV0aCBMMSBnYXMgZmVlc1xufTtcblxuZnVuY3Rpb24gZ2V0U3RlbGxhclRva2VuQ29uZmlnKGNvaW46IFN0ZWxsYXJDb2luKTogU3RlbGxhclRva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAneGxtJyA6ICd0eGxtJyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cbi8vIEdldCB0aGUgbGlzdCBvZiBTdGVsbGFyIHRva2VucyBmcm9tIHN0YXRpY3MgYW5kIGZvcm1hdCBpdCBwcm9wZXJseVxuY29uc3QgZ2V0Rm9ybWF0dGVkU3RlbGxhclRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IFN0ZWxsYXJUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBTdGVsbGFyQ29pbikge1xuICAgICAgYWNjLnB1c2goZ2V0U3RlbGxhclRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRPZmNUb2tlbkNvbmZpZyhjb2luOiBPZmNDb2luKTogT2ZjVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiAnb2ZjJyxcbiAgICBiYWNraW5nQ29pbjogY29pbi5hc3NldCxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgICBpc0ZpYXQ6IGNvaW4ua2luZCA9PT0gQ29pbktpbmQuRklBVCxcbiAgfTtcbn1cbi8vIEdldCB0aGUgbGlzdCBvZiBPRkMgdG9rZW5zIGZyb20gc3RhdGljcyBhbmQgZm9ybWF0IGl0IHByb3Blcmx5XG5jb25zdCBnZXRGb3JtYXR0ZWRPZmNDb2lucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IE9mY1Rva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIE9mY0NvaW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldE9mY1Rva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRDZWxvVG9rZW5Db25maWcoY29pbjogQ2Vsb0NvaW4pOiBDZWxvVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdjZWxvJyA6ICd0Y2VsbycsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogY29pbi5jb250cmFjdEFkZHJlc3MudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZENlbG9Ub2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBDZWxvVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgQ2Vsb0NvaW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldENlbG9Ub2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0QnNjVG9rZW5Db25maWcoY29pbjogQnNjQ29pbik6IEV0aExpa2VUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ2JzYycgOiAndGJzYycsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogY29pbi5jb250cmFjdEFkZHJlc3MudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZEJzY1Rva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEV0aExpa2VUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBCc2NDb2luKSB7XG4gICAgICBhY2MucHVzaChnZXRCc2NUb2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0RW9zVG9rZW5Db25maWcoY29pbjogRW9zQ29pbik6IEVvc1Rva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnZW9zJyA6ICd0ZW9zJyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0TmFtZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCksXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICAgIGNvbnRyYWN0TmFtZTogY29pbi5jb250cmFjdE5hbWUsXG4gICAgY29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZEVvc1Rva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEVvc1Rva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIEVvc0NvaW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldEVvc1Rva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRBdmF4Q1Rva2VuQ29uZmlnKGNvaW46IEF2YXhFUkMyMFRva2VuKTogQXZheGNUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ2F2YXhjJyA6ICd0YXZheGMnLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3RBZGRyZXNzLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5jb25zdCBnZXRGb3JtYXR0ZWRBdmF4Q1Rva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEF2YXhjVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgQXZheEVSQzIwVG9rZW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldEF2YXhDVG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldFBvbHlnb25Ub2tlbkNvbmZpZyhjb2luOiBQb2x5Z29uRVJDMjBUb2tlbiB8IEVyYzcyMUNvaW4gfCBFcmMxMTU1Q29pbik6IEV0aExpa2VUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ3BvbHlnb24nIDogJ3Rwb2x5Z29uJyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCksXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkUG9seWdvblRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEV0aExpa2VUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKFxuICAgICAgY29pbiBpbnN0YW5jZW9mIFBvbHlnb25FUkMyMFRva2VuIHx8XG4gICAgICAoKGNvaW4gaW5zdGFuY2VvZiBFcmM3MjFDb2luIHx8IGNvaW4gaW5zdGFuY2VvZiBFcmMxMTU1Q29pbikgJiYgY29pbi5mYW1pbHkgPT09IENvaW5GYW1pbHkuUE9MWUdPTilcbiAgICApIHtcbiAgICAgIGFjYy5wdXNoKGdldFBvbHlnb25Ub2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0U29uZWl1bVRva2VuQ29uZmlnKGNvaW46IEVyYzcyMUNvaW4gfCBFcmMxMTU1Q29pbik6IEV0aExpa2VUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ3NvbmVpdW0nIDogJ3Rzb25laXVtJyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCksXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkU29uZWl1bVRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEV0aExpa2VUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKChjb2luIGluc3RhbmNlb2YgRXJjNzIxQ29pbiB8fCBjb2luIGluc3RhbmNlb2YgRXJjMTE1NUNvaW4pICYmIGNvaW4uZmFtaWx5ID09PSBDb2luRmFtaWx5LlNPTkVJVU0pIHtcbiAgICAgIGFjYy5wdXNoKGdldFNvbmVpdW1Ub2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0QXJiZXRoVG9rZW5Db25maWcoY29pbjogQXJiZXRoRVJDMjBUb2tlbik6IEV0aExpa2VUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ2FyYmV0aCcgOiAndGFyYmV0aCcsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogY29pbi5jb250cmFjdEFkZHJlc3MudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZEFyYmV0aFRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEV0aExpa2VUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBBcmJldGhFUkMyMFRva2VuKSB7XG4gICAgICBhY2MucHVzaChnZXRBcmJldGhUb2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0T3BldGhUb2tlbkNvbmZpZyhjb2luOiBPcGV0aEVSQzIwVG9rZW4pOiBFdGhMaWtlVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdvcGV0aCcgOiAndG9wZXRoJyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCksXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkT3BldGhUb2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBFdGhMaWtlVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgT3BldGhFUkMyMFRva2VuKSB7XG4gICAgICBhY2MucHVzaChnZXRPcGV0aFRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRaa2V0aFRva2VuQ29uZmlnKGNvaW46IFprZXRoRVJDMjBUb2tlbik6IEV0aExpa2VUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ3prZXRoJyA6ICd0emtldGgnLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgdG9rZW5Db250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3RBZGRyZXNzLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5jb25zdCBnZXRGb3JtYXR0ZWRaa2V0aFRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEV0aExpa2VUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBaa2V0aEVSQzIwVG9rZW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldFprZXRoVG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldEJlcmFUb2tlbkNvbmZpZyhjb2luOiBCZXJhRVJDMjBUb2tlbik6IEV0aExpa2VUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ2JlcmEnIDogJ3RiZXJhJyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCksXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkQmVyYVRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEV0aExpa2VUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBCZXJhRVJDMjBUb2tlbikge1xuICAgICAgYWNjLnB1c2goZ2V0QmVyYVRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRDb3JlZGFvVG9rZW5Db25maWcoY29pbjogQ29yZWRhb0VSQzIwVG9rZW4pOiBFdGhMaWtlVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdjb3JlZGFvJyA6ICd0Y29yZWRhbycsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICB0b2tlbkNvbnRyYWN0QWRkcmVzczogY29pbi5jb250cmFjdEFkZHJlc3MudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZENvcmVkYW9Ub2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBFdGhMaWtlVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgQ29yZWRhb0VSQzIwVG9rZW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldENvcmVkYW9Ub2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0V29ybGRUb2tlbkNvbmZpZyhjb2luOiBXb3JsZEVSQzIwVG9rZW4pOiBFdGhMaWtlVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICd3b3JsZCcgOiAndHdvcmxkJyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCksXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkV29ybGRUb2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBFdGhMaWtlVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgV29ybGRFUkMyMFRva2VuKSB7XG4gICAgICBhY2MucHVzaChnZXRXb3JsZFRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRTb2xUb2tlbkNvbmZpZyhjb2luOiBTb2xDb2luKTogU29sVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdzb2wnIDogJ3Rzb2wnLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgdG9rZW5BZGRyZXNzOiBjb2luLnRva2VuQWRkcmVzcyxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gICAgY29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZFNvbFRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IFNvbFRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIFNvbENvaW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldFNvbFRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRBbGdvVG9rZW5Db25maWcoY29pbjogQWxnb0NvaW4pOiBBbGdvVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdhbGdvJyA6ICd0YWxnbycsXG4gICAgYWxpYXM6IGNvaW4uYWxpYXMsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5leHBvcnQgY29uc3QgZ2V0Rm9ybWF0dGVkQWxnb1Rva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEFsZ29Ub2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBBbGdvQ29pbikge1xuICAgICAgYWNjLnB1c2goZ2V0QWxnb1Rva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRIYmFyVG9rZW5Db25maWcoY29pbjogSGVkZXJhVG9rZW4pOiBIYmFyVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdoYmFyJyA6ICd0aGJhcicsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gICAgbm9kZUFjY291bnRJZDogY29pbi5ub2RlQWNjb3VudElkLFxuICAgIHRva2VuSWQ6IGNvaW4udG9rZW5JZCxcbiAgICBjb250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3RBZGRyZXNzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkSGJhclRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEhiYXJUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBIZWRlcmFUb2tlbikge1xuICAgICAgYWNjLnB1c2goZ2V0SGJhclRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRBZGFUb2tlbkNvbmZpZyhjb2luOiBBZGFDb2luKTogQWRhVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdhZGEnIDogJ3RhZGEnLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgcG9saWN5SWQ6IGNvaW4ucG9saWN5SWQsXG4gICAgYXNzZXROYW1lOiBjb2luLmFzc2V0TmFtZSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5jb25zdCBnZXRGb3JtYXR0ZWRBZGFUb2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBBZGFUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBBZGFDb2luKSB7XG4gICAgICBhY2MucHVzaChnZXRBZGFUb2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0VHJ4VG9rZW5Db25maWcoY29pbjogVHJvbkVyYzIwQ29pbik6IFRyeFRva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAndHJ4JyA6ICd0dHJ4JyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIHRva2VuQ29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCksXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkVHJ4VG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogVHJ4VG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgVHJvbkVyYzIwQ29pbikge1xuICAgICAgYWNjLnB1c2goZ2V0VHJ4VG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldFhycFRva2VuQ29uZmlnKGNvaW46IFhycENvaW4pOiBYcnBUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ3hycCcgOiAndHhycCcsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gICAgaXNzdWVyQWRkcmVzczogY29pbi5pc3N1ZXJBZGRyZXNzLFxuICAgIGN1cnJlbmN5Q29kZTogY29pbi5jdXJyZW5jeUNvZGUsXG4gICAgZG9tYWluOiBjb2luLmRvbWFpbixcbiAgICBjb250cmFjdEFkZHJlc3M6IGNvaW4uY29udHJhY3RBZGRyZXNzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkWHJwVG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogWHJwVG9rZW5Db25maWdbXSwgY29pbikgPT4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgWHJwQ29pbikge1xuICAgICAgYWNjLnB1c2goZ2V0WHJwVG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldFN1aVRva2VuQ29uZmlnKGNvaW46IFN1aUNvaW4pOiBTdWlUb2tlbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogY29pbi5uYW1lLFxuICAgIGNvaW46IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ3N1aScgOiAndHN1aScsXG4gICAgbmV0d29yazogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnTWFpbm5ldCcgOiAnVGVzdG5ldCcsXG4gICAgbmFtZTogY29pbi5mdWxsTmFtZSxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gICAgcGFja2FnZUlkOiBjb2luLnBhY2thZ2VJZCxcbiAgICBtb2R1bGU6IGNvaW4ubW9kdWxlLFxuICAgIHN5bWJvbDogY29pbi5zeW1ib2wsXG4gICAgY29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZFN1aVRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IFN1aVRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIFN1aUNvaW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldFN1aVRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRBcHRUb2tlbkNvbmZpZyhjb2luOiBBcHRDb2luKTogQXB0VG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdhcHQnIDogJ3RhcHQnLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgYXNzZXRJZDogY29pbi5hc3NldElkLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZEFwdFRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IEFwdFRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIEFwdENvaW4pIHtcbiAgICAgIGFjYy5wdXNoKGdldEFwdFRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXRBcHRORlRDb2xsZWN0aW9uQ29uZmlnKGNvaW46IEFwdE5GVENvbGxlY3Rpb24pOiBBcHRORlRDb2xsZWN0aW9uQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnYXB0JyA6ICd0YXB0JyxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIG5mdENvbGxlY3Rpb25JZDogY29pbi5uZnRDb2xsZWN0aW9uSWQsXG4gICAgZGVjaW1hbFBsYWNlczogY29pbi5kZWNpbWFsUGxhY2VzLFxuICB9O1xufVxuY29uc3QgZ2V0Rm9ybWF0dGVkQXB0TkZUQ29sbGVjdGlvbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBBcHRORlRDb2xsZWN0aW9uQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIEFwdE5GVENvbGxlY3Rpb24pIHtcbiAgICAgIGFjYy5wdXNoKGdldEFwdE5GVENvbGxlY3Rpb25Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldFNpcDEwVG9rZW5Db25maWcoY29pbjogU2lwMTBUb2tlbik6IFNpcDEwVG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdzdHgnIDogJ3RzdHgnLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgYXNzZXRJZDogY29pbi5hc3NldElkLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cbmNvbnN0IGdldEZvcm1hdHRlZFNpcDEwVG9rZW5zID0gKGN1c3RvbUNvaW5NYXAgPSBjb2lucykgPT5cbiAgY3VzdG9tQ29pbk1hcC5yZWR1Y2UoKGFjYzogU2lwMTBUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBTaXAxMFRva2VuKSB7XG4gICAgICBhY2MucHVzaChnZXRTaXAxMFRva2VuQ29uZmlnKGNvaW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG5mdW5jdGlvbiBnZXROZXAxNDFUb2tlbkNvbmZpZyhjb2luOiBOZXAxNDFUb2tlbik6IE5lcDE0MVRva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyAnbmVhcicgOiAndG5lYXInLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgY29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcyxcbiAgICBzdG9yYWdlRGVwb3NpdEFtb3VudDogY29pbi5zdG9yYWdlRGVwb3NpdEFtb3VudCxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5jb25zdCBnZXRGb3JtYXR0ZWROZXAxNDFUb2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBOZXAxNDFUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBOZXAxNDFUb2tlbikge1xuICAgICAgYWNjLnB1c2goZ2V0TmVwMTQxVG9rZW5Db25maWcoY29pbikpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbmZ1bmN0aW9uIGdldFZldFRva2VuQ29uZmlnKGNvaW46IFZldFRva2VuKTogVmV0VG9rZW5Db25maWcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvaW4ubmFtZSxcbiAgICBjb2luOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICd2ZXQnIDogJ3R2ZXQnLFxuICAgIG5ldHdvcms6IGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gJ01haW5uZXQnIDogJ1Rlc3RuZXQnLFxuICAgIG5hbWU6IGNvaW4uZnVsbE5hbWUsXG4gICAgY29udHJhY3RBZGRyZXNzOiBjb2luLmNvbnRyYWN0QWRkcmVzcyxcbiAgICBkZWNpbWFsUGxhY2VzOiBjb2luLmRlY2ltYWxQbGFjZXMsXG4gIH07XG59XG5cbmNvbnN0IGdldEZvcm1hdHRlZFZldFRva2VucyA9IChjdXN0b21Db2luTWFwID0gY29pbnMpID0+XG4gIGN1c3RvbUNvaW5NYXAucmVkdWNlKChhY2M6IFZldFRva2VuQ29uZmlnW10sIGNvaW4pID0+IHtcbiAgICBpZiAoY29pbiBpbnN0YW5jZW9mIFZldFRva2VuKSB7XG4gICAgICBhY2MucHVzaChnZXRWZXRUb2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuY29uc3QgZ2V0Rm9ybWF0dGVkQ29zbW9zQ2hhaW5Ub2tlbnMgPSAoY3VzdG9tQ29pbk1hcCA9IGNvaW5zKSA9PlxuICBjdXN0b21Db2luTWFwLnJlZHVjZSgoYWNjOiBDb3Ntb3NUb2tlbkNvbmZpZ1tdLCBjb2luKSA9PiB7XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBDb3Ntb3NDaGFpblRva2VuKSB7XG4gICAgICBhY2MucHVzaChnZXRDb3Ntb3NUb2tlbkNvbmZpZyhjb2luKSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuZnVuY3Rpb24gZ2V0Q29zbW9zVG9rZW5Db25maWcoY29pbjogQ29zbW9zQ2hhaW5Ub2tlbik6IENvc21vc1Rva2VuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBjb2luLm5hbWUsXG4gICAgY29pbjogY29pbi5uYW1lLnNwbGl0KCc6JylbMF0udG9Mb3dlckNhc2UoKSxcbiAgICBuZXR3b3JrOiBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCA/ICdNYWlubmV0JyA6ICdUZXN0bmV0JyxcbiAgICBuYW1lOiBjb2luLmZ1bGxOYW1lLFxuICAgIGRlbm9tOiBjb2luLmRlbm9tLFxuICAgIGRlY2ltYWxQbGFjZXM6IGNvaW4uZGVjaW1hbFBsYWNlcyxcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldEZvcm1hdHRlZFRva2VucyA9IChjb2luTWFwID0gY29pbnMpOiBUb2tlbnMgPT4ge1xuICBjb25zdCBmb3JtYXR0ZWRBcHRORlRDb2xsZWN0aW9ucyA9IGdldEZvcm1hdHRlZEFwdE5GVENvbGxlY3Rpb25zKGNvaW5NYXApO1xuICByZXR1cm4ge1xuICAgIGJpdGNvaW46IHtcbiAgICAgIGV0aDoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZEVyYzIwVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09ICdNYWlubmV0JyksXG4gICAgICB9LFxuICAgICAgeGxtOiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkU3RlbGxhclRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnTWFpbm5ldCcpLFxuICAgICAgfSxcbiAgICAgIGFsZ286IHtcbiAgICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRBbGdvVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09ICdNYWlubmV0JyksXG4gICAgICB9LFxuICAgICAgb2ZjOiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkT2ZjQ29pbnMoY29pbk1hcCkuZmlsdGVyKFxuICAgICAgICAgICh0b2tlbikgPT4gY29pbk1hcC5nZXQodG9rZW4udHlwZSkubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAgY2Vsbzoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZENlbG9Ub2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ01haW5uZXQnKSxcbiAgICAgIH0sXG4gICAgICBic2M6IHtcbiAgICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRCc2NUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ01haW5uZXQnKSxcbiAgICAgIH0sXG4gICAgICBlb3M6IHtcbiAgICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRFb3NUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ01haW5uZXQnKSxcbiAgICAgIH0sXG4gICAgICBhdmF4Yzoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZEF2YXhDVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09ICdNYWlubmV0JyksXG4gICAgICB9LFxuICAgICAgcG9seWdvbjoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZFBvbHlnb25Ub2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ01haW5uZXQnKSxcbiAgICAgIH0sXG4gICAgICBzb25laXVtOiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkU29uZWl1bVRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnTWFpbm5ldCcpLFxuICAgICAgfSxcbiAgICAgIGFyYmV0aDoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZEFyYmV0aFRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnTWFpbm5ldCcpLFxuICAgICAgfSxcbiAgICAgIG9wZXRoOiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkT3BldGhUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ01haW5uZXQnKSxcbiAgICAgIH0sXG4gICAgICB6a2V0aDoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZFprZXRoVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09ICdNYWlubmV0JyksXG4gICAgICB9LFxuICAgICAgc29sOiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkU29sVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09ICdNYWlubmV0JyksXG4gICAgICB9LFxuICAgICAgaGJhcjoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZEhiYXJUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ01haW5uZXQnKSxcbiAgICAgIH0sXG4gICAgICBhZGE6IHtcbiAgICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRBZGFUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ01haW5uZXQnKSxcbiAgICAgIH0sXG4gICAgICB0cng6IHtcbiAgICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRUcnhUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ01haW5uZXQnKSxcbiAgICAgIH0sXG4gICAgICB4cnA6IHtcbiAgICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRYcnBUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ01haW5uZXQnKSxcbiAgICAgIH0sXG4gICAgICBzdWk6IHtcbiAgICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRTdWlUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ01haW5uZXQnKSxcbiAgICAgIH0sXG4gICAgICBiZXJhOiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkQmVyYVRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnTWFpbm5ldCcpLFxuICAgICAgfSxcbiAgICAgIGNvcmVkYW86IHtcbiAgICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRDb3JlZGFvVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09ICdNYWlubmV0JyksXG4gICAgICB9LFxuICAgICAgd29ybGQ6IHtcbiAgICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRXb3JsZFRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnTWFpbm5ldCcpLFxuICAgICAgfSxcbiAgICAgIGFwdDoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZEFwdFRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnTWFpbm5ldCcpLFxuICAgICAgICBuZnRDb2xsZWN0aW9uczogZm9ybWF0dGVkQXB0TkZUQ29sbGVjdGlvbnMuZmlsdGVyKFxuICAgICAgICAgIChuZnRDb2xsZWN0aW9uOiBBcHRORlRDb2xsZWN0aW9uQ29uZmlnKSA9PiBuZnRDb2xsZWN0aW9uLm5ldHdvcmsgPT09ICdNYWlubmV0J1xuICAgICAgICApLFxuICAgICAgfSxcbiAgICAgIHN0eDoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZFNpcDEwVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09ICdNYWlubmV0JyksXG4gICAgICB9LFxuICAgICAgbmVhcjoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZE5lcDE0MVRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnTWFpbm5ldCcpLFxuICAgICAgfSxcbiAgICAgIHZldDoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZFZldFRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnTWFpbm5ldCcpLFxuICAgICAgfSxcbiAgICAgIGNvc21vczoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZENvc21vc0NoYWluVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09ICdNYWlubmV0JyksXG4gICAgICB9LFxuICAgIH0sXG4gICAgdGVzdG5ldDoge1xuICAgICAgZXRoOiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkRXJjMjBUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ1Rlc3RuZXQnKSxcbiAgICAgIH0sXG4gICAgICB4bG06IHtcbiAgICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRTdGVsbGFyVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09ICdUZXN0bmV0JyksXG4gICAgICB9LFxuICAgICAgYWxnbzoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZEFsZ29Ub2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ1Rlc3RuZXQnKSxcbiAgICAgIH0sXG4gICAgICBvZmM6IHtcbiAgICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRPZmNDb2lucyhjb2luTWFwKS5maWx0ZXIoXG4gICAgICAgICAgKHRva2VuKSA9PiBjb2luTWFwLmdldCh0b2tlbi50eXBlKS5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLlRFU1RORVRcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICBjZWxvOiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkQ2Vsb1Rva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnVGVzdG5ldCcpLFxuICAgICAgfSxcbiAgICAgIGJzYzoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZEJzY1Rva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnVGVzdG5ldCcpLFxuICAgICAgfSxcbiAgICAgIGVvczoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZEVvc1Rva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnVGVzdG5ldCcpLFxuICAgICAgfSxcbiAgICAgIGF2YXhjOiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkQXZheENUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ1Rlc3RuZXQnKSxcbiAgICAgIH0sXG4gICAgICBwb2x5Z29uOiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkUG9seWdvblRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnVGVzdG5ldCcpLFxuICAgICAgfSxcbiAgICAgIHNvbmVpdW06IHtcbiAgICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRTb25laXVtVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09ICdUZXN0bmV0JyksXG4gICAgICB9LFxuICAgICAgYXJiZXRoOiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkQXJiZXRoVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09ICdUZXN0bmV0JyksXG4gICAgICB9LFxuICAgICAgb3BldGg6IHtcbiAgICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRPcGV0aFRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnVGVzdG5ldCcpLFxuICAgICAgfSxcbiAgICAgIHprZXRoOiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkWmtldGhUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ1Rlc3RuZXQnKSxcbiAgICAgIH0sXG4gICAgICBzb2w6IHtcbiAgICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRTb2xUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ1Rlc3RuZXQnKSxcbiAgICAgIH0sXG4gICAgICBoYmFyOiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkSGJhclRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnVGVzdG5ldCcpLFxuICAgICAgfSxcbiAgICAgIGFkYToge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZEFkYVRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnVGVzdG5ldCcpLFxuICAgICAgfSxcbiAgICAgIHRyeDoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZFRyeFRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnVGVzdG5ldCcpLFxuICAgICAgfSxcbiAgICAgIHhycDoge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZFhycFRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnVGVzdG5ldCcpLFxuICAgICAgfSxcbiAgICAgIHN1aToge1xuICAgICAgICB0b2tlbnM6IGdldEZvcm1hdHRlZFN1aVRva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnVGVzdG5ldCcpLFxuICAgICAgfSxcbiAgICAgIGJlcmE6IHtcbiAgICAgICAgdG9rZW5zOiBnZXRGb3JtYXR0ZWRCZXJhVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09ICdUZXN0bmV0JyksXG4gICAgICB9LFxuICAgICAgYXB0OiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkQXB0VG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09ICdUZXN0bmV0JyksXG4gICAgICAgIG5mdENvbGxlY3Rpb25zOiBmb3JtYXR0ZWRBcHRORlRDb2xsZWN0aW9ucy5maWx0ZXIoXG4gICAgICAgICAgKG5mdENvbGxlY3Rpb246IEFwdE5GVENvbGxlY3Rpb25Db25maWcpID0+IG5mdENvbGxlY3Rpb24ubmV0d29yayA9PT0gJ1Rlc3RuZXQnXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAgc3R4OiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkU2lwMTBUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ1Rlc3RuZXQnKSxcbiAgICAgIH0sXG4gICAgICBjb3JlZGFvOiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkQ29yZWRhb1Rva2Vucyhjb2luTWFwKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5uZXR3b3JrID09PSAnVGVzdG5ldCcpLFxuICAgICAgfSxcbiAgICAgIHdvcmxkOiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkV29ybGRUb2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ1Rlc3RuZXQnKSxcbiAgICAgIH0sXG4gICAgICBuZWFyOiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkTmVwMTQxVG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09ICdUZXN0bmV0JyksXG4gICAgICB9LFxuICAgICAgdmV0OiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkVmV0VG9rZW5zKGNvaW5NYXApLmZpbHRlcigodG9rZW4pID0+IHRva2VuLm5ldHdvcmsgPT09ICdUZXN0bmV0JyksXG4gICAgICB9LFxuICAgICAgY29zbW9zOiB7XG4gICAgICAgIHRva2VuczogZ2V0Rm9ybWF0dGVkQ29zbW9zQ2hhaW5Ub2tlbnMoY29pbk1hcCkuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubmV0d29yayA9PT0gJ1Rlc3RuZXQnKSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbn07XG5cbi8qKlxuICogVmVyaWZ5IG1haW5uZXQgb3IgdGVzdG5ldCB0b2tlbnNcbiAqIEBwYXJhbSB0b2tlbnNcbiAqL1xuY29uc3QgdmVyaWZ5VG9rZW5zID0gZnVuY3Rpb24gKHRva2VuczogQmFzZVRva2VuQ29uZmlnW10pIHtcbiAgY29uc3QgdmVyaWZpZWRUb2tlbnM6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XG4gIHRva2Vucy5mb3JFYWNoKCh0b2tlbikgPT4ge1xuICAgIGlmICh2ZXJpZmllZFRva2Vuc1t0b2tlbi50eXBlXSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0b2tlbiA6ICcgKyB0b2tlbi50eXBlICsgJyBkdXBsaWNhdGVkLicpO1xuICAgIH1cbiAgICB2ZXJpZmllZFRva2Vuc1t0b2tlbi50eXBlXSA9IHRydWU7XG5cbiAgICBpZiAoXG4gICAgICAodG9rZW4gYXMgQmFzZUNvbnRyYWN0QWRkcmVzc0NvbmZpZykudG9rZW5Db250cmFjdEFkZHJlc3MgJiZcbiAgICAgICh0b2tlbiBhcyBCYXNlQ29udHJhY3RBZGRyZXNzQ29uZmlnKS50b2tlbkNvbnRyYWN0QWRkcmVzcyAhPT1cbiAgICAgICAgKHRva2VuIGFzIEJhc2VDb250cmFjdEFkZHJlc3NDb25maWcpLnRva2VuQ29udHJhY3RBZGRyZXNzLnRvTG9jYWxlTG93ZXJDYXNlKClcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ3Rva2VuIGNvbnRyYWN0OiAnICsgdG9rZW4udHlwZSArICcgaXMgbm90IGFsbCBsb3dlciBjYXNlOiAnICsgKHRva2VuIGFzIEJhc2VDb250cmFjdEFkZHJlc3NDb25maWcpXG4gICAgICApO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHZlcmlmaWVkVG9rZW5zO1xufTtcblxuZXhwb3J0IGNvbnN0IHRva2VucyA9IGdldEZvcm1hdHRlZFRva2VucygpO1xuXG5leHBvcnQgY29uc3QgZm9ybWF0dGVkQWxnb1Rva2VucyA9IGdldEZvcm1hdHRlZEFsZ29Ub2tlbnMoKTtcblxuY29uc3QgbWFpbm5ldEVyYzIwVG9rZW5zID0gdmVyaWZ5VG9rZW5zKHRva2Vucy5iaXRjb2luLmV0aC50b2tlbnMpO1xuY29uc3QgbWFpbm5ldFN0ZWxsYXJUb2tlbnMgPSB2ZXJpZnlUb2tlbnModG9rZW5zLmJpdGNvaW4ueGxtLnRva2Vucyk7XG5leHBvcnQgY29uc3QgbWFpbm5ldFRva2VucyA9IHsgLi4ubWFpbm5ldEVyYzIwVG9rZW5zLCAuLi5tYWlubmV0U3RlbGxhclRva2VucyB9O1xuXG5jb25zdCB0ZXN0bmV0RXJjMjBUb2tlbnMgPSB2ZXJpZnlUb2tlbnModG9rZW5zLnRlc3RuZXQuZXRoLnRva2Vucyk7XG5jb25zdCB0ZXN0bmV0U3RlbGxhclRva2VucyA9IHZlcmlmeVRva2Vucyh0b2tlbnMudGVzdG5ldC54bG0udG9rZW5zKTtcbmV4cG9ydCBjb25zdCB0ZXN0bmV0VG9rZW5zID0geyAuLi50ZXN0bmV0RXJjMjBUb2tlbnMsIC4uLnRlc3RuZXRTdGVsbGFyVG9rZW5zIH07XG5cbi8qKlxuICogR2V0IGZvcm1hdHRlZCB0b2tlbiBjb25maWd1cmF0aW9uIGZvciBhIHNpbmdsZSBjb2luXG4gKiBAcGFyYW0gY29pbiAtIFN0YXRpYyBCYXNlIGNvaW4gaW5zdGFuY2VcbiAqIEByZXR1cm5zIFRoZSBmb3JtYXR0ZWQgdG9rZW4gY29uZmlndXJhdGlvbiBmb3IgdGhlIGNvaW4sIG9yIHVuZGVmaW5lZCBpZiBub3Qgc3VwcG9ydGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtYXR0ZWRUb2tlbkNvbmZpZ0ZvckNvaW4oY29pbjogUmVhZG9ubHk8QmFzZUNvaW4+KTogVG9rZW5Db25maWcgfCB1bmRlZmluZWQge1xuICBpZiAoY29pbiBpbnN0YW5jZW9mIEVyYzIwQ29pbikge1xuICAgIHJldHVybiBnZXRFcmMyMFRva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBTdGVsbGFyQ29pbikge1xuICAgIHJldHVybiBnZXRTdGVsbGFyVG9rZW5Db25maWcoY29pbik7XG4gIH0gZWxzZSBpZiAoY29pbiBpbnN0YW5jZW9mIE9mY0NvaW4pIHtcbiAgICByZXR1cm4gZ2V0T2ZjVG9rZW5Db25maWcoY29pbik7XG4gIH0gZWxzZSBpZiAoY29pbiBpbnN0YW5jZW9mIENlbG9Db2luKSB7XG4gICAgcmV0dXJuIGdldENlbG9Ub2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgQnNjQ29pbikge1xuICAgIHJldHVybiBnZXRCc2NUb2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgRW9zQ29pbikge1xuICAgIHJldHVybiBnZXRFb3NUb2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgQXZheEVSQzIwVG9rZW4pIHtcbiAgICByZXR1cm4gZ2V0QXZheENUb2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChcbiAgICBjb2luIGluc3RhbmNlb2YgUG9seWdvbkVSQzIwVG9rZW4gfHxcbiAgICAoKGNvaW4gaW5zdGFuY2VvZiBFcmM3MjFDb2luIHx8IGNvaW4gaW5zdGFuY2VvZiBFcmMxMTU1Q29pbikgJiYgY29pbi5mYW1pbHkgPT09IENvaW5GYW1pbHkuUE9MWUdPTilcbiAgKSB7XG4gICAgcmV0dXJuIGdldFBvbHlnb25Ub2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmICgoY29pbiBpbnN0YW5jZW9mIEVyYzcyMUNvaW4gfHwgY29pbiBpbnN0YW5jZW9mIEVyYzExNTVDb2luKSAmJiBjb2luLmZhbWlseSA9PT0gQ29pbkZhbWlseS5TT05FSVVNKSB7XG4gICAgcmV0dXJuIGdldFNvbmVpdW1Ub2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgQXJiZXRoRVJDMjBUb2tlbikge1xuICAgIHJldHVybiBnZXRBcmJldGhUb2tlbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgT3BldGhFUkMyMFRva2VuKSB7XG4gICAgcmV0dXJuIGdldE9wZXRoVG9rZW5Db25maWcoY29pbik7XG4gIH0gZWxzZSBpZiAoY29pbiBpbnN0YW5jZW9mIFprZXRoRVJDMjBUb2tlbikge1xuICAgIHJldHVybiBnZXRaa2V0aFRva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBTb2xDb2luKSB7XG4gICAgcmV0dXJuIGdldFNvbFRva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBIZWRlcmFUb2tlbikge1xuICAgIHJldHVybiBnZXRIYmFyVG9rZW5Db25maWcoY29pbik7XG4gIH0gZWxzZSBpZiAoY29pbiBpbnN0YW5jZW9mIEFkYUNvaW4pIHtcbiAgICByZXR1cm4gZ2V0QWRhVG9rZW5Db25maWcoY29pbik7XG4gIH0gZWxzZSBpZiAoY29pbiBpbnN0YW5jZW9mIFRyb25FcmMyMENvaW4pIHtcbiAgICByZXR1cm4gZ2V0VHJ4VG9rZW5Db25maWcoY29pbik7XG4gIH0gZWxzZSBpZiAoY29pbiBpbnN0YW5jZW9mIFhycENvaW4pIHtcbiAgICByZXR1cm4gZ2V0WHJwVG9rZW5Db25maWcoY29pbik7XG4gIH0gZWxzZSBpZiAoY29pbiBpbnN0YW5jZW9mIFN1aUNvaW4pIHtcbiAgICByZXR1cm4gZ2V0U3VpVG9rZW5Db25maWcoY29pbik7XG4gIH0gZWxzZSBpZiAoY29pbiBpbnN0YW5jZW9mIEFwdENvaW4pIHtcbiAgICByZXR1cm4gZ2V0QXB0VG9rZW5Db25maWcoY29pbik7XG4gIH0gZWxzZSBpZiAoY29pbiBpbnN0YW5jZW9mIEFwdE5GVENvbGxlY3Rpb24pIHtcbiAgICByZXR1cm4gZ2V0QXB0TkZUQ29sbGVjdGlvbkNvbmZpZyhjb2luKTtcbiAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgU2lwMTBUb2tlbikge1xuICAgIHJldHVybiBnZXRTaXAxMFRva2VuQ29uZmlnKGNvaW4pO1xuICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBOZXAxNDFUb2tlbikge1xuICAgIHJldHVybiBnZXROZXAxNDFUb2tlbkNvbmZpZyhjb2luKTtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuIl19