@cubist-labs/cubesigner-sdk 0.4.227 → 0.4.229

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.
@@ -4,4 +4,4 @@
4
4
  * Do not make direct changes to the file.
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIGZpbGUgd2FzIGF1dG8tZ2VuZXJhdGVkIGJ5IG9wZW5hcGktdHlwZXNjcmlwdC5cbiAqIERvIG5vdCBtYWtlIGRpcmVjdCBjaGFuZ2VzIHRvIHRoZSBmaWxlLlxuICovXG5cbi8qKiBPbmVPZiB0eXBlIGhlbHBlcnMgKi9cbnR5cGUgV2l0aG91dDxULCBVPiA9IHsgW1AgaW4gRXhjbHVkZTxrZXlvZiBULCBrZXlvZiBVPl0/OiBuZXZlciB9O1xudHlwZSBYT1I8VCwgVT4gPSBUIHwgVSBleHRlbmRzIG9iamVjdCA/IChXaXRob3V0PFQsIFU+ICYgVSkgfCAoV2l0aG91dDxVLCBUPiAmIFQpIDogVCB8IFU7XG50eXBlIE9uZU9mPFQgZXh0ZW5kcyBhbnlbXT4gPSBUIGV4dGVuZHMgW2luZmVyIE9ubHldXG4gID8gT25seVxuICA6IFQgZXh0ZW5kcyBbaW5mZXIgQSwgaW5mZXIgQiwgLi4uaW5mZXIgUmVzdF1cbiAgICA/IE9uZU9mPFtYT1I8QSwgQj4sIC4uLlJlc3RdPlxuICAgIDogbmV2ZXI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgcGF0aHMge1xuICBcIi92MC9hYm91dF9tZVwiOiB7XG4gICAgLyoqXG4gICAgICogVXNlciBJbmZvXG4gICAgICogQGRlc2NyaXB0aW9uIFVzZXIgSW5mb1xuICAgICAqXG4gICAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IHVzZXIuXG4gICAgICpcbiAgICAgKiBQUkVGRVIgYEdFVCAvdjAvb3Jncy97b3JnX2lkfS91c2VyL21lYFxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImFib3V0TWVMZWdhY3lcIl07XG4gIH07XG4gIFwiL3YwL2F0dGVzdGF0aW9uLy53ZWxsLWtub3duL2p3a3MuanNvblwiOiB7XG4gICAgLyoqXG4gICAgICogSldLUyBlbmRwb2ludCBmb3IgdGhlIGF0dGVzdGF0aW9uIGtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBKV0tTIGVuZHBvaW50IGZvciB0aGUgYXR0ZXN0YXRpb24ga2V5XG4gICAgICpcbiAgICAgKiBSZXR1cm5zIHRoZSBwdWJsaWMga2V5IHVzZWQgdG8gc2lnbiBLZXkgaW5mbyBhdHRlc3RhdGlvbnMuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiYXR0ZXN0YXRpb25Kd2tTZXRcIl07XG4gIH07XG4gIFwiL3YwL2VtYWlsL29yZ3NcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgYWNjZXNzaWJsZSBvcmdhbml6YXRpb25zLlxuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IGFjY2Vzc2libGUgb3JnYW5pemF0aW9ucy5cbiAgICAgKlxuICAgICAqIFVuYXV0aGVudGljYXRlZCBlbmRwb2ludCBmb3IgcmV0cmlldmluZyBhbGwgb3JnYW5pemF0aW9ucyBhY2Nlc3NpYmxlIHRvIGEgdXNlci5cbiAgICAgKiBUaGlzIGluZm9ybWF0aW9uIGlzIGVtYWlsZWQgdG8gdGhlIHByb3ZpZGVkIGVtYWlsIGFkZHJlc3MuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiZW1haWxfbXlfb3Jnc1wiXTtcbiAgfTtcbiAgXCIvdjAvaW50ZXJuYWwvc2VudHJ5XCI6IHtcbiAgICAvKipcbiAgICAgKiAoSU5URVJOQUwpIFNlbnRyeSBBUEkgUHJveHlcbiAgICAgKiBAZGVzY3JpcHRpb24gKElOVEVSTkFMKSBTZW50cnkgQVBJIFByb3h5XG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInNlbnRyeUFwaUNhbGxQdWJsaWNcIl07XG4gIH07XG4gIFwiL3YwL21taS92My8ud2VsbC1rbm93bi9qd2tzLmpzb25cIjoge1xuICAgIC8qKlxuICAgICAqIEpXS1MgZW5kcG9pbnQgZm9yIE1NSVxuICAgICAqIEBkZXNjcmlwdGlvbiBKV0tTIGVuZHBvaW50IGZvciBNTUlcbiAgICAgKlxuICAgICAqIFJldHVybnMgdGhlIHB1YmxpYyBrZXkgdXNlZCB0byBzaWduIEpTT04gV2ViIFRva2VucyBmb3IgTU1JLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcIm1taUp3a1NldFwiXTtcbiAgfTtcbiAgXCIvdjAvbW1pL3YzL2pzb24tcnBjXCI6IHtcbiAgICAvKipcbiAgICAgKiBNTUkgSlNPTi1SUEMgZW5kcG9pbnRcbiAgICAgKiBAZGVzY3JpcHRpb24gTU1JIEpTT04tUlBDIGVuZHBvaW50XG4gICAgICpcbiAgICAgKiBIYW5kbGVyIGZvciBhbGwgW01NSSBKU09OLVJQQ10oaHR0cHM6Ly9kb2NzLm1ldGFtYXNrLWluc3RpdHV0aW9uYWwuaW8vY3VzdG9kaWFuLWludGVncmF0aW9uL2ludGVncmF0aW9uLWRvY3MvYXBpL21ldGhvZHMpXG4gICAgICogcmVxdWVzdHMuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcIm1taVwiXTtcbiAgfTtcbiAgXCIvdjAvb2F1dGgvdG9rZW5cIjoge1xuICAgIC8qKlxuICAgICAqIFRva2VuIHJlZnJlc2ggZW5kcG9pbnQsIGNvbXBsaWFudCB3aXRoIE9BdXRoLlxuICAgICAqIEBkZXNjcmlwdGlvbiBUb2tlbiByZWZyZXNoIGVuZHBvaW50LCBjb21wbGlhbnQgd2l0aCBPQXV0aC5cbiAgICAgKlxuICAgICAqIFRoZSBib2R5IGNvbnRlbnQgdHlwZSBjYW4gYmUgZWl0aGVyICdhcHBsaWNhdGlvbi9qc29uJyBvciAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJy5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wib2F1dGgyVG9rZW5SZWZyZXNoXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIEdldCBPcmdcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IE9yZ1xuICAgICAqXG4gICAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IGFuIG9yZ2FuaXphdGlvbi5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJnZXRPcmdcIl07XG4gICAgLyoqXG4gICAgICogVXBkYXRlIE9yZ1xuICAgICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgT3JnXG4gICAgICpcbiAgICAgKiBVcGRhdGUgb3JnYW5pemF0aW9uIGF0dHJpYnV0ZXMgKGVuYWJsZWQgZmxhZywgbmFtZSwgYW5kIHBvbGljaWVzKS5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInVwZGF0ZU9yZ1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2F1ZGl0XCI6IHtcbiAgICAvKipcbiAgICAgKiBRdWVyeSB0aGUgYXVkaXQgbG9nLlxuICAgICAqIEBkZXNjcmlwdGlvbiBRdWVyeSB0aGUgYXVkaXQgbG9nLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJxdWVyeUF1ZGl0TG9nXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vYXV0aF9taWdyYXRpb24vYWRkX2lkZW50aXR5XCI6IHtcbiAgICAvKipcbiAgICAgKiBBc3NvY2lhdGUgYW4gT0lEQyBpZGVudGl0eSB3aXRoIGFuIGFyYml0cmFyeSB1c2VyIGluIG9yZyA8c2Vzc2lvbi5vcmc+LlxuICAgICAqIEBkZXNjcmlwdGlvbiBBc3NvY2lhdGUgYW4gT0lEQyBpZGVudGl0eSB3aXRoIGFuIGFyYml0cmFyeSB1c2VyIGluIG9yZyA8c2Vzc2lvbi5vcmc+LlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJhdXRoTWlncmF0aW9uSWRlbnRpdHlBZGRcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9hdXRoX21pZ3JhdGlvbi9yZW1vdmVfaWRlbnRpdHlcIjoge1xuICAgIC8qKlxuICAgICAqIERpc3NvY2lhdGUgYW4gT0lEQyBpZGVudGl0eSBmcm9tIGFuIGFyYml0cmFyeSB1c2VyIGluIG9yZyA8c2Vzc2lvbi5vcmc+LlxuICAgICAqIEBkZXNjcmlwdGlvbiBEaXNzb2NpYXRlIGFuIE9JREMgaWRlbnRpdHkgZnJvbSBhbiBhcmJpdHJhcnkgdXNlciBpbiBvcmcgPHNlc3Npb24ub3JnPi5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiYXV0aE1pZ3JhdGlvbklkZW50aXR5UmVtb3ZlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vYXV0aF9taWdyYXRpb24vdXBkYXRlX3VzZXJzXCI6IHtcbiAgICAvKipcbiAgICAgKiBVcGRhdGUgZXhpc3RpbmcgdXNlcnMnIHByb2ZpbGVzLiBDdXJyZW50bHkgc3VwcG9ydHMgb25seSAocmUpc2V0dGluZyBlbWFpbHMuXG4gICAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBleGlzdGluZyB1c2VycycgcHJvZmlsZXMuIEN1cnJlbnRseSBzdXBwb3J0cyBvbmx5IChyZSlzZXR0aW5nIGVtYWlscy5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiYXV0aE1pZ3JhdGlvblVzZXJVcGRhdGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9hdmEvc2lnbi97YXZhX2NoYWlufS97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBhIHNlcmlhbGl6ZWQgQXZhbGFuY2hlIEMvWC9QLUNoYWluIE1lc3NhZ2VcbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBhIHNlcmlhbGl6ZWQgQXZhbGFuY2hlIEMvWC9QLUNoYWluIE1lc3NhZ2VcbiAgICAgKlxuICAgICAqIFNpZ25zIGFuIEF2YWxhbmNoZSBtZXNzYWdlIHdpdGggYSBnaXZlbiBTZWNwRXRoIChDLUNoYWluIG1lc3NhZ2VzKSBvclxuICAgICAqIFNlY3BBdmEgKFgtIGFuZCBQLUNoYWluIG1lc3NhZ2VzKSBrZXkuIEN1cnJlbnRseSBzaWduaW5nIEMtQ2hhaW4gbWVzc2FnZXNcbiAgICAgKiB3aXRoIFNlY3BFdGgga2V5IG11c3QgYWxzbyBiZSBleHBsaWNpdGx5IGFsbG93ZWQgdmlhIGBBbGxvd1Jhd0Jsb2JTaWduaW5nYFxuICAgICAqIHBvbGljeS5cbiAgICAgKlxuICAgICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJhdmFTZXJpYWxpemVkVHhTaWduXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vYXZhL3NpZ24ve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gSlNPTi1lbmNvZGVkIEF2YWxhbmNoZSBYLSBvciBQLUNoYWluIE1lc3NhZ2VcbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBKU09OLWVuY29kZWQgQXZhbGFuY2hlIFgtIG9yIFAtQ2hhaW4gTWVzc2FnZVxuICAgICAqXG4gICAgICogU2lnbnMgYW4gQXZhbGFuY2hlIG1lc3NhZ2Ugd2l0aCBhIGdpdmVuIFNlY3BBdmEga2V5LlxuICAgICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJhdmFTaWduXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vYmFieWxvbi9jb3Yvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBCYWJ5bG9uIENvdmVuYW50IENvbW1pdHRlZSBSZXF1ZXN0XG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gQmFieWxvbiBDb3ZlbmFudCBDb21taXR0ZWUgUmVxdWVzdFxuICAgICAqXG4gICAgICogU2lnbnMgdHJhbnNhY3Rpb25zIHJlbGV2YW50IHRvIGEgQmFieWxvbiBjb3ZlbmFudCBjb21taXR0ZWUgc2lnbmVyLFxuICAgICAqIGkuZS4sIFNjaG5vcnIgYW5kIGFkYXB0b3Igc2lnbmF0dXJlcyBmb3IgdGhlIHVuYm9uZGluZywgc2xhc2hpbmcsIGFuZFxuICAgICAqIHNsYXNoLXVuYm9uZGluZyBvdXRwdXRzIG9mIGEgQmFieWxvbiBzdGFraW5nIHRyYW5zYWN0aW9uLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJiYWJ5bG9uQ292U2lnblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2JhYnlsb24vZW90cy9ub25jZXMve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBFT1RTIG5vbmNlc1xuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgRU9UUyBub25jZXNcbiAgICAgKlxuICAgICAqIEdlbmVyYXRlcyBhIHNldCBvZiBCYWJ5bG9uIEVPVFMgbm9uY2VzIGZvciBhIHNwZWNpZmllZCBjaGFpbi1pZCwgc3RhcnRpbmcgYXQgYVxuICAgICAqIHNwZWNpZmllZCBibG9jayBoZWlnaHQuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImNyZWF0ZUVvdHNOb25jZXNcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9iYWJ5bG9uL2VvdHMvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGFuIEVPVFMgc2lnbmF0dXJlXG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBhbiBFT1RTIHNpZ25hdHVyZVxuICAgICAqXG4gICAgICogR2VuZXJhdGVzIGFuIEVPVFMgc2lnbmF0dXJlIGZvciB0aGUgc3BlY2lmaWVkIGNoYWluLWlkLCBibG9jayBoZWlnaHQsIGFuZCBtZXNzYWdlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJlb3RzU2lnblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2JhYnlsb24vcmVnaXN0cmF0aW9uL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIEJhYnlsb24gU3Rha2luZyBSZWdpc3RyYXRpb25cbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBCYWJ5bG9uIFN0YWtpbmcgUmVnaXN0cmF0aW9uXG4gICAgICpcbiAgICAgKiBDcmVhdGVzIGFuZCBzaWducyB0aGUgZGF0YSBuZWVkZWQgdG8gcmVnaXN0ZXIgYSBQaGFzZS0yIG9yIFBoYXNlLTNcbiAgICAgKiBCYWJ5bG9uIHN0YWtlLiBUaGlzIGluY2x1ZGVzIHRoZSBkZXBvc2l0IGFuZCB1bmJvbmRpbmcgdHJhbnNhY3Rpb25zLFxuICAgICAqIHR3byBzbGFzaGluZyB0cmFuc2FjdGlvbnMsIHRoZSBzbGFzaGluZyBzaWduYXR1cmVzLCBhbmQgdGhlIHByb29mIG9mXG4gICAgICogcG9zc2Vzc2lvbi5cbiAgICAgKlxuICAgICAqIE5vdGUgdGhhdCBpdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGdlbmVyYXRlIHRoaXMgcmVnaXN0cmF0aW9uIGRhdGEgYnlcbiAgICAgKiBtYWtpbmcgZm91ciBjYWxscyB0byB0aGUgQmFieWxvbiBzdGFraW5nIEFQSSwgcGx1cyBvbmUgY2FsbCB0byB0aGVcbiAgICAgKiBQU0JUIHNpZ25pbmcgQVBJIHRvIGdlbmVyYXRlIHRoZSBCSVAtMzIyIHByb29mIG9mIHBvc3Nlc3Npb24uIFRoZVxuICAgICAqIHJlZ2lzdHJhdGlvbiBBUEkgZ2VuZXJhdGVzIHRoZSBzYW1lIGRhdGEgYnV0IGlzIGVhc2llciB0byB1c2UuXG4gICAgICpcbiAgICAgKiBOb3RlIHRoYXQgdGhpcyBhY3Rpb24gY2FuIG9ubHkgYmUgY2FsbGVkIHdpdGggYSBUYXByb290IGtleS4gSWYgeW91clxuICAgICAqIGRlcG9zaXQgdHJhbnNhY3Rpb24gc3BlbmRzIFVUWE9zIHRoYXQgYXJlIGNvbnRyb2xsZWQgYnkgb3RoZXIga2V5cyxcbiAgICAgKiB5b3UgY2FuIHN1Ym1pdCB0aGUgJ2RlcG9zaXQnIFBTQlQgdG8gdGhlIFBTQlQgc2lnbmluZyBBUEkgb25lIG9yIG1vcmVcbiAgICAgKiB0aW1lcyB0byBnZW5lcmF0ZSB0aGUgcmVxdWlyZWQgc2lnbmF0dXJlcy5cbiAgICAgKlxuICAgICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBjb25zdWx0IHRoZVxuICAgICAqIFtCYWJ5bG9uIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9iYWJ5bG9ubGFicy1pby9iYWJ5bG9uL2Jsb2IvcmVsZWFzZS92MS54L2RvY3MvcmVnaXN0ZXItYml0Y29pbi1zdGFrZS5tZCkuXG4gICAgICpcbiAgICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiYmFieWxvblJlZ2lzdHJhdGlvblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2JhYnlsb24vc3Rha2luZy97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBCYWJ5bG9uIFN0YWtpbmcgVHJhbnNhY3Rpb25cbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBCYWJ5bG9uIFN0YWtpbmcgVHJhbnNhY3Rpb25cbiAgICAgKlxuICAgICAqIENyZWF0ZXMgYW5kIHNpZ25zIHRyYW5zYWN0aW9ucyByZWxhdGVkIHRvIEJhYnlsb24gc3Rha2luZyAoaS5lLixcbiAgICAgKiBkZXBvc2l0LCBlYXJseSB1bmJvbmQsIHdpdGhkcmF3YWwpLiBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgUHJlLVNpZ25lZFxuICAgICAqIEJpdGNvaW4gVHJhbnNhY3Rpb24gKFBTQlQpLCBhcyBkZWZpbmVkIGluIEJJUC0xNzQsIHdoaWNoIG1hdGNoZXMgdGhlXG4gICAgICogZm9ybWF0IHVzZWQgaW4gbW9zdCBCYWJ5bG9uIHRvb2xpbmcuXG4gICAgICpcbiAgICAgKiBUaGUgJ2RlcG9zaXQnIGFjdGlvbiBjYW4gYmUgdXNlZCB3aXRoIGVpdGhlciBTZWd3aXQgKGkuZS4sIFNlY3BCdGMvU2VjcEJ0Y1Rlc3QpXG4gICAgICogb3IgVGFwcm9vdCAoaS5lLiwgVGFwcm9vdEJ0Yy9UYXByb290QnRjVGVzdCkga2V5cy4gVGhlIHJlbWFpbmluZyBhY3Rpb25zIGNhbiBiZVxuICAgICAqIHVzZWQgb25seSB3aXRoIFRhcHJvb3Qga2V5cy5cbiAgICAgKlxuICAgICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJiYWJ5bG9uU3Rha2luZ1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2J0Yy9tZXNzYWdlL3NpZ24ve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gYSBCaXRjb2luIG1lc3NhZ2UuXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gYSBCaXRjb2luIG1lc3NhZ2UuXG4gICAgICpcbiAgICAgKiBTaWducyBhIG1lc3NhZ2UgdXNpbmcgQklQMTM3IG1lc3NhZ2Ugc2lnbmluZyB3aXRoIGEgZ2l2ZW4gU2VjcDI1NmsxIGtleS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiYnRjTWVzc2FnZVNpZ25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9idGMvcHNidC9zaWduL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIGEgUGFydGlhbGx5IFNpZ25lZCBCaXRjb2luIFRyYW5zYWN0aW9uIChQU0JUKVxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIGEgUGFydGlhbGx5IFNpZ25lZCBCaXRjb2luIFRyYW5zYWN0aW9uIChQU0JUKVxuICAgICAqXG4gICAgICogU2lnbnMgYWxsIGlucHV0cyBvZiB0aGUgc3VwcGxpZWQgUFNCVCB2MCAoQklQLTE3NCkgdGhhdCBwZXJ0YWluIHRvIHRoZVxuICAgICAqICdwdWJrZXknIHNwZWNpZmllZCBpbiB0aGUgcmVxdWVzdCwgd2hpY2ggY2FuIGJlIGVpdGhlciBhIFRhcHJvb3Qgb3IgYVxuICAgICAqIFNlZ3dpdCBrZXkuIEZvciBTZWd3aXQga2V5cywgQ3ViZVNpZ25lci1zcGVjaWZpYyBkZXRlcm1pbmlzdGljIHR3ZWFraW5nXG4gICAgICogY2FuIGJlIGFwcGxpZWQgdG8gJ3B1YmtleScgYmVmb3JlIHNpZ25pbmcsIG9uIGEgcGVyLWlucHV0IGJhc2lzLiAoU2VlIHRoZVxuICAgICAqIEN1YmVTaWduZXIgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBTZWd3aXQgdHdlYWtpbmcuKVxuICAgICAqXG4gICAgICogV2hlbiBjYWxsaW5nIHdpdGggYSBzZWd3aXQga2V5IHRoZSByZXF1aXJlZCBzY29wZSBpcyAnc2lnbjpidGM6cHNidDpzZWd3aXQnLlxuICAgICAqIEZvciBhIHRhcHJvb3Qga2V5LCB0aGUgc2NvcGUgaXMgJ3NpZ246YnRjOnBzYnQ6dGFwcm9vdCcuIEVpdGhlciB0eXBlIG9mIGtleVxuICAgICAqIGNhbiBiZSB1c2VkIHdpdGggdGhlICdzaWduOmJ0Yzpwc2J0JyBzY29wZS5cbiAgICAgKlxuICAgICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJwc2J0U2lnblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2J0Yy9zaWduL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIEJpdGNvaW4gU2Vnd2l0IFRyYW5zYWN0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gQml0Y29pbiBTZWd3aXQgVHJhbnNhY3Rpb25cbiAgICAgKlxuICAgICAqIFNpZ25zIGEgQml0Y29pbiBTZWd3aXQgdHJhbnNhY3Rpb24gd2l0aCBhIGdpdmVuIGtleS5cbiAgICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiYnRjU2lnblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2J0Yy90YXByb290L3NpZ24ve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gQml0Y29pbiBUYXByb290IFRyYW5zYWN0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gQml0Y29pbiBUYXByb290IFRyYW5zYWN0aW9uXG4gICAgICpcbiAgICAgKiBTaWducyBhIEJpdGNvaW4gVGFwcm9vdCB0cmFuc2FjdGlvbiB3aXRoIGEgZ2l2ZW4ga2V5LlxuICAgICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJidGNUYXByb290U2lnblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2NvbnRhY3RzXCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IENvbnRhY3RzXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3QgQ29udGFjdHNcbiAgICAgKlxuICAgICAqIExpc3QgYWxsIGNvbnRhY3RzIGluIHRoZSBvcmcuXG4gICAgICogQW55IG9yZyBtZW1iZXIgaXMgYWxsb3dlZCB0byBsaXN0IGFsbCBjb250YWN0cyBpbiB0aGUgb3JnLlxuICAgICAqXG4gICAgICogIyMgU2VhcmNoIENvbmRpdGlvblxuICAgICAqIFRoZSBzZWFyY2ggY29uZGl0aW9uIGlzIG9wdGlvbmFsLlxuICAgICAqXG4gICAgICogLSBJZiB0aGUgc2VhcmNoIGNvbmRpdGlvbiBzdGFydHMgd2l0aCBcImxhYmVsOi4uLlwiLCB0aGlzIGxpc3Qgd2lsbCBvbmx5IGhvbGQgY29udGFjdHMgd2l0aFxuICAgICAqIHRoZSBsYWJlbCBwcm92aWRlZCBhZnRlciB0aGUgXCI6XCIuIEZvciBleGFtcGxlLCBcImxhYmVsOmN1YmlzdDplcmMyMF90b2tlblwiIHdvdWxkIHJldHVybiBjb250YWN0cyB0aGF0XG4gICAgICogaG9sZCB0aGUgbGFiZWwgXCJjdWJpc3Q6ZXJjMjBfdG9rZW5cIi5cbiAgICAgKlxuICAgICAqIC0gT3RoZXJ3aXNlLCB0aGUgcmVzdWx0IHdpbGwgY29udGFpbiBvbmx5IHRoZSBjb250YWN0cyB3aG8gaGF2ZSBhbiBhZGRyZXNzIHN0YXJ0aW5nIHdpdGgsIG9yXG4gICAgICogZXF1YWxpbmcsIHRoZSBnaXZlbiBzZWFyY2ggc3RyaW5nLiBGb3IgZXhhbXBsZSwgXCIweGVlXCIgd291bGQgcmV0dXJuIGFsbCBjb250YWN0cyBob2xkaW5nIGFuXG4gICAgICogYWRkcmVzcyBzdGFydGluZyB3aXRoIFwiMHhlZVwiLiBUaGUgc2VhcmNoIGlzIGNhc2UtaW5zZW5zaXRpdmUuXG4gICAgICpcbiAgICAgKiBJZiBhIHNlYXJjaCB0ZXJtIGlzIGRlZmluZWQsIHdlIGRvIG5vdCBndWFyYW50ZWVcbiAgICAgKiB0aGUgbnVtYmVyIG9mIHJlc3VsdHMgaW4gYSBwYWdlLiBUaGUgYmVoYXZpb3Igb2YgdGhpcyBwYXJhbWV0ZXIgbWF5IGNoYW5nZVxuICAgICAqIGluIHRoZSBmdXR1cmUgKGZvciBleGFtcGxlLCBtYWtpbmcgcmVzdWx0cyBtb3JlIHN0cmljdGx5IHBhZ2luYXRlZCBvclxuICAgICAqIHBlcmZvcm1pbmcgYSBmdXp6eSBzZWFyY2ggcmF0aGVyIHRoYW4gYSBwcmVmaXggc2VhcmNoKS5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0Q29udGFjdHNcIl07XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIENvbnRhY3RcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIENvbnRhY3RcbiAgICAgKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgY29udGFjdCBpbiB0aGUgb3JnYW5pemF0aW9uLXdpZGUgYWRkcmVzcyBib29rLiBUaGVcbiAgICAgKiB1c2VyIG1ha2luZyB0aGUgcmVxdWVzdCBpcyB0aGUgb3duZXIgb2YgdGhlIGNvbnRhY3QsIGdpdmluZyB0aGVtIGVkaXQgYWNjZXNzXG4gICAgICogdG8gdGhlIGNvbnRhY3QgYWxvbmcgd2l0aCB0aGUgb3JnIG93bmVycy5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3JlYXRlQ29udGFjdFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2NvbnRhY3RzL2J5LWFkZHJlc3NcIjoge1xuICAgIC8qKlxuICAgICAqIExvb2t1cCBDb250YWN0cyBieSBBZGRyZXNzXG4gICAgICogQGRlc2NyaXB0aW9uIExvb2t1cCBDb250YWN0cyBieSBBZGRyZXNzXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIGFsbCBjb250YWN0cyBpbiB0aGUgb3JnIHRoYXQgaGF2ZSB0aGUgZ2l2ZW4gYWRkcmVzcy5cbiAgICAgKlxuICAgICAqIFdoZW4gcXVlcnlpbmcgd2l0aCBhbiBFVk0gYWRkcmVzcyB3aXRob3V0IGEgY2hhaW4sIHRoaXMgZW5kcG9pbnQgcmV0dXJuc1xuICAgICAqIGNvbnRhY3RzIHdpdGggdGhhdCBhZGRyZXNzIG9uICphbnkqIGNoYWluLCBpbmNsdWRpbmcgdGhvc2Ugd2l0aG91dCBhIGNoYWluXG4gICAgICogZGVmaW5lZC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wibG9va3VwQ29udGFjdHNCeUFkZHJlc3NcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9jb250YWN0cy97Y29udGFjdF9pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIEdldCBDb250YWN0XG4gICAgICogQGRlc2NyaXB0aW9uIEdldCBDb250YWN0XG4gICAgICpcbiAgICAgKiBSZXR1cm5zIHRoZSBwcm9wZXJ0aWVzIG9mIGEgQ29udGFjdC5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJnZXRDb250YWN0XCJdO1xuICAgIC8qKlxuICAgICAqIERlbGV0ZSBDb250YWN0XG4gICAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBDb250YWN0XG4gICAgICpcbiAgICAgKiBEZWxldGUgYSBjb250YWN0LCBzcGVjaWZpZWQgYnkgaXRzIElELlxuICAgICAqXG4gICAgICogT25seSB0aGUgY29udGFjdCBvd25lciBhbmQgb3JnIG93bmVycyBhcmUgYWxsb3dlZCB0byBkZWxldGUgY29udGFjdHMuXG4gICAgICogQWRkaXRpb25hbGx5LCB0aGUgY29udGFjdCdzIGVkaXQgcG9saWN5IChpZiBzZXQpIG11c3QgcGVybWl0IHRoZSBkZWxldGlvbi5cbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJkZWxldGVDb250YWN0XCJdO1xuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBDb250YWN0XG4gICAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBDb250YWN0XG4gICAgICpcbiAgICAgKiBVcGRhdGVzIGFuIGV4aXN0aW5nIGNvbnRhY3QgaW4gdGhlIG9yZ2FuaXphdGlvbi13aWRlIGFkZHJlc3MgYm9vay4gT25seVxuICAgICAqIHRoZSBjb250YWN0IG93bmVyIG9yIGFuIG9yZyBvd25lciBjYW4gdXBkYXRlIGNvbnRhY3RzLlxuICAgICAqXG4gICAgICogKlVwZGF0ZXMgd2lsbCBvdmVyd3JpdGUgdGhlIGV4aXN0aW5nIHZhbHVlIG9mIHRoZSBmaWVsZC4qXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJ1cGRhdGVDb250YWN0XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vY291bnRzXCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgY3VycmVudCBjb3VudHMgb2YgdXNlcnMgYW5kIGtleXMgd2l0aGluIGFuIG9yZy5cbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IGN1cnJlbnQgY291bnRzIG9mIHVzZXJzIGFuZCBrZXlzIHdpdGhpbiBhbiBvcmcuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiY291bnRzXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vZGVyaXZlX2tleVwiOiB7XG4gICAgLyoqXG4gICAgICogRGVyaXZlIEtleSBGcm9tIExvbmctTGl2ZWQgTW5lbW9uaWNcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBkZXNjcmlwdGlvbiBEZXJpdmUgS2V5IEZyb20gTG9uZy1MaXZlZCBNbmVtb25pY1xuICAgICAqXG4gICAgICogRGVyaXZlcyBhIGtleSBvZiBhIHNwZWNpZmllZCB0eXBlIHVzaW5nIGEgc3VwcGxpZWQgZGVyaXZhdGlvbiBwYXRoIGFuZCBhblxuICAgICAqIGV4aXN0aW5nIGxvbmctbGl2ZWQgbW5lbW9uaWMuXG4gICAgICovXG4gICAgcHV0OiBvcGVyYXRpb25zW1wiZGVyaXZlS2V5TGVnYWN5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vZGVyaXZlX2tleXNcIjoge1xuICAgIC8qKlxuICAgICAqIERlcml2ZSBLZXkgRnJvbSBOZXcgT3IgRXhpc3RpbmcgTG9uZy1MaXZlZCBNbmVtb25pY1xuICAgICAqIEBkZXNjcmlwdGlvbiBEZXJpdmUgS2V5IEZyb20gTmV3IE9yIEV4aXN0aW5nIExvbmctTGl2ZWQgTW5lbW9uaWNcbiAgICAgKlxuICAgICAqIFVzZXMgZWl0aGVyIGEgbmV3IG9yIGV4aXN0aW5nIGxvbmctbGl2ZWQgbW5lbW9uaWMgdG8gZGVyaXZlIGtleXMgb2ZcbiAgICAgKiBvbmUgb3IgbW9yZSBzcGVjaWZpZWQgdHlwZXMgdmlhIHNwZWNpZmllZCBkZXJpdmF0aW9uIHBhdGhzLlxuICAgICAqL1xuICAgIHB1dDogb3BlcmF0aW9uc1tcImRlcml2ZUtleVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2RpZmZpZV9oZWxsbWFuL3trZXlfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBDb21wdXRlIERpZmZpZSBIZWxsbWFuIHNoYXJlZCBzZWNyZXRcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29tcHV0ZSBEaWZmaWUgSGVsbG1hbiBzaGFyZWQgc2VjcmV0XG4gICAgICpcbiAgICAgKiBGb3IgYSBzZXQgb2YgZWxsaXB0aWMgY3VydmUgcG9pbnRzIChQXzEsIC4uLiwgUF9pKSwgY29tcHV0ZXMgdGhlIERpZmZpZSBIZWxsbWFuXG4gICAgICogc2hhcmVkIHNlY3JldCAoUV8xLCAuLi4sIFFpKSA9IChzayAqIFBfMSwgLi4uIHNrICogUF9pKSwgZm9yIHNrIHRoZSBzZWNyZXQga2V5LlxuICAgICAqIFBvaW50cyBhcmUgc3BlY2lmaWVkIGluIGEgY3VydmUtZGVwZW5kZW50IGZvcm1hdC4gU2VlIEN1YmVTaWduZXIgZG9jdW1lbnRhdGlvblxuICAgICAqIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICpcbiAgICAgKiBUaGUgdXNlciBjYW4gb3B0aW9uYWxseSBzcGVjaWZ5IGEgTklTVCBQLTI1NiBwdWJsaWMga2V5LCBpbiB3aGljaCBjYXNlIHRoZSByZXN1bHRcbiAgICAgKiB3aWxsIGJlIGVuY3J5cHRlZCB0byB0aGUgcHVibGljIGtleSB1c2luZyBSRkM5MTgwIEhQS0UoUC0yNTYsIEhLREYtU0hBMjU2KSB3aXRoXG4gICAgICogQUVTLTI1Ni1HQ00gYXMgdGhlIHN5bW1ldHJpYyBjaXBoZXIuIEluIHRoaXMgY2FzZSwgdGhlIHJlc3VsdGluZyBjaXBoZXJ0ZXh0IHdpbGxcbiAgICAgKiBjb250YWluIGEgc2VyaWFsaXplZCBKU09OIGJsb2IgY29udGFpbmluZyB0aGUgdmVjdG9yIG9mIHNoYXJlZCBzZWNyZXRzIGluIHRoZSBzYW1lXG4gICAgICogb3JkZXIgdGhleSB3ZXJlIHNwZWNpZmllZCBpbiB0aGUgcmVxdWVzdC5cbiAgICAgKlxuICAgICAqIElmIHRoZSB1c2VyIGRvZXMgbm90IHNwZWNpZnkgYSBwdWJsaWMga2V5LCB0aGUgcmVzdWx0aW5nIHNoYXJlZCBzZWNyZXRzIHdpbGwgYmVcbiAgICAgKiByZXR1cm5lZCB1bmVuY3J5cHRlZC4gSW4gdGhpcyBjYXNlLCB0aGUgY2FsbGVyIHNob3VsZCBzYW1wbGUgYSByYW5kb20gdmFsdWUgclxuICAgICAqIG1vZHVsbyB0aGUgZ3JvdXAgb3JkZXIgYW5kIG1hc2sgdGhlIHJlcXVlc3RlZCBwb2ludHMgYXMgKHIgKiBQXzEsIC4uLiwgciAqIFBfaSkuXG4gICAgICogVGhlIHJlc3VsdCB3aWxsIGJlIChyICogc2sgKiBQXzEsIC4uLiwgciAqIHNrICogUF9pKSwgd2hpY2ggY2FuIGJlIHVubWFza2VkIGJ5XG4gICAgICogZmlyc3QgY29tcHV0aW5nIHJeLTEsIHRoZSBtdWx0aXBsaWNhdGl2ZSBpbnZlcnNlIG9mIHIgbW9kdWxvIHRoZSBncm91cCBvcmRlcixcbiAgICAgKiB0aGVuIGNvbXB1dGluZyBhIHNjYWxhciBtdWx0aXBsaWNhdGlvbiBvZiBlYWNoIHJldHVybmVkIHBvaW50IHdpdGggcl4tMS5cbiAgICAgKlxuICAgICAqIFRoZXJlIGlzIGxpdHRsZSBwcmFjdGljYWwgc2VjdXJpdHkgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZXNlIHR3byBhcHByb2FjaGVzLiBUaGVcbiAgICAgKiBjbGllbnQgaXMgZnJlZSB0byBjaG9vc2UgdGhlIG9uZSB0aGF0IGlzIGVhc2llciBmcm9tIGFuIGltcGxlbWVudGF0aW9uIHBlcnNwZWN0aXZlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJkaWZmaWVIZWxsbWFuRXhjaGFuZ2VcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9lbWFpbHMve3B1cnBvc2V9XCI6IHtcbiAgICBwdXQ6IG9wZXJhdGlvbnNbXCJjb25maWd1cmVFbWFpbFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2V2bS9laXAxOTEvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBFSVAtMTkxIERhdGFcbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBFSVAtMTkxIERhdGFcbiAgICAgKlxuICAgICAqIFNpZ25zIGEgbWVzc2FnZSB1c2luZyBFSVAtMTkxIHBlcnNvbmFsX3NpZ24gd2l0aCBhIGdpdmVuIFNlY3AyNTZrMSBrZXkuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImVpcDE5MVNpZ25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9ldm0vZWlwNzEyL3NpZ24ve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gRUlQLTcxMiBUeXBlZCBEYXRhXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gRUlQLTcxMiBUeXBlZCBEYXRhXG4gICAgICpcbiAgICAgKiBTaWducyB0eXBlZCBkYXRhIGFjY29yZGluZyB0byBFSVAtNzEyIHdpdGggYSBnaXZlbiBTZWNwMjU2azEga2V5LlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJlaXA3MTJTaWduXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vZXhwb3J0L3trZXlfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgYW4gT3JnLUV4cG9ydCBDaXBoZXJ0ZXh0XG4gICAgICogQGRlc2NyaXB0aW9uIEdldCBhbiBPcmctRXhwb3J0IENpcGhlcnRleHRcbiAgICAgKlxuICAgICAqIFJldHVybnMgdGhlIGV4cG9ydCBjaXBoZXJ0ZXh0IGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJvdmlkZWQga2V5LWlkLlxuICAgICAqIEluIG9yZGVyIHRvIHVzZSB0aGlzIEFQSSwgeW91IG11c3QgYmUgYW4gb3JnIG93bmVyIGFuZCB5b3VyIG9yZyBtdXN0XG4gICAgICogYmUgY29uZmlndXJlZCBmb3Igb3JnIGV4cG9ydCBhbmQgZm9yIEFQSS1iYXNlZCBleHBvcnQgZGVsaXZlcnkuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiZ2V0T3JnRXhwb3J0XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vaWRlbnRpdHlcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgYXNzb2NpYXRlZCBPSURDIGlkZW50aXRpZXMgd2l0aCB0aGUgY3VycmVudCB1c2VyLlxuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IGFzc29jaWF0ZWQgT0lEQyBpZGVudGl0aWVzIHdpdGggdGhlIGN1cnJlbnQgdXNlci5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0T2lkY0lkZW50aXRpZXNcIl07XG4gICAgLyoqXG4gICAgICogQXNzb2NpYXRlIGFuIE9JREMgaWRlbnRpdHkgd2l0aCB0aGUgY3VycmVudCB1c2VyIGluIG9yZyA8c2Vzc2lvbi5vcmc+LlxuICAgICAqIEBkZXNjcmlwdGlvbiBBc3NvY2lhdGUgYW4gT0lEQyBpZGVudGl0eSB3aXRoIHRoZSBjdXJyZW50IHVzZXIgaW4gb3JnIDxzZXNzaW9uLm9yZz4uXG4gICAgICpcbiAgICAgKiBBbGllbiB1c2VycyBhcmUgYWxsb3dlZCB0byBjYWxsIHRoaXMgZW5kcG9pbnQsIGJ1dCBmb3IgdGhlbSBNRkEgaXMgcmVxdWlyZWRcbiAgICAgKiAodW5sZXNzIHRoZXkgYXJlIHJlZ2lzdGVyaW5nIGFuIGVtYWlsLW90cCBpZGVudGl0eSBtYXRjaGluZyB0aGVpciBjdXJyZW50IGVtYWlsKTtcbiAgICAgKiBhZGRpdGlvbmFsbHksIGxpbWl0cyBtYXkgYXBwbHkgdG8gaG93IG1hbnkgaWRlbnRpdGllcyB0aGF0IG1heSByZWdpc3Rlci5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiYWRkT2lkY0lkZW50aXR5XCJdO1xuICAgIC8qKlxuICAgICAqIFJlbW92ZSBhbiBPSURDIGlkZW50aXR5IGZyb20gdGhlIGN1cnJlbnQgdXNlcidzIGFjY291bnQgaW4gb3JnIDxzZXNzaW9uLm9yZz4uXG4gICAgICogQGRlc2NyaXB0aW9uIFJlbW92ZSBhbiBPSURDIGlkZW50aXR5IGZyb20gdGhlIGN1cnJlbnQgdXNlcidzIGFjY291bnQgaW4gb3JnIDxzZXNzaW9uLm9yZz4uXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1wicmVtb3ZlT2lkY0lkZW50aXR5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vaWRlbnRpdHkvcHJvdmVcIjoge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBbSWRlbnRpdHlQcm9vZl0gZnJvbSBDdWJlU2lnbmVyIHVzZXIgc2Vzc2lvblxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgW0lkZW50aXR5UHJvb2ZdIGZyb20gQ3ViZVNpZ25lciB1c2VyIHNlc3Npb25cbiAgICAgKlxuICAgICAqIFRoaXMgcm91dGUgY2FuIGJlIHVzZWQgdG8gcHJvdmUgdG8gYW5vdGhlciBwYXJ0eSB0aGF0IGEgdXNlciBoYXMgYVxuICAgICAqIHZhbGlkIEN1YmVTaWduZXIgc2Vzc2lvbi5cbiAgICAgKlxuICAgICAqIENsaWVudHMgYXJlIGludGVuZGVkIHRvIGNhbGwgdGhpcyByb3V0ZSBhbmQgcGFzcyB0aGUgcmV0dXJuZWQgZXZpZGVuY2VcbiAgICAgKiB0byBhbm90aGVyIHNlcnZpY2Ugd2hpY2ggd2lsbCB2ZXJpZnkgaXQgYnkgbWFraW5nIGEgcmVxdWVzdCB0byBgL3YwL29yZy88b3JnX2lkPi9pZGVudGl0eS92ZXJpZnlgLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJjcmVhdGVQcm9vZkN1YmVTaWduZXJcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9pZGVudGl0eS9wcm92ZS9vaWRjXCI6IHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgW0lkZW50aXR5UHJvb2ZdIGZyb20gT0lEQyB0b2tlblxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgW0lkZW50aXR5UHJvb2ZdIGZyb20gT0lEQyB0b2tlblxuICAgICAqXG4gICAgICogRXhjaGFuZ2UgYW4gT0lEQyBJRCB0b2tlbiAocGFzc2VkIHZpYSB0aGUgYEF1dGhvcml6YXRpb25gIGhlYWRlcikgZm9yIGEgcHJvb2Ygb2YgYXV0aGVudGljYXRpb24uXG4gICAgICpcbiAgICAgKiBUaGlzIHJvdXRlIGNhbiBiZSB1c2VkIHRvIHByb3ZlIHRvIGFub3RoZXIgcGFydHkgdGhhdCBhIHVzZXIgaGFzIG1ldCB0aGVcbiAgICAgKiBhdXRoZW50aWNhdGlvbiByZXF1aXJlbWVudHMgKGFsbG93ZWQgaXNzdWVycyAmIGF1ZGllbmNlcykgZm9yIEN1YmVTaWduZXJcbiAgICAgKiB3aXRob3V0IGxlYWtpbmcgdGhlaXIgY3JlZGVudGlhbHMuXG4gICAgICpcbiAgICAgKiBDbGllbnRzIGFyZSBpbnRlbmRlZCB0byBjYWxsIHRoaXMgcm91dGUgYW5kIHBhc3MgdGhlIHJldHVybmVkIGV2aWRlbmNlIHRvIGFub3RoZXIgc2VydmljZVxuICAgICAqIHdoaWNoIHdpbGwgdmVyaWZ5IGl0IGJ5IG1ha2luZyBhIHJlcXVlc3QgdG8gYC92MC9vcmcvPG9yZ19pZD4vaWRlbnRpdHkvdmVyaWZ5YC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3JlYXRlUHJvb2ZPaWRjXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vaWRlbnRpdHkvdmVyaWZ5XCI6IHtcbiAgICAvKipcbiAgICAgKiBWZXJpZnkgaWRlbnRpdHkgcHJvb2ZcbiAgICAgKiBAZGVzY3JpcHRpb24gVmVyaWZ5IGlkZW50aXR5IHByb29mXG4gICAgICpcbiAgICAgKiBBbGxvd3MgYSB0aGlyZC1wYXJ0eSB0byB2YWxpZGF0ZSBwcm9vZiBvZiBhdXRoZW50aWNhdGlvbi5cbiAgICAgKlxuICAgICAqIFdoZW4gYSB0aGlyZC1wYXJ0eSBpcyBwcm92aWRlZCBhbiBbSWRlbnRpdHlQcm9vZl0gb2JqZWN0LCB0aGV5IG11c3QgY2hlY2sgaXRzXG4gICAgICogdmVyYWNpdHkgYnkgY2FsbGluZyB0aGlzIGVuZHBvaW50XG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInZlcmlmeVByb29mXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vaWRwL2F1dGhlbnRpY2F0ZVwiOiB7XG4gICAgLyoqXG4gICAgICogQXV0aGVudGljYXRlXG4gICAgICogQGRlc2NyaXB0aW9uIEF1dGhlbnRpY2F0ZVxuICAgICAqXG4gICAgICogVGhpcyBlbmRwb2ludCBleGNoYW5nZXMgYW4gZW1haWwgJiBwYXNzd29yZCBmb3IgYW4gT0lEQyB0b2tlblxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJpZHBBdXRoZW50aWNhdGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9pZHAvcGFzc3dvcmRfcmVzZXRcIjoge1xuICAgIC8qKlxuICAgICAqIFJlcXVlc3QgUGFzc3dvcmQgUmVzZXRcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBQYXNzd29yZCBSZXNldFxuICAgICAqXG4gICAgICogVGhpcyBlbmRwb2ludCBnZW5lcmF0ZXMgYW4gT0lEQyB0b2tlbiB3aXRob3V0IGEgc2lnbmF0dXJlIChvZiB0aGUgZm9ybSBge2hlYWRlcn0ue3BheWxvYWR9LmApLFxuICAgICAqIGFuZCBzZW5kcyB0aGUgc2lnbmF0dXJlIHRvIHRoZSB1c2VyJ3MgZW1haWwuIENsaWVudCBhcHBsaWNhdGlvbnMgY2FuIHJlY29uc3RydWN0IHRoZSB0b2tlblxuICAgICAqIGJ5IGNvbmNhdGVuYXRpbmcgdGhlIGB7aGVhZGVyfS57cGF5bG9hZH0uYCB3aXRoIHRoZSBzaWduYXR1cmUsIHByb2R1Y2luZyBhIHZhbGlkIE9JREMgdG9rZW4gb2ZcbiAgICAgKiB0aGUgZm9ybSBge2hlYWRlcn0ue3BheWxvYWR9LntzaWduYXR1cmV9YC4gVGhlIHRva2VuIGNhbiB0aGVuIGJlIHVzZWQgdG8gYXV0aGVudGljYXRlIHRoZSB1c2VyXG4gICAgICogd2hlbiBwZXJmb3JtaW5nIHRoZSBgaWRwX3Bhc3N3b3JkX3Jlc2V0X2NvbmZpcm1gIHJlcXVlc3QuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImlkcFBhc3N3b3JkUmVzZXRSZXF1ZXN0XCJdO1xuICAgIC8qKlxuICAgICAqIENvbmZpcm0gUGFzc3dvcmQgUmVzZXRcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29uZmlybSBQYXNzd29yZCBSZXNldFxuICAgICAqXG4gICAgICogVGhpcyBlbmRwb2ludCBhbGxvd3MgSURQIHVzZXJzIHRvIHJlc2V0IHRoZWlyIHBhc3N3b3JkXG4gICAgICogdXNpbmcgYSB0b2tlbiB0aGV5IGhhdmUgcmVjZWl2ZWQgaW4gdGhlaXIgZW1haWwuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJpZHBQYXNzd29yZFJlc2V0Q29uZmlybVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2ltcG9ydF9rZXlcIjoge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBLZXktSW1wb3J0IEtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgS2V5LUltcG9ydCBLZXlcbiAgICAgKlxuICAgICAqIEdlbmVyYXRlIGFuIGVwaGVtZXJhbCBrZXkgdGhhdCBhIGNsaWVudCBjYW4gdXNlIGZvciBrZXktaW1wb3J0IGVuY3J5cHRpb24uXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiY3JlYXRlS2V5SW1wb3J0S2V5XCJdO1xuICAgIC8qKlxuICAgICAqIEltcG9ydCBLZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gSW1wb3J0IEtleVxuICAgICAqXG4gICAgICogU2VjdXJlbHkgaW1wb3J0cyBhbiBleGlzdGluZyBrZXkgdXNpbmcgYSBwcmV2aW91c2x5IGdlbmVyYXRlZCBrZXktaW1wb3J0IGtleS5cbiAgICAgKi9cbiAgICBwdXQ6IG9wZXJhdGlvbnNbXCJpbXBvcnRLZXlcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9pbmZvXCI6IHtcbiAgICAvKipcbiAgICAgKiBQdWJsaWMgT3JnIEluZm9cbiAgICAgKiBAZGVzY3JpcHRpb24gUHVibGljIE9yZyBJbmZvXG4gICAgICpcbiAgICAgKiBVbmF1dGhlbnRpY2F0ZWQgZW5kcG9pbnQgdGhhdCByZXR1cm5zIHB1YmxpY2x5LWF2YWlsYWJsZSBpbmZvcm1hdGlvbiBhYm91dCBhbiBvcmdhbml6YXRpb24uXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wicHVibGljX29yZ19pbmZvXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vaW50ZXJuYWwvY3VzdG9tX2NoYWluX3JwY1wiOiB7XG4gICAgLyoqXG4gICAgICogKElOVEVSTkFMKSBDdXN0b20gY2hhaW4gUlBDIHByb3h5XG4gICAgICogQGRlc2NyaXB0aW9uIChJTlRFUk5BTCkgQ3VzdG9tIGNoYWluIFJQQyBwcm94eVxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJjdXN0b21DaGFpblJwY0NhbGxcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9pbnRlcm5hbC9lc3Bsb3JhXCI6IHtcbiAgICAvKipcbiAgICAgKiAoSU5URVJOQUwpIEVzcGxvcmEgQVBJIFByb3h5XG4gICAgICogQGRlc2NyaXB0aW9uIChJTlRFUk5BTCkgRXNwbG9yYSBBUEkgUHJveHlcbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiZXNwbG9yYUFwaUNhbGxcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9pbnRlcm5hbC9zZW50cnlcIjoge1xuICAgIC8qKlxuICAgICAqIChJTlRFUk5BTCkgQXV0aGVudGljYXRlZCBTZW50cnkgQVBJIFByb3h5XG4gICAgICogQGRlc2NyaXB0aW9uIChJTlRFUk5BTCkgQXV0aGVudGljYXRlZCBTZW50cnkgQVBJIFByb3h5XG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInNlbnRyeUFwaUNhbGxcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9pbnZpdGF0aW9uL2FjY2VwdFwiOiB7XG4gICAgLyoqXG4gICAgICogQWNjZXB0IGFuIGludml0YXRpb25cbiAgICAgKiBAZGVzY3JpcHRpb24gQWNjZXB0IGFuIGludml0YXRpb25cbiAgICAgKlxuICAgICAqIFRoaXMgZW5kcG9pbnQgYWxsb3dzIGlkcCB1c2VycyB0byByZWdpc3RlciB1c2luZyBhIHRva2VuIHRoZXkgaGF2ZSByZWNlaXZlZCBpbiB0aGVpciBlbWFpbFxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJpbnZpdGF0aW9uQWNjZXB0XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vaW52aXRlXCI6IHtcbiAgICAvKipcbiAgICAgKiBJbnZpdGUgVXNlclxuICAgICAqIEBkZXNjcmlwdGlvbiBJbnZpdGUgVXNlclxuICAgICAqXG4gICAgICogQ3JlYXRlcyBhIG5ldyB1c2VyIGluIGFuIGV4aXN0aW5nIG9yZyBhbmQgc2VuZHMgdGhhdCB1c2VyIGFuIGludml0ZSBlbWFpbC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiaW52aXRlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0va2V5c1wiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBLZXlzXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3QgS2V5c1xuICAgICAqXG4gICAgICogR2V0cyB0aGUgbGlzdCBvZiBhY2Nlc3NpYmxlIGtleXMgaW4gYSBnaXZlbiBvcmcgKHRvIG9yZyBvd25lciwgYWxsIG9yZyBrZXlzXG4gICAgICogYXJlIGFjY2Vzc2libGU7IHRvIG1lbWJlcnMsIG9ubHkgdGhlaXIgb3duIGtleXMgYXJlIGFjY2Vzc2libGUpLlxuICAgICAqXG4gICAgICogSWYgYSBzZWFyY2ggY29uZGl0aW9uIGlzLCB0aGUgcmVzdWx0IHdpbGwgY29udGFpbiBvbmx5IHRoZSBrZXlzIHdob3NlIGVpdGhlclxuICAgICAqIG1hdGVyaWFsIElEIG9yIG1ldGFkYXRhIGNvbnRhaW4gdGhlIHNlYXJjaCBjb25kaXRpb24gc3RyaW5nLlxuICAgICAqXG4gICAgICogTk9URSB0aGF0IGlmIHBhZ2luYXRpb24gaXMgdXNlZCBhbmQgYSBwYWdlIGxpbWl0IGlzIHNldCwgdGhlIHJldHVybmVkIHJlc3VsdFxuICAgICAqIHNldCBtYXkgY29udGFpbiBlaXRoZXIgRkVXRVIgb3IgTU9SRSBlbGVtZW50cyB0aGFuIHRoZSByZXF1ZXN0ZWQgcGFnZSBsaW1pdC5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0S2V5c0luT3JnXCJdO1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBLZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIEtleVxuICAgICAqXG4gICAgICogQ3JlYXRlcyBvbmUgb3IgbW9yZSBuZXcga2V5cyBvZiB0aGUgc3BlY2lmaWVkIHR5cGUuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImNyZWF0ZUtleVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2tleXMve2tleV9pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIEdldCBLZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IEtleVxuICAgICAqXG4gICAgICogUmV0dXJucyB0aGUgcHJvcGVydGllcyBvZiBhIGtleS5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJnZXRLZXlJbk9yZ1wiXTtcbiAgICAvKipcbiAgICAgKiBEZWxldGUgS2V5XG4gICAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBLZXlcbiAgICAgKlxuICAgICAqIERlbGV0ZXMgYSBrZXkgc3BlY2lmaWVkIGJ5IGl0cyBJRC5cbiAgICAgKlxuICAgICAqIE9ubHkgdGhlIGtleSBvd25lciBhbmQgb3JnIG93bmVycyBhcmUgYWxsb3dlZCB0byBkZWxldGUga2V5cy5cbiAgICAgKiBBZGRpdGlvbmFsbHksIHRoZSByb2xlJ3MgZWRpdCBwb2xpY3kgKGlmIHNldCkgbXVzdCBwZXJtaXQgdGhlIHVwZGF0ZS5cbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJkZWxldGVLZXlcIl07XG4gICAgLyoqXG4gICAgICogVXBkYXRlIEtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgS2V5XG4gICAgICpcbiAgICAgKiBFbmFibGUgb3IgZGlzYWJsZSBhIGtleS4gIFRoZSB1c2VyIG11c3QgYmUgdGhlIG93bmVyIG9mIHRoZSBrZXkgb3JcbiAgICAgKiBvcmdhbml6YXRpb24gdG8gcGVyZm9ybSB0aGlzIGFjdGlvbi5cbiAgICAgKlxuICAgICAqIEZvciBlYWNoIHJlcXVlc3RlZCB1cGRhdGUsIHRoZSBzZXNzaW9uIG11c3QgaGF2ZSB0aGUgY29ycmVzcG9uZGluZyAnbWFuYWdlOmtleTp1cGRhdGU6Xycgc2NvcGU7XG4gICAgICogaWYgbm8gdXBkYXRlcyBhcmUgcmVxdWVzdGVkLCB0aGUgc2Vzc2lvbiBtdXN0IGhhdmUgJ21hbmFnZTprZXk6Z2V0Jy5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInVwZGF0ZUtleVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2tleXMve2tleV9pZH0vYXR0ZXN0XCI6IHtcbiAgICAvKipcbiAgICAgKiBBdHRlc3QgdG8gS2V5IFByb3BlcnRpZXNcbiAgICAgKiBAZGVzY3JpcHRpb24gQXR0ZXN0IHRvIEtleSBQcm9wZXJ0aWVzXG4gICAgICpcbiAgICAgKiBUaGUgcmVzcG9uc2UgaXMgYSBKV1Qgd2hvc2UgY2xhaW1zIGFyZSB0aGUga2V5IHByb3BlcnRpZXMuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiYXR0ZXN0S2V5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0va2V5cy97a2V5X2lkfS9yb2xlc1wiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBLZXkgUm9sZXNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBLZXkgUm9sZXNcbiAgICAgKlxuICAgICAqIEdldCBhbGwgcm9sZXMgdGhlIGtleSBpcyBpblxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RLZXlSb2xlc1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2tleXMve2tleV9pZH0vdHhcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgSGlzdG9yaWNhbCBUcmFuc2FjdGlvbnNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBIaXN0b3JpY2FsIFRyYW5zYWN0aW9uc1xuICAgICAqXG4gICAgICogUmV0dXJucyBhIHNvcnRlZCwgcGFnaW5hdGVkIGxpc3Qgb2YgdHJhbnNhY3Rpb25zIHNpZ25lZCBieSBhIGdpdmVuIGtleSxcbiAgICAgKiBvcmRlcmVkIGZyb20gbW9zdCByZWNlbnQgZmlyc3QuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibGlzdEhpc3RvcmljYWxLZXlUeFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2tleXMve2tleV90eXBlfS97bWF0ZXJpYWxfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgS2V5IGJ5IE1hdGVyaWFsIElEXG4gICAgICogQGRlc2NyaXB0aW9uIEdldCBLZXkgYnkgTWF0ZXJpYWwgSURcbiAgICAgKlxuICAgICAqIFJldHVybnMgdGhlIHByb3BlcnRpZXMgb2YgYSBrZXkuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiZ2V0S2V5QnlNYXRlcmlhbElkXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vbWV0cmljc1wiOiB7XG4gICAgLyoqXG4gICAgICogUXVlcnkgb3JnIG1ldHJpY3MuXG4gICAgICogQGRlc2NyaXB0aW9uIFF1ZXJ5IG9yZyBtZXRyaWNzLlxuICAgICAqXG4gICAgICogTWV0cmljcyBzdW1tYXJpemUgdXNhZ2UgaW5mb3JtYXRpb24gYWJvdXQgeW91ciBDdWJlU2lnbmVyIG9yZ2FuaXphdGlvbiBvdmVyIHRpbWUuIEZvciBleGFtcGxlLFxuICAgICAqIHlvdSBjYW4gY2FsbCB0aGlzIGVuZHBvaW50IGZpbmQgb3V0OlxuICAgICAqXG4gICAgICogLSB0aGUgYXZlcmFnZSBudW1iZXIgb2Yga2V5cyBvdmVyIHRoZSBsYXN0IG1vbnRoLFxuICAgICAqIC0gdGhlIGF2ZXJhZ2UgbnVtYmVyIG1vbnRobHkgdXNlcnMgb3ZlciB0aGUgbGFzdCB5ZWFyLFxuICAgICAqIC0gdGhlIHRvdGFsIG51bWJlciBvZiB0cmFuc2FjdGlvbnMgc2lnbmVkIGxhc3Qgd2VlayxcbiAgICAgKiAtIGhvdyB0aGUgbnVtYmVyIG9mIGRpZmZlcmVudCBBUEkgcmVxdWVzdHMgd2FzIHRyZW5kaW5nIGRheS1ieS1kYXkgb3ZlciB0aGUgbGFzdCB3ZWVrL21vbnRoL3llYXIsIGV0Yy5cbiAgICAgKlxuICAgICAqIEVhY2ggbWV0cmljIGtpbmQgY2FuIGhhdmUgb25lIG9yIG1vcmUgZGltZW5zaW9ucywgdG8gZnVydGhlciBzcGVjaWZ5IHRoZSBvcmcgcHJvcGVydHkgaXQgZGVzY3JpYmVzLlxuICAgICAqIEZvciBleGFtcGxlLCB0aGUgYFVzZXJDb3VudGAgbWV0cmljcyBoYXZlIGEgbWVtYmVyc2hpcCBkaW1lbnNpb25zIHRvIHNwZWNpZnkgdGhlIGtpbmQgb2YgdXNlciBtZW1iZXJzaGlwXG4gICAgICogaW4gdGhlIG9yZ2FuaXphdGlvbiAoXCJPd25lclwiIHZzLiBcIk1lbWJlclwiIHZzLiBcIkFsaWVuXCIpLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJxdWVyeU1ldHJpY3NcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9tZmFcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgUGVuZGluZyBNRkEgUmVxdWVzdHNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBQZW5kaW5nIE1GQSBSZXF1ZXN0c1xuICAgICAqXG4gICAgICogUmV0cmlldmVzIGFuZCByZXR1cm5zIGFsbCBwZW5kaW5nIE1GQSByZXF1ZXN0cyB0aGF0IGFyZSBhY2Nlc3NpYmxlIHRvIHRoZSBjdXJyZW50IHNlc3Npb24sXG4gICAgICogaS5lLiwgdGhvc2UgY3JlYXRlZCBieSB0aGUgY3VycmVudCBzZXNzaW9uIGlkZW50aXR5IHBsdXMgdGhvc2UgaW4gd2hpY2ggdGhlIGN1cnJlbnQgdXNlclxuICAgICAqIGlzIGxpc3RlZCBhcyBhbiBhcHByb3ZlclxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcIm1mYUxpc3RcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9tZmEve21mYV9pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIEdldCBQZW5kaW5nIE1GQSBSZXF1ZXN0XG4gICAgICogQGRlc2NyaXB0aW9uIEdldCBQZW5kaW5nIE1GQSBSZXF1ZXN0XG4gICAgICpcbiAgICAgKiBSZXRyaWV2ZXMgYW5kIHJldHVybnMgYSBwZW5kaW5nIE1GQSByZXF1ZXN0IGJ5IGl0cyBpZC5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJtZmFHZXRcIl07XG4gICAgLyoqXG4gICAgICogQXBwcm92ZSBvciBSZWplY3QgTUZBIFJlcXVlc3RcbiAgICAgKiBAZGVzY3JpcHRpb24gQXBwcm92ZSBvciBSZWplY3QgTUZBIFJlcXVlc3RcbiAgICAgKlxuICAgICAqIEFwcHJvdmUgb3IgcmVqZWN0IHJlcXVlc3QgYWZ0ZXIgbG9nZ2luZyBpbiB3aXRoIEN1YmVTaWduZXIuXG4gICAgICpcbiAgICAgKiBJZiBhcHByb3ZpbmcsIGFkZHMgdGhlIGN1cnJlbnRseS1sb2dnZWQgdXNlciBhcyBhbiBhcHByb3ZlclxuICAgICAqIG9mIGEgcGVuZGluZyBNRkEgcmVxdWVzdCBvZiB0aGUgW1N0YXR1czo6UmVxdWlyZWRBcHByb3ZlcnNdIGtpbmQuIElmIHRoZSByZXF1aXJlZCBudW1iZXIgb2ZcbiAgICAgKiBhcHByb3ZlcnMgaXMgcmVhY2hlZCwgdGhlIE1GQSByZXF1ZXN0IGlzIGFwcHJvdmVkOyB0aGUgY29uZmlybWF0aW9uIHJlY2VpcHQgY2FuIGJlIHVzZWQgdG9cbiAgICAgKiByZXN1bWUgdGhlIG9yaWdpbmFsIEhUVFAgcmVxdWVzdC5cbiAgICAgKlxuICAgICAqIElmIHJlamVjdGluZywgaW1tZWRpYXRlbHkgZGVsZXRlcyB0aGUgcGVuZGluZyBNRkEgcmVxdWVzdC5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcIm1mYVZvdGVDc1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L21mYS97bWZhX2lkfS9lbWFpbFwiOiB7XG4gICAgLyoqXG4gICAgICogSW5pdGlhdGUgYW4gRW1haWwgT1RQIE1GQSBBcHByb3ZhbC9SZWplY3Rpb25cbiAgICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgYW4gRW1haWwgT1RQIE1GQSBBcHByb3ZhbC9SZWplY3Rpb25cbiAgICAgKlxuICAgICAqIEluaXRpYXRlcyB0aGUgYXBwcm92YWwvcmVqZWN0aW9uIHByb2Nlc3Mgb2YgYW4gTUZBIFJlcXVlc3QgdXNpbmcgRW1haWwgT1RQLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJtZmFFbWFpbEluaXRcIl07XG4gICAgLyoqXG4gICAgICogRmluYWxpemUgYSBFbWFpbCBPVFAgTUZBIEFwcHJvdmFsL1JlamVjdGlvbi5cbiAgICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgYSBFbWFpbCBPVFAgTUZBIEFwcHJvdmFsL1JlamVjdGlvbi5cbiAgICAgKlxuICAgICAqIFRoZSByZXF1ZXN0IHNob3VsZCBjb250YWluIHRoZSBmdWxsIEpXVCBvYnRhaW5lZCBieSBjb25jYXRlbmF0aW5nIHRoZVxuICAgICAqIHBhcnRpYWwgdG9rZW4gcmV0dXJuZWQgYnkgdGhlIGBtZmFfZW1haWxfaW5pdGAgZW5kcG9pbnQgYW5kIHRoZSBzaWduYXR1cmVcbiAgICAgKiBlbWFpbGVkIHRvIHRoZSB1c2VyIGlzc3VpbmcgdGhlIHJlcXVlc3QuXG4gICAgICpcbiAgICAgKiBJZiBhcHByb3ZpbmcsIGFkZHMgYW4gYXBwcm92ZXIgdG8gYSBwZW5kaW5nIE1GQSByZXF1ZXN0LlxuICAgICAqIElmIHRoZSByZXF1aXJlZCBudW1iZXIgb2YgYXBwcm92ZXJzIGlzIHJlYWNoZWQsIHRoZSBNRkEgcmVxdWVzdCBpcyBhcHByb3ZlZDtcbiAgICAgKiB0aGUgY29uZmlybWF0aW9uIHJlY2VpcHQgY2FuIGJlIHVzZWQgdG8gcmVzdW1lIHRoZSBvcmlnaW5hbCBIVFRQIHJlcXVlc3QuXG4gICAgICpcbiAgICAgKiBJZiByZWplY3RpbmcsIGltbWVkaWF0ZWx5IGRlbGV0ZXMgdGhlIHBlbmRpbmcgTUZBIHJlcXVlc3QuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJtZmFWb3RlRW1haWxDb21wbGV0ZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L21mYS97bWZhX2lkfS9maWRvXCI6IHtcbiAgICAvKipcbiAgICAgKiBJbml0aWF0ZSBhIEZJRE8gTUZBIEFwcHJvdmFsL1JlamVjdGlvblxuICAgICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSBhIEZJRE8gTUZBIEFwcHJvdmFsL1JlamVjdGlvblxuICAgICAqXG4gICAgICogSW5pdGlhdGVzIHRoZSBhcHByb3ZhbC9yZWplY3Rpb24gcHJvY2VzcyBvZiBhbiBNRkEgUmVxdWVzdCB1c2luZyBGSURPLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJtZmFGaWRvSW5pdFwiXTtcbiAgICAvKipcbiAgICAgKiBGaW5hbGl6ZSBhIEZJRE8gTUZBIEFwcHJvdmFsL1JlamVjdGlvblxuICAgICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSBhIEZJRE8gTUZBIEFwcHJvdmFsL1JlamVjdGlvblxuICAgICAqXG4gICAgICogSWYgYXBwcm92aW5nLCBhZGRzIGFuIGFwcHJvdmVyIHRvIGEgcGVuZGluZyBNRkEgcmVxdWVzdC5cbiAgICAgKiBJZiB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIGFwcHJvdmVycyBpcyByZWFjaGVkLCB0aGUgTUZBIHJlcXVlc3QgaXMgYXBwcm92ZWQ7XG4gICAgICogdGhlIGNvbmZpcm1hdGlvbiByZWNlaXB0IGNhbiBiZSB1c2VkIHRvIHJlc3VtZSB0aGUgb3JpZ2luYWwgSFRUUCByZXF1ZXN0LlxuICAgICAqXG4gICAgICogSWYgcmVqZWN0aW5nLCBpbW1lZGlhdGVseSBkZWxldGVzIHRoZSBwZW5kaW5nIE1GQSByZXF1ZXN0LlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1wibWZhVm90ZUZpZG9Db21wbGV0ZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L21mYS97bWZhX2lkfS90b3RwXCI6IHtcbiAgICAvKipcbiAgICAgKiBBcHByb3ZlL1JlamVjdCBhIFRPVFAgTUZBIFJlcXVlc3RcbiAgICAgKiBAZGVzY3JpcHRpb24gQXBwcm92ZS9SZWplY3QgYSBUT1RQIE1GQSBSZXF1ZXN0XG4gICAgICpcbiAgICAgKiBJZiBhcHByb3ZpbmcsIGFkZHMgdGhlIGN1cnJlbnQgdXNlciBhcyBhcHByb3ZlciB0byBhIHBlbmRpbmcgTUZBIHJlcXVlc3QgYnlcbiAgICAgKiBwcm92aWRpbmcgVE9UUCBjb2RlLiBJZiB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIGFwcHJvdmVycyBpcyByZWFjaGVkLCB0aGUgTUZBIHJlcXVlc3QgaXNcbiAgICAgKiBhcHByb3ZlZDsgdGhlIGNvbmZpcm1hdGlvbiByZWNlaXB0IGNhbiBiZSB1c2VkIHRvIHJlc3VtZSB0aGUgb3JpZ2luYWwgSFRUUCByZXF1ZXN0LlxuICAgICAqXG4gICAgICogSWYgcmVqZWN0aW5nLCBpbW1lZGlhdGVseSBkZWxldGVzIHRoZSBwZW5kaW5nIE1GQSByZXF1ZXN0LlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1wibWZhVm90ZVRvdHBcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9tbWkvdjMvbWVzc2FnZXNcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgcGVuZGluZyBNTUkgcmVxdWVzdHNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBwZW5kaW5nIE1NSSByZXF1ZXN0c1xuICAgICAqXG4gICAgICogUmV0cmlldmVzIGFuZCByZXR1cm5zIGFsbCBwZW5kaW5nIE1NSSBtZXNzYWdlcyBhY2Nlc3NpYmxlIHRvIHRoZSBjdXJyZW50IHNlc3Npb24gaWRlbnRpdHksIGkuZS4sXG4gICAgICogLSBhIHJvbGUgc2Vzc2lvbiBjYW4gYWNjZXNzIG9ubHkgdGhlIG1lc3NhZ2VzIGNyZWF0ZWQgYnkgdGhhdCByb2xlXG4gICAgICogLSBhIHVzZXIgc2Vzc2lvbiBjYW4gYWNjZXNzIHRoZSBtZXNzYWdlcyBjcmVhdGVkIGJ5IGVpdGhlciB0aGF0IHVzZXIgb3IgYW55IHJvbGUgd2hpY2ggdGhlIHVzZXIgaXMgYSBtZW1iZXIgb2ZcbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJtbWlNZXNzYWdlTGlzdFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L21taS92My9tZXNzYWdlcy97bXNnX2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IGFuIE1NSSByZXF1ZXN0XG4gICAgICogQGRlc2NyaXB0aW9uIEdldCBhbiBNTUkgcmVxdWVzdFxuICAgICAqXG4gICAgICogUmV0cmlldmVzIGEgcGVuZGluZyBNTUkgcmVxdWVzdCBieSBpdHMgSUQuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibW1pTWVzc2FnZUdldFwiXTtcbiAgICAvKipcbiAgICAgKiBEZWxldGUgYW4gTU1JIHJlcXVlc3RcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIGFuIE1NSSByZXF1ZXN0XG4gICAgICpcbiAgICAgKiBSZWplY3RzIGFuIGV4aXN0aW5nIE1NSSByZXF1ZXN0IGFuZCB0aGVuIGRlbGV0ZXMgaXQgZnJvbSB0aGUgZGF0YWJhc2UuXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1wibW1pTWVzc2FnZURlbGV0ZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L21taS92My9tZXNzYWdlcy97bXNnX2lkfS9yZWplY3RcIjoge1xuICAgIC8qKlxuICAgICAqIFJlamVjdCBhbiBNTUkgcmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBSZWplY3QgYW4gTU1JIHJlcXVlc3RcbiAgICAgKlxuICAgICAqIFJlamVjdHMgYSBwZW5kaW5nIE1NSSByZXF1ZXN0LiBUaGUgcmVjb3JkIG9mIHRoZSBNTUkgcmVxdWVzdCBpcyBrZXB0IGluXG4gICAgICogdGhlIGRhdGFiYXNlIHVudGlsIGl0IGV4cGlyZXMgb3IgaXMgZXhwbGljaXRseSBkZWxldGVkLlxuICAgICAqXG4gICAgICogUmV0dXJucyB0aGUgdXBkYXRlZCByZXF1ZXN0IGluZm9ybWF0aW9uLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJtbWlNZXNzYWdlUmVqZWN0XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vbW1pL3YzL21lc3NhZ2VzL3ttc2dfaWR9L3NpZ25cIjoge1xuICAgIC8qKlxuICAgICAqIEFwcHJvdmUgYW5kIHNpZ24gYW4gTU1JIHJlcXVlc3RcbiAgICAgKiBAZGVzY3JpcHRpb24gQXBwcm92ZSBhbmQgc2lnbiBhbiBNTUkgcmVxdWVzdFxuICAgICAqXG4gICAgICogU2lnbnMgYSBwZW5kaW5nIHJlcXVlc3QgdGhhdCB3YXMgZ2VuZXJhdGVkIHRocm91Z2ggdGhlIE1NSSBKU09OIFJQQyBlbmRwb2ludC5cbiAgICAgKiBUaGUgc2lnbmF0dXJlIGlzIHN0b3JlZCB3aXRoIHRoZSBwZW5kaW5nIG1lc3NhZ2UgYW5kIHRoZSB1cGRhdGVkIHJlcXVlc3QgaW5mbyBpcyByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIFRoZSBtZXNzYWdlIHNob3VsZCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIG9yZ2FuaXphdGlvbiB0aGlzIGlzIGNhbGxlZCBmcm9tLFxuICAgICAqIGFuZCB0aGUgdXNlciBzaG91bGQgYmUgdGhlIG93bmVyIG9mIHRoZSBjb3JyZXNwb25kaW5nIG1lc3NhZ2UncyBrZXkuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcIm1taU1lc3NhZ2VTaWduXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vb2F1dGgyL3R3aXR0ZXJcIjoge1xuICAgIC8qKlxuICAgICAqIE1pbnQgYW4gT0lEQyBJRCB0b2tlbiBmb3IgVHdpdHRlclxuICAgICAqIEBkZXNjcmlwdGlvbiBNaW50IGFuIE9JREMgSUQgdG9rZW4gZm9yIFR3aXR0ZXJcbiAgICAgKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gYWN0cyBpZGVudGljYWxseSB0byBUd2l0dGVyJ3MgW2BvYXV0aDIvdG9rZW5gXShodHRwczovL2RldmVsb3Blci50d2l0dGVyLmNvbS9lbi9kb2NzL2F1dGhlbnRpY2F0aW9uL2FwaS1yZWZlcmVuY2UvdG9rZW4pIGVuZHBvaW50LFxuICAgICAqIGJ1dCBleHRlbmRzIHRoZSBvdXRwdXQgd2l0aCBhbiBgaWRfdG9rZW5gLlxuICAgICAqXG4gICAgICogVGhpcyBgaWRfdG9rZW5gIGNhbiB0aGVuIGJlIHVzZWQgd2l0aCBhbnkgQ3ViZVNpZ25lciBlbmRwb2ludCB0aGF0IHJlcXVpcmVzIGFuIE9JREMgdG9rZW4uXG4gICAgICpcbiAgICAgKiA+IFshSU1QT1JUQU5UXVxuICAgICAqID4gVGhpcyBlbmRwb2ludCB3aWxsIGZhaWwgdW5sZXNzIHRoZSBvcmcgaXMgY29uZmlndXJlZCB0byBhbGxvdyB0aGUgaXNzdWVyIGBodHRwczovL3NoaW0ub2F1dGgyLmN1YmlzdC5kZXYvdHdpdHRlcmAgYW5kIGNsaWVudCBJRCBiZWluZyB1c2VkIGZvciBUd2l0dGVyLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJvYXV0aDJUd2l0dGVyXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vb2lkY1wiOiB7XG4gICAgLyoqXG4gICAgICogTG9naW4gd2l0aCBPSURDXG4gICAgICogQGRlc2NyaXB0aW9uIExvZ2luIHdpdGggT0lEQ1xuICAgICAqXG4gICAgICogRXhjaGFuZ2UgYW4gT0lEQyBJRCB0b2tlbiAocGFzc2VkIHZpYSB0aGUgYEF1dGhvcml6YXRpb25gIGhlYWRlcikgZm9yIGEgc2lnbmVyIHNlc3Npb24uXG4gICAgICpcbiAgICAgKiBNRkEgaXMgcmVxdWlyZWQgd2hlbjpcbiAgICAgKiAtIGFuIE1GQSBwb2xpY3kgaXMgZXhwbGljaXRseSBhdHRhY2hlZCB0byB0aGUgdXNlciBsb2dnaW5nIGluXG4gICAgICogKGUuZy4sIGFuIG9yZyBvd25lciBjYW4gZG8gdGhhdCBhdCB1c2VyIGNyZWF0aW9uIHRpbWUgdG8gcmVxdWlyZSBjZXJ0YWluIGtpbmQgb2YgTUZBKVxuICAgICAqIC0gdGhlIHVzZXIgaGFzIGF0IGxlYXN0IDEgTUZBIGZhY3RvciBjb25maWd1cmVkXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcIm9pZGNBdXRoXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vb2lkYy9lbWFpbC1vdHBcIjoge1xuICAgIC8qKlxuICAgICAqIEluaXRpYXRlIGxvZ2luIHZpYSBlbWFpbCB0b2tlblxuICAgICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSBsb2dpbiB2aWEgZW1haWwgdG9rZW5cbiAgICAgKlxuICAgICAqIFRoaXMgZW5kcG9pbnQgZ2VuZXJhdGVzIGFuIE9JREMgdG9rZW4gd2l0aG91dCBhIHNpZ25hdHVyZSAob2YgdGhlIGZvcm0gYGhlYWRlci5wYXlsb2FkLmApLCBhbmQgc2VuZHMgdGhlIHNpZ25hdHVyZSB0byB0aGUgdXNlcidzIGVtYWlsLlxuICAgICAqIENsaWVudCBhcHBsaWNhdGlvbnMgY2FuIHJlY29uc3RydWN0IHRoZSB0b2tlbiBieSBjb25jYXRlbmF0aW5nIHRoZSBgcGFydGlhbF90b2tlbmAgd2l0aCB0aGUgc2lnbmF0dXJlLCBwcm9kdWNpbmcgYSB2YWxpZCBPSURDIHRva2VuIG9mIHRoZSBmb3JtIGBoZWFkZXIucGF5bG9hZC5zaWduYXR1cmVgXG4gICAgICogVGhlIHRva2VuIGNhbiB0aGVuIGJlIHVzZWQgdG8gYXV0aGVudGljYXRlIHRoZSB1c2VyLlxuICAgICAqXG4gICAgICogPiBbIUlNUE9SVEFOVF1cbiAgICAgKiA+IEZvciB0aGlzIGVuZHBvaW50IHRvIHN1Y2NlZWQsIHRoZSBvcmcgbXVzdCBiZSBjb25maWd1cmVkIHRvOlxuICAgICAqID4gMS4gQWxsb3cgdGhlIGlzc3VlciBgaHR0cHM6Ly9zaGltLm9hdXRoMi5jdWJpc3QuZGV2L2VtYWlsLW90cGAgYW5kIGNsaWVudCBJRCBiZWluZyB0aGUgT3JnIElEXG4gICAgICogPiAyLiBIYXZlIGFuIGVtYWlsIHNlbmRlciBjb25maWd1cmVkIGZvciBPVFBzXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImVtYWlsT3RwQXV0aFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L29pZGMvc2l3ZVwiOiB7XG4gICAgLyoqXG4gICAgICogSW5pdGlhdGUgbG9naW4gdmlhIFNpZ24taW4gV2l0aCBFdGhlcmV1bSAoU0lXRSkuXG4gICAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIGxvZ2luIHZpYSBTaWduLWluIFdpdGggRXRoZXJldW0gKFNJV0UpLlxuICAgICAqXG4gICAgICogVGhpcyBlbmRwb2ludCBnZW5lcmF0ZXMgYSBjaGFsbGVuZ2Ugd2hpY2ggY2FuIGJlIGFuc3dlcmVkICh2aWEgdGhlIGNvcnJlc3BvbmRpbmcgUEFUQ0ggZW5kcG9pbnQpXG4gICAgICogdG8gb2J0YWluIGFuIE9JREMgdG9rZW4uIFRoZSBPSURDIHRva2VuIGNhbiB0aGVuIGJlIGV4Y2hhbmdlZCBmb3IgYSB1c2VyIHNlc3Npb24gdmlhIHRoZSBzdGFuZGFyZFxuICAgICAqIE9JREMgYXV0aCByb3V0ZS5cbiAgICAgKlxuICAgICAqID4gWyFJTVBPUlRBTlRdXG4gICAgICogPiBGb3IgdGhpcyBlbmRwb2ludCB0byBzdWNjZWVkLCB0aGUgb3JnIG11c3QgYmUgY29uZmlndXJlZCB0bzpcbiAgICAgKiA+IEFsbG93IHRoZSBpc3N1ZXIgYGh0dHBzOi8vc2hpbS5vYXV0aDIuY3ViaXN0LmRldi9zaXdlYCB3aXRoIHRoZSBPcmcgSUQgYXMgdGhlIGNsaWVudCBJRFxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJzaXdlSW5pdFwiXTtcbiAgICAvKipcbiAgICAgKiBDb21wbGV0ZSBsb2dpbiB2aWEgU2lnbi1pbiBXaXRoIEV0aGVyZXVtIChTSVdFKVxuICAgICAqIEBkZXNjcmlwdGlvbiBDb21wbGV0ZSBsb2dpbiB2aWEgU2lnbi1pbiBXaXRoIEV0aGVyZXVtIChTSVdFKVxuICAgICAqXG4gICAgICogSWYgdGhlIGNoYWxsZW5nZSAoaXNzdWVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIFBPU1QgZW5kcG9pbnQpIGlzIGFuc3dlcmVkIGNvcnJlY3RseSwgdGhpcyBlbmRwb2ludFxuICAgICAqIGdlbmVyYXRlcyBhbiBPSURDIHRva2VuIHRoYXQgY2FuIHRoZW4gYmUgZXhjaGFuZ2VkIGZvciBhIHVzZXIgc2Vzc2lvbiB2aWEgdGhlIHN0YW5kYXJkIE9JREMgYXV0aCByb3V0ZS5cbiAgICAgKlxuICAgICAqID4gWyFJTVBPUlRBTlRdXG4gICAgICogPiBGb3IgdGhpcyBlbmRwb2ludCB0byBzdWNjZWVkLCB0aGUgb3JnIG11c3QgYmUgY29uZmlndXJlZCB0bzpcbiAgICAgKiA+IEFsbG93IHRoZSBpc3N1ZXIgYGh0dHBzOi8vc2hpbS5vYXV0aDIuY3ViaXN0LmRldi9zaXdlYCB3aXRoIHRoZSBPcmcgSUQgYXMgdGhlIGNsaWVudCBJRFxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1wic2l3ZUNvbXBsZXRlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vb2lkYy90ZWxlZ3JhbVwiOiB7XG4gICAgLyoqXG4gICAgICogQWxsb3dzIGEgdXNlciB0byBhdXRoZW50aWNhdGUgd2l0aCB0aGUgdGVsZWdyYW0gQVBJIHVzaW5nIHRoZSB0Z1dlYkFwcERhdGEgdmFsdWVcbiAgICAgKiBAZGVzY3JpcHRpb24gQWxsb3dzIGEgdXNlciB0byBhdXRoZW50aWNhdGUgd2l0aCB0aGUgdGVsZWdyYW0gQVBJIHVzaW5nIHRoZSB0Z1dlYkFwcERhdGEgdmFsdWVcbiAgICAgKiBUaGUgdG9rZW4gaGFzIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAgICAgKiAtIFRoZSBgc3ViYCBmaWVsZCBpcyB0aGUgdGVsZWdyYW0gdXNlciBJRFxuICAgICAqIC0gVGhlIGBpc3NgIGZpZWxkIGRlcGVuZHMgb24gdGhlIGNob3NlbiBlbnZpcm9ubWVudDpcbiAgICAgKiAtIGBodHRwczovL3NoaW0ub2F1dGgyLmN1YmlzdC5kZXYvdGVsZWdyYW0vcHJvZHVjdGlvbmAgZm9yIHRoZSBwcm9kdWN0aW9uIGVudmlyb25tZW50XG4gICAgICogLSBgaHR0cHM6Ly9zaGltLm9hdXRoMi5jdWJpc3QuZGV2L3RlbGVncmFtL3Rlc3RgIGZvciB0aGUgdGVzdCBlbnZpcm9ubWVudFxuICAgICAqIC0gVGhlIGBhdWRgIGZpZWxkIGlzIHRoZSBwcm92aWRlZCB0ZWxlZ3JhbSBib3QgSURcbiAgICAgKiAtIFRoZSBgZXhwYCBmaWVsZCBpcyBkZXJpdmVkIGZyb20gdGhlIGBhdXRoX2RhdGVgIGZpZWxkIGluIHRoZSB0ZWxlZ3JhbSBkYXRhXG4gICAgICpcbiAgICAgKiBGYWlscyBpZiB0aGUgdGVsZWdyYW0gZGF0YSBpcyBpbnZhbGlkIG9yIHRoZSBzaWduYXR1cmUgaXMgaW52YWxpZFxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJ0ZWxlZ3JhbUF1dGhcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9vcmdzXCI6IHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgT3JnXG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBPcmdcbiAgICAgKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgb3JnYW5pemF0aW9uLiBUaGUgbmV3IG9yZyBpcyBhIGNoaWxkIG9mIHRoZVxuICAgICAqIGN1cnJlbnQgb3JnIGFuZCBpbmhlcml0cyBpdHMga2V5LWV4cG9ydCBwb2xpY3kuIFRoZSBuZXcgb3JnXG4gICAgICogaXMgY3JlYXRlZCB3aXRoIG9uZSBvd25lciwgdGhlIGNhbGxlciBvZiB0aGlzIEFQSS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3JlYXRlT3JnXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcG9saWNpZXNcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgUG9saWNpZXNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBQb2xpY2llc1xuICAgICAqXG4gICAgICogUmV0dXJucyB0aGUgbGlzdCBvZiBhbGwgcG9saWNpZXMgaW4gdGhlIE9yZy5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0UG9saWNpZXNcIl07XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIFBvbGljeVxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgUG9saWN5XG4gICAgICpcbiAgICAgKiBDcmVhdGVzIGEgbmV3IG5hbWVkIHBvbGljeSBpbiB0aGUgb3JnYW5pemF0aW9uLiBUaGUgdXNlciBtYWtpbmcgdGhlIHJlcXVlc3QgaXMgdGhlXG4gICAgICogb3duZXIgb2YgdGhlIHBvbGljeSwgZ2l2aW5nIHRoZW0gZWRpdCBhY2Nlc3MgdG8gdGhlIHBvbGljeSBhbG9uZyB3aXRoIHRoZSBvcmcgb3duZXJzLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJjcmVhdGVQb2xpY3lcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9wb2xpY2llcy97cG9saWN5X2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogRGVsZXRlIFBvbGljeVxuICAgICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgUG9saWN5XG4gICAgICpcbiAgICAgKiBEZWxldGUgdGhlIG5hbWVkIHBvbGljeSB3aXRoIHRoZSBnaXZlbiBuYW1lIG9yIGlkLlxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcImRlbGV0ZVBvbGljeVwiXTtcbiAgICAvKipcbiAgICAgKiBVcGRhdGUgUG9saWN5XG4gICAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBQb2xpY3lcbiAgICAgKlxuICAgICAqIFVwZGF0ZXMgdGhlIHBvbGljeSB3aXRoIHRoZSBnaXZlbiBuYW1lIG9yIGlkLlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1widXBkYXRlUG9saWN5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcG9saWNpZXMve3BvbGljeV9pZH0vbG9nc1wiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IFBvbGljeSBMb2dzXG4gICAgICogQGRlc2NyaXB0aW9uIEdldCBQb2xpY3kgTG9nc1xuICAgICAqXG4gICAgICogUmV0dXJucyB0aGUgbG9ncyBmb3IgdGhlIGdpdmVuIHBvbGljeSwgd2l0aGluIHRoZSBnaXZlbiB0aW1lZnJhbWUuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImdldFBvbGljeUxvZ3NcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9wb2xpY2llcy97cG9saWN5X2lkfS97dmVyc2lvbn1cIjoge1xuICAgIC8qKlxuICAgICAqIEdldCBQb2xpY3lcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IFBvbGljeVxuICAgICAqXG4gICAgICogUmV0dXJucyB0aGUgc3BlY2lmaWVkIHZlcnNpb24gb3IgbGF0ZXN0IG9mIGEgbmFtZWQgcG9saWN5IHdpdGggdGhlIGdpdmVuIG5hbWUgb3IgaWQuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiZ2V0UG9saWN5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcG9saWNpZXMve3BvbGljeV9pZH0ve3ZlcnNpb259L2ludm9rZVwiOiB7XG4gICAgLyoqXG4gICAgICogSW52b2tlIFBvbGljeVxuICAgICAqIEBkZXNjcmlwdGlvbiBJbnZva2UgUG9saWN5XG4gICAgICpcbiAgICAgKiBJbnZva2VzIHRoZSBbTmFtZWRQb2xpY3ldIHdpdGggdGhlIGdpdmVuIElEIHdpdGggdGhlIGdpdmVuIHJlcXVlc3QgaW5mb3JtYXRpb24uXG4gICAgICogSXQgaXMgb25seSBzdXBwb3J0ZWQgZm9yIFdhc20gcG9saWNpZXMuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImludm9rZVBvbGljeVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3BvbGljeS9pbXBvcnRfa2V5XCI6IHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgUG9saWN5IEltcG9ydCBLZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIFBvbGljeSBJbXBvcnQgS2V5XG4gICAgICpcbiAgICAgKiBHZW5lcmF0ZSBhbiBlcGhlbWVyYWwga2V5IHRoYXQgYSBjbGllbnQgY2FuIHVzZSBmb3IgZW5jcnlwdGluZyBkYXRhIHJlbGF0ZWQgdG8gV2FzbVxuICAgICAqIHBvbGljaWVzIChlLmcuLCBwb2xpY3kgc2VjcmV0cykuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiY3JlYXRlUG9saWN5SW1wb3J0S2V5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcG9saWN5L3NlY3JldHNcIjoge1xuICAgIC8qKlxuICAgICAqIEdldCB0aGUgb3JnLXdpZGUgcG9saWN5IHNlY3JldHMuXG4gICAgICogQGRlc2NyaXB0aW9uIEdldCB0aGUgb3JnLXdpZGUgcG9saWN5IHNlY3JldHMuXG4gICAgICpcbiAgICAgKiBOb3RlIHRoYXQgdGhpcyBvbmx5IHJldHVybnMgdGhlIGtleXMgZm9yIHRoZSBzZWNyZXRzLCBvbWl0aW5nIHRoZSB2YWx1ZXMuXG4gICAgICogVGhlIHZhbHVlcyBhcmUgc2VjcmV0IGFuZCBhcmUgbm90IGFjY2Vzc2libGUgb3V0c2lkZSBXYXNtIHBvbGljeSBleGVjdXRpb24uXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiZ2V0UG9saWN5U2VjcmV0c1wiXTtcbiAgICAvKipcbiAgICAgKiBVcGRhdGUgb3JnLWxldmVsIHBvbGljeSBzZWNyZXRzXG4gICAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBvcmctbGV2ZWwgcG9saWN5IHNlY3JldHNcbiAgICAgKlxuICAgICAqIFRoZSBwcm92aWRlZCBzZWNyZXRzIHdpbGwgcmVwbGFjZSBhbnkgZXhpc3Rpbmcgb3JnLWxldmVsIHNlY3JldHMuXG4gICAgICogSXQgZmFpbHMgaWYgdGhlIHNlY3JldHMgd2VyZW4ndCBwcmV2aW91c2x5IGNyZWF0ZWQuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJ1cGRhdGVQb2xpY3lTZWNyZXRzXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcG9saWN5L3NlY3JldHMve3NlY3JldF9uYW1lfVwiOiB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIG9yIG92ZXJ3cml0ZSBhbiBvcmctbGV2ZWwgcG9saWN5IHNlY3JldFxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgb3Igb3ZlcndyaXRlIGFuIG9yZy1sZXZlbCBwb2xpY3kgc2VjcmV0XG4gICAgICovXG4gICAgcHV0OiBvcGVyYXRpb25zW1wic2V0UG9saWN5U2VjcmV0XCJdO1xuICAgIC8qKlxuICAgICAqIERlbGV0ZSBhbiBvcmctbGV2ZWwgcG9saWN5IHNlY3JldFxuICAgICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgYW4gb3JnLWxldmVsIHBvbGljeSBzZWNyZXRcbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJkZWxldGVQb2xpY3lTZWNyZXRcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9wb2xpY3kvd2FzbVwiOiB7XG4gICAgLyoqXG4gICAgICogVXBsb2FkIFdhc20gUG9saWN5XG4gICAgICogQGRlc2NyaXB0aW9uIFVwbG9hZCBXYXNtIFBvbGljeVxuICAgICAqXG4gICAgICogUmV0dXJucyBhIHNpZ25lZCBVUkwgZm9yIHVwbG9hZGluZyBhIHdhc20gcG9saWN5IHRvIEN1YmVTaWduZXIuIFRoZSBwb2xpY3kgd2lsbCBiZVxuICAgICAqIGRlbGV0ZWQgaWYgbm90IGF0dGFjaGVkIHRvIGEgW05hbWVkUG9saWN5XSBzb29uIGFmdGVyIHRoZSB1cGxvYWQgaGFzIGJlZW4gY29tcGxldGVkLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJ1cGxvYWRXYXNtUG9saWN5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXNcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgUm9sZXNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBSb2xlc1xuICAgICAqXG4gICAgICogUmV0cmlldmVzIGFsbCByb2xlcyBpbiBhbiBvcmdhbml6YXRpb24gdGhhdCB0aGUgY3VycmVudCB1c2VyIGlzIGFsbG93ZWQgdG8gYWNjZXNzLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RSb2xlc1wiXTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgUm9sZVxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgUm9sZVxuICAgICAqXG4gICAgICogQ3JlYXRlcyBhIG5ldyByb2xlIGluIGFuIG9yZ2FuaXphdGlvbi4gVW5sZXNzIHRoZSBsb2dnZWQtaW4gdXNlclxuICAgICAqIGlzIHRoZSBvd25lciwgdGhleSBhcmUgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgbmV3bHkgY3JlYXRlZCByb2xlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJjcmVhdGVSb2xlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXMve3JvbGVfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgUm9sZVxuICAgICAqIEBkZXNjcmlwdGlvbiBHZXQgUm9sZVxuICAgICAqXG4gICAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IGEgcm9sZSBpbiBhbiBvcmdhbml6YXRpb25cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJnZXRSb2xlXCJdO1xuICAgIC8qKlxuICAgICAqIERlbGV0ZSBSb2xlXG4gICAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBSb2xlXG4gICAgICpcbiAgICAgKiBEZWxldGVzIGEgcm9sZSBpbiBhbiBvcmdhbml6YXRpb24uXG4gICAgICpcbiAgICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIGNhbiBwZXJmb3JtIHRoaXMgYWN0aW9uLlxuICAgICAqIEFkZGl0aW9uYWxseSwgdGhlIHJvbGUncyBlZGl0IHBvbGljeSAoaWYgc2V0KSBtdXN0IHBlcm1pdCB0aGUgdXBkYXRlLlxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcImRlbGV0ZVJvbGVcIl07XG4gICAgLyoqXG4gICAgICogVXBkYXRlIFJvbGVcbiAgICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlIFJvbGVcbiAgICAgKlxuICAgICAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgYSByb2xlICh0aGlzIHJlcXVpcmVzIHRoZSBgbWFuYWdlOnJvbGU6dXBkYXRlOmVuYWJsZWAgc2NvcGUpLlxuICAgICAqIFVwZGF0ZXMgdGhlIHJvbGUncyBwb2xpY2llcyAodGhpcyByZXF1aXJlcyB0aGUgYG1hbmFnZTpyb2xlOnVwZGF0ZTpwb2xpY3lgIHNjb3BlKS5cbiAgICAgKiBVcGRhdGVzIHRoZSByb2xlJ3MgZWRpdCBwb2xpY2llcyAodGhpcyByZXF1aXJlcyB0aGUgYG1hbmFnZTpyb2xlOnVwZGF0ZTplZGl0UG9saWN5YCBzY29wZSkuXG4gICAgICpcbiAgICAgKiBUaGUgdXNlciBtdXN0IGJlIGluIHRoZSByb2xlIG9yIGFuIG93bmVyIG9mIHRoZSBvcmdhbml6YXRpb24uXG4gICAgICogQWRkaXRpb25hbGx5LCB0aGUgcm9sZSdzIGVkaXQgcG9saWN5IChpZiBzZXQpIG11c3QgcGVybWl0IHRoZSB1cGRhdGUuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJ1cGRhdGVSb2xlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXMve3JvbGVfaWR9L2FkZF9rZXlzXCI6IHtcbiAgICAvKipcbiAgICAgKiBBZGQgS2V5c1xuICAgICAqIEBkZXNjcmlwdGlvbiBBZGQgS2V5c1xuICAgICAqXG4gICAgICogQWRkcyBhIGxpc3Qgb2YgZXhpc3Rpbmcga2V5cyB0byBhbiBleGlzdGluZyByb2xlLlxuICAgICAqXG4gICAgICogVGhlIGtleSBvd25lciBpcyBhbGxvd2VkIHRvIGFkZCB0aGVpciBrZXkgdG8gYW55IHJvbGUgdGhhdCB0aGV5IGFyZSBpbi5cbiAgICAgKlxuICAgICAqIEluIFwib3JnIGN1c3RvZHlcIiBtb2RlbCBvbmx5LCBvcmcgb3duZXJzIGFyZSBhbGxvd2VkIHRvIGFkZCBhbnkga2V5IHRvIGFueSByb2xlLlxuICAgICAqXG4gICAgICogSW4gYWxsIGNhc2VzOiB0aGUgcm9sZSdzIGVkaXQgcG9saWN5LCBhcyB3ZWxsIGFzIHRoZSBlZGl0IHBvbGljeSBvZiBlYWNoIG9mIHRoZSBrZXlzLCBtdXN0IHBlcm1pdCB0aGUgdXBkYXRlLlxuICAgICAqXG4gICAgICogRWFjaCByZXF1ZXN0IHRvIHRoaXMgZW5kcG9pbnQgY2FuIGFkZCwgYXQgbWF4aW11bSwgMzIga2V5cy5cbiAgICAgKi9cbiAgICBwdXQ6IG9wZXJhdGlvbnNbXCJhZGRLZXlzVG9Sb2xlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXMve3JvbGVfaWR9L2FkZF91c2VyL3t1c2VyX2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogQWRkIFVzZXJcbiAgICAgKiBAZGVzY3JpcHRpb24gQWRkIFVzZXJcbiAgICAgKlxuICAgICAqIEFkZHMgYW4gZXhpc3RpbmcgdXNlciB0byBhbiBleGlzdGluZyByb2xlLlxuICAgICAqXG4gICAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBvciBvcmcgb3duZXJzIGNhbiBhZGQgdXNlcnMgdG8gYSByb2xlLlxuICAgICAqIEFkZGl0aW9uYWxseSwgdGhlIHJvbGUncyBlZGl0IHBvbGljeSAoaWYgc2V0KSBtdXN0IHBlcm1pdCB0aGUgdXBkYXRlLlxuICAgICAqL1xuICAgIHB1dDogb3BlcmF0aW9uc1tcImFkZFVzZXJUb1JvbGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9yb2xlcy97cm9sZV9pZH0va2V5c1wiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBSb2xlIEtleXNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBSb2xlIEtleXNcbiAgICAgKlxuICAgICAqIFJldHVybnMgYW4gYXJyYXkgb2YgYWxsIGtleXMgaW4gYSByb2xlLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RSb2xlS2V5c1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzL3tyb2xlX2lkfS9rZXlzL3trZXlfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgYSBLZXkgaW4gUm9sZVxuICAgICAqIEBkZXNjcmlwdGlvbiBHZXQgYSBLZXkgaW4gUm9sZVxuICAgICAqXG4gICAgICogUmV0dXJucyB0aGUga2V5LWluLXJvbGUgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZW4ga2V5IGFuZCByb2xlLiBJZiBgZGV0YWlsc2AgaXMgc2V0IHRvIGB0cnVlYCxcbiAgICAgKiB0aGlzIGVuZHBvaW50IHJldHVybnMgZGV0YWlsZWQga2V5IGluZm9ybWF0aW9uLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImdldFJvbGVLZXlcIl07XG4gICAgLyoqXG4gICAgICogUmVtb3ZlIEtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBSZW1vdmUgS2V5XG4gICAgICpcbiAgICAgKiBSZW1vdmVzIGEgZ2l2ZW4ga2V5IGZyb20gYSByb2xlLlxuICAgICAqXG4gICAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBvciBvcmcgb3duZXJzIGNhbiByZW1vdmUga2V5cyBmcm9tIGEgcm9sZS5cbiAgICAgKiBBZGRpdGlvbmFsbHksIGJvdGggdGhlIHJvbGUncyBhbmQgdGhlIGtleSdzIGVkaXQgcG9saWN5IG11c3QgcGVybWl0IHRoZSB1cGRhdGUuXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1wicmVtb3ZlS2V5RnJvbVJvbGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9yb2xlcy97cm9sZV9pZH0vdG9rZW5zXCI6IHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgVG9rZW5cbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIFRva2VuXG4gICAgICpcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGFjY2VzcyB0b2tlbiBmb3IgYSBnaXZlbiByb2xlICh0byBiZSB1c2VkIGFzIFwiQVBJIEtleVwiIGZvciBhbGwgc2lnbmluZyBhY3Rpb25zKS5cbiAgICAgKiBUaGUgYHJlc3RyaWN0ZWRfYWN0aW9uc2AgZmllbGQgb24gdGhlIFtSb2xlXSBkZXRlcm1pbmVzIHRoZSBtZW1iZXJzaGlwIHJvbGUgdGhhdCBpcyByZXF1aXJlZCB0b1xuICAgICAqIGNyZWF0ZSB0b2tlbnMuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImNyZWF0ZVJvbGVUb2tlblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzL3tyb2xlX2lkfS90eFwiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBIaXN0b3JpY2FsIFRyYW5zYWN0aW9uc1xuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IEhpc3RvcmljYWwgVHJhbnNhY3Rpb25zXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIGEgc29ydGVkLCBwYWdpbmF0ZWQgbGlzdCBvZiB0cmFuc2FjdGlvbnMgc2lnbmVkIGJ5IHRoZSBnaXZlbiByb2xlLFxuICAgICAqIG9yZGVyZWQgZnJvbSBtb3N0IHJlY2VudCBmaXJzdC5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0SGlzdG9yaWNhbFJvbGVUeFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzL3tyb2xlX2lkfS91c2Vyc1wiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBSb2xlIFVzZXJzLlxuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IFJvbGUgVXNlcnMuXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIGFsbCB1c2VycyB3aG8gaGF2ZSBhY2Nlc3MgdG8gYSByb2xlLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RSb2xlVXNlcnNcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9yb2xlcy97cm9sZV9pZH0vdXNlcnMve3VzZXJfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBSZW1vdmUgVXNlclxuICAgICAqIEBkZXNjcmlwdGlvbiBSZW1vdmUgVXNlclxuICAgICAqXG4gICAgICogUmVtb3ZlcyBhbiBleGlzdGluZyB1c2VyIGZyb20gYW4gZXhpc3Rpbmcgcm9sZS5cbiAgICAgKlxuICAgICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgb3Igb3JnIG93bmVycyBjYW4gcmVtb3ZlIHVzZXJzIGZyb20gYSByb2xlLlxuICAgICAqIEFkZGl0aW9uYWxseSwgdGhlIHJvbGUncyBlZGl0IHBvbGljeSAoaWYgc2V0KSBtdXN0IHBlcm1pdCB0aGUgdXBkYXRlLlxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcInJlbW92ZVVzZXJGcm9tUm9sZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3Nlc3Npb25cIjoge1xuICAgIC8qKlxuICAgICAqIExpc3Qgc2Vzc2lvbnNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBzZXNzaW9uc1xuICAgICAqXG4gICAgICogSWYgbm8gcXVlcnkgcGFyYW1ldGVycyBhcmUgcHJvdmlkZWQsIGFsbCBhY3RpdmUgc2Vzc2lvbnMgZm9yIHRoZSBjdXJyZW50IHVzZXIgYXJlIHJldHVybmVkLlxuICAgICAqXG4gICAgICogSWYgYSBgcm9sZWAgcXVlcnkgcGFyYW1ldGVyIGlzIHByb3ZpZGVkLCBhbGwgYWN0aXZlIHNlc3Npb25zIGZvciB0aGUgc2VsZWN0ZWQgcm9sZSBhcmUgcmV0dXJuZWRcbiAgICAgKiAoYXNzZXJ0aW5nIGZpcnN0IHRoYXQgdGhlIGN1cnJlbnQgdXNlciBoYXMgcGVybWlzc2lvbnMgdG8gcmVhZCBzZXNzaW9ucyBmb3IgdGhhdCByb2xlKS5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0U2Vzc2lvbnNcIl07XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIG5ldyB1c2VyIHNlc3Npb24gKG1hbmFnZW1lbnQgYW5kL29yIHNpZ25pbmcpXG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBuZXcgdXNlciBzZXNzaW9uIChtYW5hZ2VtZW50IGFuZC9vciBzaWduaW5nKVxuICAgICAqXG4gICAgICogQ3JlYXRlcyBhIG5ldyB1c2VyIHNlc3Npb24sIHNpbGVudGx5IHRydW5jYXRpbmcgcmVxdWVzdGVkIHNlc3Npb24gYW5kIGF1dGggbGlmZXRpbWVzIHRvIGJlIGF0XG4gICAgICogbW9zdCByZXF1ZXN0b3IncyBzZXNzaW9uIGFuZCBhdXRoIGxpZmV0aW1lLCByZXNwZWN0aXZlbHkuIFRvIGV4dGVuZCB0aGUgcmVxdWVzdGVkIGxpZmV0aW1lcyBwYXN0XG4gICAgICogdGhlIHJlcXVlc3RvcidzLCBzZXQgdGhlIGBleHRlbmRfbGlmZXRpbWVzYCBmbGFnIGluIHRoZSByZXF1ZXN0IGJvZHkgKGluIHdoaWNoIGNhc2UgTUZBIHdpbGxcbiAgICAgKiBiZSByZXF1aXJlZCkuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImNyZWF0ZVNlc3Npb25cIl07XG4gICAgLyoqXG4gICAgICogUmV2b2tlIEFMTCBleGlzdGluZyB1c2VyIG9yIHJvbGUgc2Vzc2lvbihzKVxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXZva2UgQUxMIGV4aXN0aW5nIHVzZXIgb3Igcm9sZSBzZXNzaW9uKHMpXG4gICAgICpcbiAgICAgKiBJbW1lZGlhdGVseSByZXZva2VzIGV4aXN0aW5nIHNlc3Npb25zLCBwcmV2ZW50aW5nIHRoZW0gZnJvbSBiZWluZyB1c2VkIG9yIHJlZnJlc2hlZC5cbiAgICAgKlxuICAgICAqIElmIG5vIHF1ZXJ5IHBhcmFtcyBhcmUgcHJvdmlkZWQsICoqQUxMKiogc2Vzc2lvbnMgZm9yIHRoZSAqKkNVUlJFTlQgVVNFUioqIGFyZSByZXZva2VkXG4gICAgICogKHRvIHJldm9rZSBqdXN0IHRoZSBjdXJyZW50IHVzZXIgc2Vzc2lvbiwgdXNlIGBERUxFVEUgL3YwL29yZy88b3JnX2lkPi9zZXNzaW9uL3NlbGZgKVxuICAgICAqXG4gICAgICogSWYgYSBgcm9sZWAgcXVlcnkgcGFyYW1ldGVyIGlzIHByb3ZpZGVkLCAqKkFMTCoqIHNlc3Npb24gZm9yICoqVEhBVCBST0xFKiogYXJlIHJldm9rZWRcbiAgICAgKiAoaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgcGVybWlzc2lvbnMgdG8gcmV2b2tlIHNlc3Npb25zIGZvciB0aGUgcm9sZSkuXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1wicmV2b2tlU2Vzc2lvbnNcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9zZXNzaW9uL3NlbGZcIjoge1xuICAgIC8qKlxuICAgICAqIFJldm9rZSBjdXJyZW50IHNlc3Npb25cbiAgICAgKiBAZGVzY3JpcHRpb24gUmV2b2tlIGN1cnJlbnQgc2Vzc2lvblxuICAgICAqXG4gICAgICogSW1tZWRpYXRlbHkgcmV2b2tlcyB0aGUgY3VycmVudCBzZXNzaW9uLCBwcmV2ZW50aW5nIGl0IGZyb20gYmVpbmcgdXNlZCBvciByZWZyZXNoZWRcbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJyZXZva2VDdXJyZW50U2Vzc2lvblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3Nlc3Npb24ve3Nlc3Npb25faWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgc2Vzc2lvbiBpbmZvcm1hdGlvblxuICAgICAqIEBkZXNjcmlwdGlvbiBHZXQgc2Vzc2lvbiBpbmZvcm1hdGlvblxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImdldFNlc3Npb25cIl07XG4gICAgLyoqXG4gICAgICogUmV2b2tlIGEgc2Vzc2lvblxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXZva2UgYSBzZXNzaW9uXG4gICAgICpcbiAgICAgKiBJbW1lZGlhdGVseSByZXZva2VzIGFuIGV4aXN0aW5nIHNlc3Npb24sIHByZXZlbnRpbmcgaXQgZnJvbSBiZWluZyB1c2VkIG9yIHJlZnJlc2hlZFxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcInJldm9rZVNlc3Npb25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9zb2xhbmEvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBTb2xhbmEgTWVzc2FnZVxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIFNvbGFuYSBNZXNzYWdlXG4gICAgICpcbiAgICAgKiBTaWducyBhIFNvbGFuYSBtZXNzYWdlIHdpdGggYSBnaXZlbiBrZXkuXG4gICAgICogVGhpcyBpcyBhIHByZS1yZWxlYXNlIGZlYXR1cmUuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInNvbGFuYVNpZ25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9zdWkvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBhIHNlcmlhbGl6ZWQgU1VJIHRyYW5zYWN0aW9uLlxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIGEgc2VyaWFsaXplZCBTVUkgdHJhbnNhY3Rpb24uXG4gICAgICpcbiAgICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wic3VpU2lnblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3RlbmRlcm1pbnQvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBhIHRlbmRlcm1pbnQgbWVzc2FnZS5cbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBhIHRlbmRlcm1pbnQgbWVzc2FnZS5cbiAgICAgKlxuICAgICAqIFNpZ25zIHRoZSBnaXZlbiBiYXNlLTY0IGVuY29kZWQgdm90ZSBvciBwcm9wb3NhbCB3aXRoIHRoZSBnaXZlbiB0ZW5kZXJtaW50IGtleS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1widGVuZGVybWludFNpZ25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS90b2tlbi9rZXlzXCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgVG9rZW4tQWNjZXNzaWJsZSBLZXlzXG4gICAgICogQGRlc2NyaXB0aW9uIEdldCBUb2tlbi1BY2Nlc3NpYmxlIEtleXNcbiAgICAgKlxuICAgICAqIFJldHJpZXZlcyB0aGUga2V5cyB0aGF0IGEgdXNlciBvciByb2xlIHNlc3Npb24gY2FuIGFjY2Vzcy5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0VG9rZW5LZXlzXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlci9tZVwiOiB7XG4gICAgLyoqXG4gICAgICogVXNlciBJbmZvXG4gICAgICogQGRlc2NyaXB0aW9uIFVzZXIgSW5mb1xuICAgICAqXG4gICAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IHVzZXIuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiYWJvdXRNZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3VzZXIvbWUvZW1haWxcIjoge1xuICAgIC8qKlxuICAgICAqIEluaXRpYXRlIFJlc2V0IFZlcmlmaWVkIEVtYWlsIEZsb3dcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgUmVzZXQgVmVyaWZpZWQgRW1haWwgRmxvd1xuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJ1c2VyUmVzZXRFbWFpbEluaXRcIl07XG4gICAgLyoqXG4gICAgICogRmluYWxpemUgYSBSZXNldCBWZXJpZmllZCBFbWFpbCBGbG93XG4gICAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIGEgUmVzZXQgVmVyaWZpZWQgRW1haWwgRmxvd1xuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1widXNlclJlc2V0RW1haWxDb21wbGV0ZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3VzZXIvbWUvZXhwb3J0XCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IG91dHN0YW5kaW5nIHVzZXItZXhwb3J0IHJlcXVlc3RzXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3Qgb3V0c3RhbmRpbmcgdXNlci1leHBvcnQgcmVxdWVzdHNcbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJ1c2VyRXhwb3J0TGlzdFwiXTtcbiAgICAvKipcbiAgICAgKiBJbml0aWF0ZSBhIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgYSB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAgICpcbiAgICAgKiBUaGlzIHN0YXJ0cyBhIGRlbGF5ICh3aG9zZSBsZW5ndGggaXMgZGV0ZXJtaW5lZCBieSBPcmctd2lkZSBzZXR0aW5ncylcbiAgICAgKiBiZWZvcmUgZXhwb3J0IGNhbiBiZSBjb21wbGV0ZWQsIGFuZCByZXR1cm5zIGEgdGlja2V0IHRoYXQgY2FuIGJlIHVzZWRcbiAgICAgKiB0byBjb21wbGV0ZSB0aGUgZXhwb3J0IG9uY2UgdGhlIHRpbWVyIGhhcyBleHBpcmVkLlxuICAgICAqXG4gICAgICogT25seSBvbmUgdXNlci1leHBvcnQgcmVxdWVzdCBjYW4gYmUgYWN0aXZlIGZvciBhIGdpdmVuIGtleS4gSWYgdGhlcmVcbiAgICAgKiBpcyBhbHJlYWR5IGFuIGFjdGl2ZSBleHBvcnQsIHRoaXMgZW5kcG9pbnQgd2lsbCByZXR1cm4gYW4gZXJyb3IuIFRvXG4gICAgICogY3JlYXRlIGEgbmV3IHJlcXVlc3QsIGZpcnN0IGRlbGV0ZSB0aGUgZXhpc3Rpbmcgb25lLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJ1c2VyRXhwb3J0SW5pdFwiXTtcbiAgICAvKipcbiAgICAgKiBEZWxldGUgYW4gZXhpc3RpbmcgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgYW4gZXhpc3RpbmcgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcInVzZXJFeHBvcnREZWxldGVcIl07XG4gICAgLyoqXG4gICAgICogQ29tcGxldGUgYSB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAgICogQGRlc2NyaXB0aW9uIENvbXBsZXRlIGEgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgICAqXG4gICAgICogVGhpcyBlbmRwb2ludCBjYW4gYmUgY2FsbGVkIG9ubHkgYWZ0ZXIgaW5pdGlhdGluZyBhIHVzZXItZXhwb3J0IHJlcXVlc3QgdmlhXG4gICAgICogdGhlIGB1c2VyX2V4cG9ydF9pbml0YCBBUEksIGFuZCBvbmx5IHdpdGhpbiB0aGUgc3Vic2VxdWVudCBleHBvcnQgd2luZG93XG4gICAgICogKGkuZS4sIGFmdGVyIHRoZSBleHBvcnQgZGVsYXkgaGFzIHBhc3NlZCBhbmQgYmVmb3JlIHRoZSByZXF1ZXN0IGhhcyBleHBpcmVkKS5cbiAgICAgKlxuICAgICAqIFRvIGNoZWNrIG9uIHRoZSBzdGF0dXMgb2YgYW4gZXhwb3J0IHJlcXVlc3QsIHNlZSB0aGUgYHVzZXJfZXhwb3J0X2xpc3RgIEFQSS5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInVzZXJFeHBvcnRDb21wbGV0ZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3VzZXIvbWUvZmlkb1wiOiB7XG4gICAgLyoqXG4gICAgICogSW5pdGlhdGUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXkuXG4gICAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5LlxuICAgICAqXG4gICAgICogSWYgYSBkaXNjb3ZlcmFibGUga2V5IGlzIHJlcXVlc3RlZCwgdXNlciB2ZXJpZmljYXRpb24gKFBJTikgaXMgcmVxdWlyZWQuXG4gICAgICpcbiAgICAgKiBHZW5lcmF0ZXMgYSBjaGFsbGVuZ2UgdGhhdCBtdXN0IGJlIGFuc3dlcmVkIHRvIHByb3ZlIG93bmVyc2hpcCBvZiBhIGtleS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1widXNlclJlZ2lzdGVyRmlkb0luaXRcIl07XG4gICAgLyoqXG4gICAgICogRmluYWxpemUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICAgKlxuICAgICAqIEFjY2VwdHMgdGhlIHJlc3BvbnNlIHRvIHRoZSBjaGFsbGVuZ2UgZ2VuZXJhdGVkIGJ5IHRoZSBQT1NUIHRvIHRoaXMgZW5kcG9pbnQuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJ1c2VyUmVnaXN0ZXJGaWRvQ29tcGxldGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS91c2VyL21lL2ZpZG8ve2ZpZG9faWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBEZWxldGUgRklETyBrZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIEZJRE8ga2V5XG4gICAgICpcbiAgICAgKiBEZWxldGVzIGEgRklETyBrZXkgZnJvbSB0aGUgdXNlcidzIGFjY291bnQgKGlmIHRoZSBrZXkgaXMgbm90IHRoZSBzb2xlIE1GQSBmYWN0b3IpLiBNRkEgaXMgYWx3YXlzIHJlcXVpcmVkLlxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcInVzZXJEZWxldGVGaWRvXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlci9tZS90b3RwXCI6IHtcbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplIFRPVFAgUmVzZXRcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhbGl6ZSBUT1RQIFJlc2V0XG4gICAgICpcbiAgICAgKiBDcmVhdGVzIGEgbmV3IFRPVFAgY2hhbGxlbmdlIHRoYXQgbXVzdCBiZSBhbnN3ZXJlZCB0byBwcm92ZSB0aGF0IHRoZSBuZXcgVE9UUFxuICAgICAqIHdhcyBzdWNjZXNzZnVsbHkgaW1wb3J0ZWQgaW50byBhbiBhdXRoZW50aWNhdG9yIGFwcC5cbiAgICAgKlxuICAgICAqIFRoaXMgb3BlcmF0aW9uIGlzIGFsbG93ZWQgaWYgRUlUSEVSXG4gICAgICogLSB0aGUgdXNlciBhY2NvdW50IGlzIG5vdCB5ZXQgaW5pdGlhbGl6ZWQgYW5kIG5vIFRPVFAgaXMgYWxyZWFkeSBzZXQsIE9SXG4gICAgICogLSB0aGUgdXNlciBoYXMgbm90IGNvbmZpZ3VyZWQgYW55IGF1dGggZmFjdG9ycztcbiAgICAgKiBvdGhlcndpc2UsIE1GQSBpcyByZXF1aXJlZC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1widXNlclJlc2V0VG90cEluaXRcIl07XG4gICAgLyoqXG4gICAgICogRGVsZXRlIFRPVFBcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIFRPVFBcbiAgICAgKlxuICAgICAqIERlbGV0ZXMgVE9UUCBmcm9tIHRoZSB1c2VyJ3MgYWNjb3VudCAoaWYgVE9UUCBpcyBub3QgdGhlIHNvbGUgTUZBIGZhY3RvcikuIE1GQSBpcyBhbHdheXMgcmVxdWlyZWQuXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1widXNlckRlbGV0ZVRvdHBcIl07XG4gICAgLyoqXG4gICAgICogRmluYWxpemUgcmVzZXR0aW5nIFRPVFBcbiAgICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgcmVzZXR0aW5nIFRPVFBcbiAgICAgKlxuICAgICAqIENoZWNrcyBpZiB0aGUgcmVzcG9uc2UgY29udGFpbnMgdGhlIGNvcnJlY3QgVE9UUCBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlXG4gICAgICogY2hhbGxlbmdlIGdlbmVyYXRlZCBieSB0aGUgUE9TVCBtZXRob2Qgb2YgdGhpcyBlbmRwb2ludC5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInVzZXJSZXNldFRvdHBDb21wbGV0ZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3VzZXIvbWUvdG90cC92ZXJpZnlcIjoge1xuICAgIC8qKlxuICAgICAqIFZlcmlmeSBUT1RQXG4gICAgICogQGRlc2NyaXB0aW9uIFZlcmlmeSBUT1RQXG4gICAgICpcbiAgICAgKiBDaGVja3MgaWYgYSBnaXZlbiBjb2RlIG1hdGNoZXMgdGhlIGN1cnJlbnQgVE9UUCBjb2RlIGZvciB0aGUgY3VycmVudCB1c2VyLlxuICAgICAqIEVycm9ycyB3aXRoIDQwMyBpZiB0aGUgY3VycmVudCB1c2VyIGhhcyBub3Qgc2V0IHVwIFRPVFAgb3IgdGhlIGNvZGUgZmFpbHMgdmVyaWZpY2F0aW9uLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJ1c2VyVmVyaWZ5VG90cFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3VzZXJzXCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IHVzZXJzIGluIG9yZ2FuaXphdGlvblxuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IHVzZXJzIGluIG9yZ2FuaXphdGlvblxuICAgICAqXG4gICAgICogSWYgYSBxdWVyeSBpcyBkZWZpbmVkLCB0aGUgcmVzdWx0IHdpbGwgY29udGFpbiBvbmx5IHRoZSB1c2VycyB3aG9zZSBuYW1lIG9yXG4gICAgICogZW1haWwgY29udGFpbiB0aGUgcXVlcnkgc3RyaW5nLiBOT1RFIHRoYXQgaWYgcGFnaW5hdGlvbiBpcyB1c2VkIGFuZCBhIHBhZ2VcbiAgICAgKiBsaW1pdCBpcyBzZXQsIHRoZSByZXR1cm5lZCByZXN1bHQgc2V0IG1heSBjb250YWluIEZFV0VSIGVsZW1lbnRzIHRoYW4gdGhlXG4gICAgICogcmVxdWVzdGVkIHBhZ2UgbGltaXQuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibGlzdFVzZXJzSW5PcmdcIl07XG4gICAgLyoqXG4gICAgICogQWRkIGEgdGhpcmQtcGFydHkgdXNlciB0byB0aGUgb3JnXG4gICAgICogQGRlc2NyaXB0aW9uIEFkZCBhIHRoaXJkLXBhcnR5IHVzZXIgdG8gdGhlIG9yZ1xuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJjcmVhdGVPaWRjVXNlclwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3VzZXJzL2VtYWlsL3tlbWFpbH1cIjoge1xuICAgIC8qKlxuICAgICAqIEdldCB1c2VyIGJ5IGVtYWlsLlxuICAgICAqIEBkZXNjcmlwdGlvbiBHZXQgdXNlciBieSBlbWFpbC5cbiAgICAgKlxuICAgICAqIFRoZSBzZWFyY2ggaW5jbHVkZXMgYWxsIHVzZXJzIGFuZCB0aGVpciB0aGlyZC1wYXJ0eSBpZGVudGl0aWVzLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImdldFVzZXJJbk9yZ0J5RW1haWxcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS91c2Vycy9vaWRjXCI6IHtcbiAgICAvKipcbiAgICAgKiBSZW1vdmUgYSB0aGlyZC1wYXJ0eSB1c2VyIGZyb20gdGhlIG9yZ1xuICAgICAqIEBkZXNjcmlwdGlvbiBSZW1vdmUgYSB0aGlyZC1wYXJ0eSB1c2VyIGZyb20gdGhlIG9yZ1xuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcImRlbGV0ZU9pZGNVc2VyXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlcnMvb2lkYy97aXNzfS97c3VifVwiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IGEgdXNlciBieSB0aGVpciBPSURDIGlkZW50aXR5XG4gICAgICogQGRlc2NyaXB0aW9uIEdldCBhIHVzZXIgYnkgdGhlaXIgT0lEQyBpZGVudGl0eVxuICAgICAqXG4gICAgICogUmV0cmlldmVzIGEgdXNlciBpbiB0aGUgb3JnYW5pemF0aW9uIGJ5IHRoZWlyIE9JREMgaXNzdWVyIGFuZCBzdWJqZWN0LlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImdldFVzZXJJbk9yZ0J5T2lkY1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3VzZXJzL3Jlc2V0X21mYVwiOiB7XG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZSBNRkEgcmVzZXQgZm9yIHVzZXJcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhbGl6ZSBNRkEgcmVzZXQgZm9yIHVzZXJcbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wicmVzZXRNZW1iZXJNZmFcIl07XG4gICAgLyoqXG4gICAgICogQ29tcGxldGUgTUZBIHJlc2V0IGZvciB1c2VyXG4gICAgICogQGRlc2NyaXB0aW9uIENvbXBsZXRlIE1GQSByZXNldCBmb3IgdXNlclxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1wiY29tcGxldGVSZXNldE1lbWJlck1mYVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3VzZXJzL3t1c2VyX2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IHVzZXIgYnkgaWRcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IHVzZXIgYnkgaWRcbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJnZXRVc2VySW5PcmdcIl07XG4gICAgLyoqXG4gICAgICogUmVtb3ZlIGEgdXNlciBmcm9tIHRoZSBvcmdcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVtb3ZlIGEgdXNlciBmcm9tIHRoZSBvcmdcbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJkZWxldGVVc2VyXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlcnMve3VzZXJfaWR9L21lbWJlcnNoaXBcIjoge1xuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBhIHVzZXIncyBtZW1iZXJzaGlwIGluIHRoZSBvcmdcbiAgICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlIGEgdXNlcidzIG1lbWJlcnNoaXAgaW4gdGhlIG9yZ1xuICAgICAqXG4gICAgICogRW5hYmxlL2Rpc2FibGUgYW5vdGhlciB1c2VyIGluIHRoZSBvcmcsIG9yIGNoYW5nZSB0aGVpciBtZW1iZXJzaGlwIHJvbGUuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJ1cGRhdGVVc2VyTWVtYmVyc2hpcFwiXTtcbiAgfTtcbiAgXCIvdjAvcGFzc2tleVwiOiB7XG4gICAgLyoqXG4gICAgICogSW5pdGlhdGUgTG9naW4gd2l0aCBQYXNza2V5XG4gICAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIExvZ2luIHdpdGggUGFzc2tleVxuICAgICAqXG4gICAgICogVGhlIHJlc3BvbnNlIGNvbnRhaW5zIGEgRklETyBjaGFsbGVuZ2UgdGhhdCB0aGUgY2xpZW50IG11c3QgYW5zd2VyIHdpdGggYW55IG9mIHRoZWlyXG4gICAgICogZGlzY292ZXJhYmxlIGNyZWRlbnRpYWxzLiAgVGhlIGFuc3dlciBzaG91bGQgYmUgc3VibWl0dGVkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgUEFUQ0ggcmVxdWVzdC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wicGFzc2tleUF1dGhJbml0XCJdO1xuICAgIC8qKlxuICAgICAqIENvbXBsZXRlIExvZ2luIHdpdGggUGFzc2tleVxuICAgICAqIEBkZXNjcmlwdGlvbiBDb21wbGV0ZSBMb2dpbiB3aXRoIFBhc3NrZXlcbiAgICAgKlxuICAgICAqIFRoZSByZXF1ZXN0IHNob3VsZCBjb250YWluIGFuIGFuc3dlciB0byB0aGUgY2hhbGxlbmdlIGlzc3VlZCBieSB0aGUgY29ycmVzcG9uZGluZyBQT1NUIHJlcXVlc3QuXG4gICAgICogVGhlIGNoYWxsZW5nZSBtYXkgYmUgYW5zd2VyZWQgd2l0aCBhbnkgb2YgdGhlIHVzZXIncyBkaXNjb3ZlcmFibGUgY3JlZGVudGlhbHM7IGlmIHRoZSBjcmVkZW50aWFsXG4gICAgICogaW5jbHVkZWQgaW4gdGhlIGFuc3dlciBpcyByZWdpc3RlcmVkIHdpdGggYSB1c2VyIGFuZCBhbiBvcmdhbml6YXRpb24sIHRoZSByZXNwb25zZSB3aWxsIGNvbnRhaW5cbiAgICAgKiBhIEN1YmVTaWduZXIgc2Vzc2lvbiAod2l0aCB0aGUgcGFyYW1ldGVycyBzdXBwbGllZCBpbiB0aGUgcHJldmlvdXMgUE9TVCByZXF1ZXN0KSBmb3IgdGhhdCB1c2VyXG4gICAgICogaW4gdGhhdCBvcmdhbml6YXRpb24uXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJwYXNza2V5QXV0aENvbXBsZXRlXCJdO1xuICB9O1xuICBcIi92MC9wcml2YXRlL3BvbGljeS1leGVjdXRlL3twb2xpY3lfbmFtZX1cIjoge1xuICAgIC8qKlxuICAgICAqIFRoZSBwb2xpY3lfZXhlY3V0ZSBBUEkgZW5kcG9pbnQgaXMgaW50ZW5kZWQgdG8gZGVtb25zdHJhdGUgdGhhdCB0aGUgc2lnbmVyXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSBwb2xpY3lfZXhlY3V0ZSBBUEkgZW5kcG9pbnQgaXMgaW50ZW5kZWQgdG8gZGVtb25zdHJhdGUgdGhhdCB0aGUgc2lnbmVyXG4gICAgICogY2FuIHVzZSB0aGUgcG9saWN5IGVuZ2luZSwgYnkgd2F5IG9mIHRoZSBQb2xpY3lFbmdpbmVDbGllbnQuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInBvbGljeS1leGVjdXRlXCJdO1xuICB9O1xuICBcIi92MC91c2VyL21lL2ZpZG9cIjoge1xuICAgIC8qKlxuICAgICAqIEluaXRpYXRlIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICAgKlxuICAgICAqIERFUFJFQ0FURUQuIFVzZSBgUE9TVCAvdjAvb3JnL3tvcmdfaWR9L3VzZXIvbWUvZmlkb2AgaW5zdGVhZC5cbiAgICAgKlxuICAgICAqIEdlbmVyYXRlcyBhIGNoYWxsZW5nZSB0aGF0IG11c3QgYmUgYW5zd2VyZWQgdG8gcHJvdmUgb3duZXJzaGlwIG9mIGEga2V5XG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInJlZ2lzdGVyRmlkb0luaXRMZWdhY3lcIl07XG4gICAgLyoqXG4gICAgICogRmluYWxpemUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgICAqXG4gICAgICogREVQUkVDQVRFRC4gVXNlIGBQQVRDSCAvdjAvb3JnL3tvcmdfaWR9L3VzZXIvbWUvZmlkb2AgaW5zdGVhZC5cbiAgICAgKlxuICAgICAqIEFjY2VwdHMgdGhlIHJlc3BvbnNlIHRvIHRoZSBjaGFsbGVuZ2UgZ2VuZXJhdGVkIGJ5IHRoZSBQT1NUIHRvIHRoaXMgZW5kcG9pbnQuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJyZWdpc3RlckZpZG9Db21wbGV0ZUxlZ2FjeVwiXTtcbiAgfTtcbiAgXCIvdjAvdXNlci9tZS90b3RwXCI6IHtcbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplIFRPVFAgUmVzZXRcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBkZXNjcmlwdGlvbiBJbml0aWFsaXplIFRPVFAgUmVzZXRcbiAgICAgKlxuICAgICAqIERFUFJFQ0FURUQuIFVzZSBgUE9TVCAvdjAvb3JnL3tvcmdfaWR9L3VzZXIvbWUvdG90cGAgaW5zdGVhZC5cbiAgICAgKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgVE9UUCBjaGFsbGVuZ2UgdGhhdCBtdXN0IGJlIGFuc3dlcmVkIHRvIHByb3ZlIHRoYXQgdGhlIG5ldyBUT1RQXG4gICAgICogd2FzIHN1Y2Nlc3NmdWxseSBpbXBvcnRlZCBpbnRvIGFuIGF1dGhlbnRpY2F0b3IgYXBwLlxuICAgICAqXG4gICAgICogVGhpcyBvcGVyYXRpb24gaXMgYWxsb3dlZCBpZiBFSVRIRVJcbiAgICAgKiAtIHRoZSB1c2VyIGFjY291bnQgaXMgbm90IHlldCBpbml0aWFsaXplZCBhbmQgbm8gVE9UUCBpcyBhbHJlYWR5IHNldCwgT1JcbiAgICAgKiAtIHRoZSB1c2VyIGhhcyBub3QgY29uZmlndXJlZCBhbnkgYXV0aCBmYWN0b3JzO1xuICAgICAqIG90aGVyd2lzZSwgTUZBIGlzIHJlcXVpcmVkLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJyZXNldFRvdHBJbml0TGVnYWN5XCJdO1xuICAgIC8qKlxuICAgICAqIEZpbmFsaXplIHJlc2V0dGluZyBUT1RQXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgcmVzZXR0aW5nIFRPVFBcbiAgICAgKlxuICAgICAqIERFUFJFQ0FURUQuIFVzZSBgUEFUQ0ggL3YwL29yZy97b3JnX2lkfS91c2VyL21lL3RvdHBgIGluc3RlYWQuXG4gICAgICpcbiAgICAgKiBDaGVja3MgaWYgdGhlIHJlc3BvbnNlIGNvbnRhaW5zIHRoZSBjb3JyZWN0IFRPVFAgY29kZSBjb3JyZXNwb25kaW5nIHRvIHRoZVxuICAgICAqIGNoYWxsZW5nZSBnZW5lcmF0ZWQgYnkgdGhlIFBPU1QgbWV0aG9kIG9mIHRoaXMgZW5kcG9pbnQuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJyZXNldFRvdHBDb21wbGV0ZUxlZ2FjeVwiXTtcbiAgfTtcbiAgXCIvdjAvdXNlci9tZS90b3RwL3ZlcmlmeVwiOiB7XG4gICAgLyoqXG4gICAgICogVmVyaWZ5IFRPVFBcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBkZXNjcmlwdGlvbiBWZXJpZnkgVE9UUFxuICAgICAqXG4gICAgICogREVQUkVDQVRFRC4gVXNlIGBQT1NUIC92MC9vcmcve29yZ19pZH0vdXNlci9tZS90b3RwL3ZlcmlmeWAgaW5zdGVhZC5cbiAgICAgKlxuICAgICAqIENoZWNrcyBpZiBhIGdpdmVuIGNvZGUgbWF0Y2hlcyB0aGUgY3VycmVudCBUT1RQIGNvZGUgZm9yIHRoZSBjdXJyZW50IHVzZXIuXG4gICAgICogRXJyb3JzIHdpdGggNDAzIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIG5vdCBzZXQgdXAgVE9UUCBvciB0aGUgY29kZSBmYWlscyB2ZXJpZmljYXRpb24uXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInZlcmlmeVRvdHBMZWdhY3lcIl07XG4gIH07XG4gIFwiL3YwL3VzZXIvb3Jnc1wiOiB7XG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIGFsbCB0aGUgb3JncyB0aGUgdXNlciBpcyBhIHBhcnQgb2ZcbiAgICAgKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIGFsbCB0aGUgb3JncyB0aGUgdXNlciBpcyBhIHBhcnQgb2ZcbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJ1c2VyT3Jnc1wiXTtcbiAgfTtcbiAgXCIvdjEvb3JnL3tvcmdfaWR9L2Jsb2Ivc2lnbi97a2V5X2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBSYXcgQmxvYlxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIFJhdyBCbG9iXG4gICAgICpcbiAgICAgKiBTaWducyBhbiBhcmJpdHJhcnkgYmxvYiB3aXRoIGEgZ2l2ZW4ga2V5LlxuICAgICAqXG4gICAgICogLSBFQ0RTQSBzaWduYXR1cmVzIGFyZSBzZXJpYWxpemVkIGFzIGJpZy1lbmRpYW4gciBhbmQgcyBwbHVzIHJlY292ZXJ5LWlkXG4gICAgICogYnl0ZSB2LCB3aGljaCBjYW4gaW4gZ2VuZXJhbCB0YWtlIGFueSBvZiB0aGUgdmFsdWVzIDAsIDEsIDIsIG9yIDMuXG4gICAgICpcbiAgICAgKiAtIEVkRFNBIHNpZ25hdHVyZXMgYXJlIHNlcmlhbGl6ZWQgaW4gdGhlIHN0YW5kYXJkIGZvcm1hdC5cbiAgICAgKlxuICAgICAqIC0gQkxTIHNpZ25hdHVyZXMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gdGhlIGJsb2Itc2lnbiBlbmRwb2ludC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiYmxvYlNpZ25cIl07XG4gIH07XG4gIFwiL3YxL29yZy97b3JnX2lkfS9jdWJlM3NpZ25lci9oZWFydGJlYXRcIjoge1xuICAgIC8qKlxuICAgICAqIFJlY29yZCBoZWFydGJlYXRcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVjb3JkIGhlYXJ0YmVhdFxuICAgICAqXG4gICAgICogVGhpcyBlbmRwb2ludCBpcyBjYWxsZWQgYnkgdGhlIGN1YmUzc2lnbmVyIHByb3h5IHRvIHJlY29yZCB2YXJpb3VzIG1ldHJpY3MgdG8gQ2xvdWRXYXRjaC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3ViZTNzaWduZXJIZWFydGJlYXRcIl07XG4gIH07XG4gIFwiL3YxL29yZy97b3JnX2lkfS9ldGgxL3NpZ24ve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gRVZNIFRyYW5zYWN0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gRVZNIFRyYW5zYWN0aW9uXG4gICAgICpcbiAgICAgKiBTaWducyBhbiBFdGhlcmV1bSAoYW5kIG90aGVyIEVWTSkgdHJhbnNhY3Rpb24gd2l0aCBhIGdpdmVuIFNlY3AyNTZrMSBrZXkuXG4gICAgICogUmV0dXJucyBhbiBSTFAtZW5jb2RlZCB0cmFuc2FjdGlvbiB3aXRoIEVJUC0xNTUgc2lnbmF0dXJlLlxuICAgICAqXG4gICAgICogVGhlIGtleSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm9sZSBhbmQgb3JnYW5pemF0aW9uIG9uIHdob3NlIGJlaGFsZiB0aGlzIGFjdGlvbiBpcyBjYWxsZWQuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImV0aDFTaWduXCJdO1xuICB9O1xuICBcIi92MS9vcmcve29yZ19pZH0vZXRoMi9zaWduL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIFZhbGlkYXRvciBSZXF1ZXN0XG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gVmFsaWRhdG9yIFJlcXVlc3RcbiAgICAgKlxuICAgICAqIFNpZ25zIGFuIGV0aDIgdmFsaWRhdG9yIHJlcXVlc3Qgd2l0aCBhIGdpdmVuIEJMUyBrZXkuXG4gICAgICpcbiAgICAgKiBUaGUga2V5IG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSByb2xlIGFuZCBvcmdhbml6YXRpb24gb24gd2hvc2UgYmVoYWxmIHRoaXMgYWN0aW9uIGlzIGNhbGxlZC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiZXRoMlNpZ25cIl07XG4gIH07XG4gIFwiL3YxL29yZy97b3JnX2lkfS9ldGgyL3N0YWtlXCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIFN0YWtlIERlcG9zaXRcbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBTdGFrZSBEZXBvc2l0XG4gICAgICpcbiAgICAgKiBTaWducyBhIGRlcG9zaXQgdHJhbnNhY3Rpb24gd2l0aCBhIGB2YWxpZGF0b3Jfa2V5YC4gSWYgYHZhbGlkYXRvcl9rZXlgIGlzIHNldCB0byBhIHByZWdlbmVyYXRlZCBrZXksIHdlIHVzZSB0aGVcbiAgICAgKiBwcm92aWRlZCB2YWxpZGF0b3Iga2V5LiBPdGhlcndpc2UsIHdlIGdlbmVyYXRlIGEgbmV3IEJMUyBrZXkuXG4gICAgICpcbiAgICAgKiBXaGVuIHVzaW5nIGEgcHJlZ2VuZXJhdGVkIGtleSwgdGhlIGtleSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm9sZSBhbmQgb3JnYW5pemF0aW9uIG9uIHdob3NlXG4gICAgICogYmVoYWxmIHRoaXMgYWN0aW9uIGlzIGNhbGxlZC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wic3Rha2VcIl07XG4gIH07XG4gIFwiL3YxL29yZy97b3JnX2lkfS9ldGgyL3Vuc3Rha2Uve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gVW5zdGFrZSBSZXF1ZXN0XG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gVW5zdGFrZSBSZXF1ZXN0XG4gICAgICpcbiAgICAgKiBIYW5kbGUgdW5zdGFraW5nIHJlcXVlc3QsIHByb2R1Y2luZyBhIHNpZ25lZCB2b2x1bnRhcnkgZXhpdCBtZXNzYWdlXG4gICAgICogdGhhdCBjYW4gYmUgcG9zdGVkIGRpcmVjdGx5IHRvIHRoZSBCZWFjb24gY2hhaW4uXG4gICAgICpcbiAgICAgKiBUaGUga2V5IG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSByb2xlIGFuZCBvcmdhbml6YXRpb24gb24gd2hvc2UgYmVoYWxmIHRoaXMgYWN0aW9uIGlzIGNhbGxlZC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1widW5zdGFrZVwiXTtcbiAgfTtcbiAgXCIvdjEvb3JnL3tvcmdfaWR9L3Rva2VuL3JlZnJlc2hcIjoge1xuICAgIC8qKlxuICAgICAqIFJlZnJlc2ggU2lnbmVyIFNlc3Npb25cbiAgICAgKiBAZGVzY3JpcHRpb24gUmVmcmVzaCBTaWduZXIgU2Vzc2lvblxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1wic2lnbmVyU2Vzc2lvblJlZnJlc2hcIl07XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIHdlYmhvb2tzID0gUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuXG5leHBvcnQgaW50ZXJmYWNlIGNvbXBvbmVudHMge1xuICBzY2hlbWFzOiB7XG4gICAgQWNjZXB0ZWRSZXNwb25zZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdICYgUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBEaWZmZXJlbnQgcmVzcG9uc2VzIHdlIHJldHVybiBmb3Igc3RhdHVzIGNvZGUgXCIyMDIgQWNjZXB0ZWRcIi5cbiAgICAgKlxuICAgICAqIEV2ZW4gdGhvdWdoIFwiMjAyIEFjY2VwdGVkXCIgaXMgYSBzdWNjZXNzZnVsIHJlc3BvbnNlLCB3ZSByZXByZXNlbnRcbiAgICAgKiBpdCBhcyBhIFJ1c3QgZXJyb3IgYmVjYXVzZSB0aGF0IG1ha2VzIGl0IGVhc3kgdG8gaGF2ZSByb3V0ZSBoYW5kbGVyc1xuICAgICAqIHJldHVybiBgUmVzdWx0PFQsIFNpZ25lckVycm9yPmAgd2hlcmUgYFRgIGlzIHRoZSB0eXBlIG9mIHRoZVxuICAgICAqIHJlc3BvbnNlIGZvciB0aGUgc3RhdHVzIGNvZGUgXCIyMDAgT2tcIi5cbiAgICAgKi9cbiAgICBBY2NlcHRlZFZhbHVlOiB7XG4gICAgICBNZmFSZXF1aXJlZDoge1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFsd2F5cyBzZXQgdG8gZmlyc3QgTUZBIGlkIGZyb20gYFNlbGY6Omlkc2AgKi9cbiAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBOb24tZW1wdHkgTUZBIHJlcXVlc3QgSURzICovXG4gICAgICAgIGlkczogc3RyaW5nW107XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3JnYW5pemF0aW9uIGlkICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHBvbGljeSBldmFsdWF0aW9uIHRyZWUgKGluY2x1ZGVkIGluIHNpZ25lciByZXNwb25zZXMsIHdoZW4gcmVxdWVzdGVkKSAqL1xuICAgICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICAgICAgc2Vzc2lvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTmV3U2Vzc2lvblJlc3BvbnNlXCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBBY2NlcHRlZFZhbHVlQ29kZTogXCJNZmFSZXF1aXJlZFwiO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBEZXRlcm1pbmVzIHdobyBjb250cm9scyB0aGUga2V5cyB3aXRoaW4gYW4gb3JnXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBBY2Nlc3NNb2RlbDogXCJVc2VyXCIgfCBcIk9yZ1wiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVxdWVzdCB0byBhZGQgT0lEQyBpZGVudGl0eSB0byBhbiBleGlzdGluZyB1c2VyIGFjY291bnQgKi9cbiAgICBBZGRJZGVudGl0eVJlcXVlc3Q6IHtcbiAgICAgIG9pZGNfdG9rZW46IHN0cmluZztcbiAgICAgIHVzZXJfaWQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdIHwgbnVsbDtcbiAgICB9O1xuICAgIEFkZEtleXNUb1JvbGVSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGxpc3Qgb2Yga2V5cyB0byBhZGQgdG8gYSByb2xlXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwiS2V5IzYzMDIzYTI3LTFlNzAtNDMwYS1iMjkzLWZmYmM5ZDZjNDQ4NFwiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIGtleV9pZHM6IHN0cmluZ1tdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWNpZXMgdG8gYXBwbHkgZm9yIGVhY2gga2V5XG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlR4UmVjZWl2ZXJcIjogXCIweDhjNTk0NjkxYzBlNTkyZmZhMjFmMTUzYTE2YWU0MWRiNWJlZmNhYWFcIlxuICAgICAgICogICB9LFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJUeERlcG9zaXRcIjoge1xuICAgICAgICogICAgICAgXCJraW5kXCI6IFwiQ2Fub25pY2FsXCJcbiAgICAgICAqICAgICB9XG4gICAgICAgKiAgIH0sXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlJlcXVpcmVNZmFcIjoge1xuICAgICAgICogICAgICAgXCJraW5kXCI6IHtcbiAgICAgICAqICAgICAgICAgXCJSZXF1aXJlZEFwcHJvdmVyc1wiOiB7XG4gICAgICAgKiAgICAgICAgICAgXCJjb3VudFwiOiAxXG4gICAgICAgKiAgICAgICAgIH1cbiAgICAgICAqICAgICAgIH0sXG4gICAgICAgKiAgICAgICBcInJlc3RyaWN0ZWRfb3BlcmF0aW9uc1wiOiBbXG4gICAgICAgKiAgICAgICAgIFwiRXRoMVNpZ25cIixcbiAgICAgICAqICAgICAgICAgXCJCbG9iU2lnblwiXG4gICAgICAgKiAgICAgICBdXG4gICAgICAgKiAgICAgfVxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHBvbGljeT86IHVua25vd25bXSB8IG51bGw7XG4gICAgfTtcbiAgICBBZGRUaGlyZFBhcnR5VXNlclJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHVzZXIgZW1haWxcbiAgICAgICAqIEBleGFtcGxlIGFsaWNlQGV4YW1wbGUuY29tXG4gICAgICAgKi9cbiAgICAgIGVtYWlsPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIGlkZW50aXR5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPaWRjSWRlbnRpdHlcIl0gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBsb2dpbiBNRkEgcG9saWN5ICovXG4gICAgICBtZmFfcG9saWN5PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgdXNlciBmdWxsIG5hbWVcbiAgICAgICAqIEBleGFtcGxlIEFsaWNlIFdvbmRlcmxhbmRcbiAgICAgICAqL1xuICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICBwcm9vZj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRlbnRpdHlQcm9vZlwiXSB8IG51bGw7XG4gICAgICByb2xlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1lbWJlclJvbGVcIl07XG4gICAgfTtcbiAgICBBZGRUaGlyZFBhcnR5VXNlclJlc3BvbnNlOiB7XG4gICAgICAvKiogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGYgKi9cbiAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGFkZHJlc3NlcyBhc3NvY2lhdGVkIHdpdGggYSBjb250YWN0LiAqL1xuICAgIEFkZHJlc3NNYXA6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQml0Y29pbiBhZGRyZXNzZXMuICovXG4gICAgICBidGM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJpdGNvaW5BZGRyZXNzSW5mb1wiXVtdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBDYW50b24gcGFydGllcy4gKi9cbiAgICAgIGNhbnRvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2FudG9uUGFydHlJbmZvXCJdW107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEVWTSBhZGRyZXNzZXMuICovXG4gICAgICBldm0/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkV2bUFkZHJlc3NJbmZvXCJdW107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFNvbGFuYSBhZGRyZXNzZXMuICovXG4gICAgICBzb2w/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNvbGFuYUFkZHJlc3NJbmZvXCJdW107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFNVSSBhZGRyZXNzZXMuICovXG4gICAgICBzdWk/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlN1aUFkZHJlc3NJbmZvXCJdW107XG4gICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBBbGVydEtpbmQ6IFwiUG9saWN5Q2hhbmdlc1wiIHwgXCJFdGgyQ29uY3VycmVudEJsb2NrU2lnbmluZ1wiIHwgXCJCYWJ5bG9uRW90c0NvbmN1cnJlbnRTaWduaW5nXCI7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIE1GQSB0eXBlcyB0aGF0IGFyZSBhbGxvd2VkIHRvIGJlIHVzZWQgZm9yIGluZGl2aWR1YWwgaW1wbGljaXRseSBzZWN1cml0eS1zZW5zaXRpdmVcbiAgICAgKiBvcGVyYXRpb25zIChsaWtlIGxvZ2dpbmcgaW4sIGFkZGluZyBhbiBNRkEgZmFjdG9yLCBleHBvcnRpbmcga2V5cywgZXRjOyBzZWUgYE1mYVByb3RlY3RlZEFjdGlvbmApLlxuICAgICAqL1xuICAgIEFsbG93ZWRNZmFNYXA6IHtcbiAgICAgIFtrZXk6IHN0cmluZ106IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhVHlwZVwiXVtdO1xuICAgIH07XG4gICAgQXBwcm92YWxJbmZvOiB7XG4gICAgICB0aW1lc3RhbXA6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBXZWJBdXRobiBSZWx5aW5nIFBhcnRpZXMgbWF5IHVzZSBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlIHRvIHNwZWNpZnlcbiAgICAgKiB0aGVpciBwcmVmZXJlbmNlIHJlZ2FyZGluZyBhdHRlc3RhdGlvbiBjb252ZXlhbmNlIGR1cmluZyBjcmVkZW50aWFsXG4gICAgICogZ2VuZXJhdGlvbi5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNlbnVtZGVmLWF0dGVzdGF0aW9uY29udmV5YW5jZXByZWZlcmVuY2VcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2U6IFwibm9uZVwiIHwgXCJpbmRpcmVjdFwiIHwgXCJkaXJlY3RcIiB8IFwiZW50ZXJwcmlzZVwiO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBdWRpZW5jZShzKSB0aGF0IHRoaXMgSUQgVG9rZW4gaXMgaW50ZW5kZWQgZm9yLiBJdCBNVVNUIGNvbnRhaW4gdGhlXG4gICAgICogT0F1dGggMi4wIGNsaWVudF9pZCBvZiB0aGUgUmVseWluZyBQYXJ0eSBhcyBhbiBhdWRpZW5jZSB2YWx1ZS4gSXQgTUFZIGFsc28gY29udGFpblxuICAgICAqIGlkZW50aWZpZXJzIGZvciBvdGhlciBhdWRpZW5jZXMuIEluIHRoZSBnZW5lcmFsIGNhc2UsIHRoZSBhdWQgdmFsdWUgaXMgYW4gYXJyYXkgb2ZcbiAgICAgKiBjYXNlLXNlbnNpdGl2ZSBzdHJpbmdzLiBJbiB0aGUgY29tbW9uIHNwZWNpYWwgY2FzZSB3aGVuIHRoZXJlIGlzIG9uZSBhdWRpZW5jZSxcbiAgICAgKiB0aGUgYXVkIHZhbHVlIE1BWSBiZSBhIHNpbmdsZSBjYXNlLXNlbnNpdGl2ZSBzdHJpbmcuXG4gICAgICovXG4gICAgQXVkOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgICBBdWRpdExvZ0VudHJ5OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBuYW1lIG9mIHRoZSBldmVudCAqL1xuICAgICAgZXZlbnQ6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVVVJRCBvZiB0aGUgZXZlbnQuIFVuaXF1ZSBhY3Jvc3MgYWxsIGV2ZW50cy4gKi9cbiAgICAgIGV2ZW50X2lkOiBzdHJpbmc7XG4gICAgICBvcmdfaWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIEhUVFAgcmVxdWVzdCB3aGljaCB0cmlnZ2VyZWQgdGhlIGV2ZW50XG4gICAgICAgKiAoYSBzaW5nbGUgcmVxdWVzdCBjYW4gdHJpZ2dlciBtdWx0aXBsZSBldmVudHMpLlxuICAgICAgICovXG4gICAgICByZXF1ZXN0X2lkOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB0aW1lIHdoZW4gdGhlIGV2ZW50IHdhcyBsb2dnZWQuICovXG4gICAgICB0aW1lOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGlkZW50aXR5ICh1c2VyIG9yIHJvbGUpIHdoaWNoIHRyaWdnZXJlZCB0aGUgZXZlbnRcbiAgICAgICAqIChtYXkgYmUgdW5kZWZpbmVkIGZvciBjZXJ0YWluIHVuYXV0aGVudGljYXRlZCBlbmRwb2ludHMpXG4gICAgICAgKi9cbiAgICAgIHRyaWdnZXJlZF9ieT86IHN0cmluZyB8IG51bGw7XG4gICAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVxdWVzdCB0eXBlIGZvciBxdWVyeWluZyB0aGUgYXVkaXQgbG9nLiAqL1xuICAgIEF1ZGl0TG9nUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gRW5kIHRpbWUgaW4gc2Vjb25kcyBzaW5jZSB1bml4IGVwb2NoLiBJZiBvbWl0dGVkLCBkZWZhdWx0cyB0byAnbm93Jy5cbiAgICAgICAqL1xuICAgICAgZW5kX3RpbWU/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gRmlsdGVyIHRoZSBsb2cgYnkgdGhlIGV2ZW50IG5hbWUuXG4gICAgICAgKiBJZiBvbWl0dGVkLCBhbGwgZXZlbnRzIHdpbGwgYmUgaW5jbHVkZWQuXG4gICAgICAgKiBNdXN0IG5vdCBiZSBzZXQgdG8gYW4gZW1wdHkgYXJyYXlcbiAgICAgICAqL1xuICAgICAgZXZlbnRzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPcmdFdmVudERpc2NyaW1pbmFudHNcIl1bXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBTdGFydCB0aW1lIGluIHNlY29uZHMgc2luY2UgdW5peCBlcG9jaC5cbiAgICAgICAqL1xuICAgICAgc3RhcnRfdGltZTogbnVtYmVyO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgYXVkaXQgbG9nIHJlc3BvbnNlICovXG4gICAgQXVkaXRMb2dSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBdWRpdCBsb2cgZW50cmllcyAqL1xuICAgICAgZW50cmllczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBdWRpdExvZ0VudHJ5XCJdW107XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIERhdGEgcmVxdWlyZWQgZm9yIGJvdGggYGF1dGhlbnRpY2F0ZWAgYW5kIGByZWZyZXNoYC4gKi9cbiAgICBBdXRoRGF0YToge1xuICAgICAgLyoqIEZvcm1hdDogaW50MzIgKi9cbiAgICAgIGVwb2NoX251bTogbnVtYmVyO1xuICAgICAgZXBvY2hfdG9rZW46IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQjMyXCJdO1xuICAgICAgb3RoZXJfdG9rZW46IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBdCByZWRlbXB0aW9uIHRpbWUsIHRoZSB1c2VyIG11c3QgcHJvdmlkZSBhIGNyZWRlbnRpYWwgdGhleSB3aXNoIHRvIHVzZSB0byBhdXRoZW50aWNhdGUuXG4gICAgICogVGhpcyBlbnVtIHJlcHJlc2VudHMgdGhlIHR3byBwb3NzaWJsZSBzb3VyY2VzIG9mIGF1dGhlbnRpY2F0aW9uLlxuICAgICAqL1xuICAgIEF1dGhTb3VyY2U6IHtcbiAgICAgIGNyZWRlbnRpYWw6IHN0cmluZztcbiAgICAgIGtpbmQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXV0aFNvdXJjZUtpbmRcIl07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQXQgcmVkZW1wdGlvbiB0aW1lLCB0aGUgdXNlciBtdXN0IHByb3ZpZGUgYSBjcmVkZW50aWFsIHRoZXkgd2lzaCB0byB1c2UgdG8gYXV0aGVudGljYXRlLlxuICAgICAqIFRoaXMgZW51bSByZXByZXNlbnRzIHRoZSB0d28gcG9zc2libGUgc291cmNlcyBvZiBhdXRoZW50aWNhdGlvbi5cbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIEF1dGhTb3VyY2VLaW5kOiBcInBhc3N3b3JkXCIgfCBcIm9pZGNcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXF1ZXN0IGJvZHkgZm9yIHRoZSBpZHAgYXV0aGVudGljYXRlIGVuZHBvaW50ICovXG4gICAgQXV0aGVudGljYXRpb25SZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZW1haWwgYWRkcmVzcyBvZiB0aGUgdXNlciBhdHRlbXB0aW5nIHRvIGF1dGhlbnRpY2F0ZVxuICAgICAgICogQGV4YW1wbGUgYWxpY2VAZXhhbXBsZS5jb21cbiAgICAgICAqL1xuICAgICAgZW1haWw6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHBhc3N3b3JkIGZvciB0aGF0IHVzZXIgKi9cbiAgICAgIHBhc3N3b3JkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXNwb25zZSB0byB0aGUgaWRwIGF1dGhlbnRpY2F0ZSBlbmRwb2ludCAqL1xuICAgIEF1dGhlbnRpY2F0aW9uUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gT0lEQyB0b2tlbiB0aGF0IGNhbiBiZSB1c2VkIHRvIGF1dGhlbnRpY2F0ZSB3aXRoIEN1YmVTaWduZXIgKi9cbiAgICAgIGlkX3Rva2VuOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVwcmVzZW50cyB0aGUgYXNzZXJ0aW9uIHJlc3BvbnNlIHVzZWQgYnkgY2xpZW50cyB3aGVuIGF0dGVtcHRpbmcgdG8gbG9nIGluIHdpdGggYSBrbm93biBjcmVkZW50aWFsXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2F1dGhlbnRpY2F0b3Jhc3NlcnRpb25yZXNwb25zZVxuICAgICAqL1xuICAgIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ29udGFpbnMgdGhlIHN0YW5kYXJkIENUQVAyIGF1dGhlbnRpY2F0b3IgZGF0YS4gTXVzdCBiZSBhIHZhbGlkIFtgQXV0aGVudGljYXRvckRhdGFgXS5cbiAgICAgICAqIFRoaXMgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgaG93IGtleSB3YXMgaW52b2tlZC5cbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tYXV0aGVudGljYXRvcmFzc2VydGlvbnJlc3BvbnNlLWF1dGhlbnRpY2F0b3JkYXRhXG4gICAgICAgKi9cbiAgICAgIGF1dGhlbnRpY2F0b3JEYXRhOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDb250YWlucyBVVEY4IGVuY29kZWQgSlNPTiB3aGljaCBtdXN0IGJlIGEgdmFsaWQgW2BDbGllbnREYXRhYF1cbiAgICAgICAqIFRoaXMgZGF0YSBpcyBjb21iaW5lZCB3aXRoIGBhdXRoZW50aWNhdG9yX2RhdGFgIHRvIHByb2R1Y2UgdGhlIHNpZ25hdHVyZVxuICAgICAgICogbWVhbmluZyB0aGUgY2xpZW50IGF0dGVzdHMgdG8gdGhlIGNvcnJlY3RuZXNzIG9mIHRoaXMgZGF0YS5cbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tYXV0aGVudGljYXRvcnJlc3BvbnNlLWNsaWVudGRhdGFqc29uXG4gICAgICAgKi9cbiAgICAgIGNsaWVudERhdGFKU09OOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc2lnbmF0dXJlIG9mIHRoZSBjb25jYXRlbmF0ZWQgYGF1dGhlbnRpY2F0b3JEYXRhIHx8IGhhc2hgIHdoZXJlXG4gICAgICAgKiBgaGFzaGAgaXMgdGhlIFNIQTI1NiBoYXNoIG9mIHRoZSBgY2xpZW50RGF0YUpTT05gIGJ1ZmZlcjpcbiAgICAgICAqXG4gICAgICAgKiBGaWVsZCBEZWZpbml0aW9uOiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLWF1dGhlbnRpY2F0b3Jhc3NlcnRpb25yZXNwb25zZS1zaWduYXR1cmVcbiAgICAgICAqIFN0ZXAgMTEgb2YgYGdldEFzc2VydGlvbmAgc3BlY2lmaWVzIHRoZSBjb25jYXRlbmF0aW9uOiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jc2N0bi1vcC1nZXQtYXNzZXJ0aW9uXG4gICAgICAgKiBSZXF1aXJlbWVudCBmb3IgU0hBLTI1NjogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2NvbGxlY3RlZGNsaWVudGRhdGEtaGFzaC1vZi10aGUtc2VyaWFsaXplZC1jbGllbnQtZGF0YVxuICAgICAgICovXG4gICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFsbG93cyB0aGUgYXV0aGVudGljYXRvciB0byBvcHRpb25hbGx5IGRlY2xhcmUgdGhlIGNyZWRlbnRpYWwgaWRlbnRpZmllciB0aGV5IHVzZWQuXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLWF1dGhlbnRpY2F0b3Jhc3NlcnRpb25yZXNwb25zZS11c2VyaGFuZGxlXG4gICAgICAgKi9cbiAgICAgIHVzZXJIYW5kbGU/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZW51bWVyYXRpb27igJlzIHZhbHVlcyBkZXNjcmliZSBhdXRoZW50aWNhdG9ycycgYXR0YWNobWVudCBtb2RhbGl0aWVzLlxuICAgICAqIFJlbHlpbmcgUGFydGllcyB1c2UgdGhpcyB0byBleHByZXNzIGEgcHJlZmVycmVkIGF1dGhlbnRpY2F0b3IgYXR0YWNobWVudFxuICAgICAqIG1vZGFsaXR5IHdoZW4gY2FsbGluZyBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKCkgdG8gY3JlYXRlIGEgY3JlZGVudGlhbC5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNlbnVtZGVmLWF1dGhlbnRpY2F0b3JhdHRhY2htZW50XG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBBdXRoZW50aWNhdG9yQXR0YWNobWVudDogXCJwbGF0Zm9ybVwiIHwgXCJjcm9zcy1wbGF0Zm9ybVwiO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UgaW50ZXJmYWNlIHJlcHJlc2VudHMgdGhlIGF1dGhlbnRpY2F0b3Inc1xuICAgICAqIHJlc3BvbnNlIHRvIGEgY2xpZW504oCZcyByZXF1ZXN0IGZvciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgcHVibGljIGtleVxuICAgICAqIGNyZWRlbnRpYWwuIEl0IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBuZXcgY3JlZGVudGlhbCB0aGF0IGNhbiBiZVxuICAgICAqIHVzZWQgdG8gaWRlbnRpZnkgaXQgZm9yIGxhdGVyIHVzZSwgYW5kIG1ldGFkYXRhIHRoYXQgY2FuIGJlIHVzZWQgYnkgdGhlXG4gICAgICogV2ViQXV0aG4gUmVseWluZyBQYXJ0eSB0byBhc3Nlc3MgdGhlIGNoYXJhY3RlcmlzdGljcyBvZiB0aGUgY3JlZGVudGlhbFxuICAgICAqIGR1cmluZyByZWdpc3RyYXRpb24uXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jaWZhY2UtYXV0aGVudGljYXRvcmF0dGVzdGF0aW9ucmVzcG9uc2VcbiAgICAgKi9cbiAgICBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgYW4gYXR0ZXN0YXRpb24gb2JqZWN0LCB3aGljaCBpcyBvcGFxdWUgdG8sIGFuZFxuICAgICAgICogY3J5cHRvZ3JhcGhpY2FsbHkgcHJvdGVjdGVkIGFnYWluc3QgdGFtcGVyaW5nIGJ5LCB0aGUgY2xpZW50LiBUaGVcbiAgICAgICAqIGF0dGVzdGF0aW9uIG9iamVjdCBjb250YWlucyBib3RoIGF1dGhlbnRpY2F0b3IgZGF0YSBhbmQgYW4gYXR0ZXN0YXRpb25cbiAgICAgICAqIHN0YXRlbWVudC4gVGhlIGZvcm1lciBjb250YWlucyB0aGUgQUFHVUlELCBhIHVuaXF1ZSBjcmVkZW50aWFsIElELCBhbmRcbiAgICAgICAqIHRoZSBjcmVkZW50aWFsIHB1YmxpYyBrZXkuIFRoZSBjb250ZW50cyBvZiB0aGUgYXR0ZXN0YXRpb24gc3RhdGVtZW50IGFyZVxuICAgICAgICogZGV0ZXJtaW5lZCBieSB0aGUgYXR0ZXN0YXRpb24gc3RhdGVtZW50IGZvcm1hdCB1c2VkIGJ5IHRoZVxuICAgICAgICogYXV0aGVudGljYXRvci4gSXQgYWxzbyBjb250YWlucyBhbnkgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0aGF0IHRoZVxuICAgICAgICogUmVseWluZyBQYXJ0eSdzIHNlcnZlciByZXF1aXJlcyB0byB2YWxpZGF0ZSB0aGUgYXR0ZXN0YXRpb24gc3RhdGVtZW50LFxuICAgICAgICogYXMgd2VsbCBhcyB0byBkZWNvZGUgYW5kIHZhbGlkYXRlIHRoZSBhdXRoZW50aWNhdG9yIGRhdGEgYWxvbmcgd2l0aCB0aGVcbiAgICAgICAqIEpTT04tY29tcGF0aWJsZSBzZXJpYWxpemF0aW9uIG9mIGNsaWVudCBkYXRhLiBGb3IgbW9yZSBkZXRhaWxzLCBzZWVcbiAgICAgICAqIMKn4oCvNi41IEF0dGVzdGF0aW9uLCDCp+KArzYuNS40IEdlbmVyYXRpbmcgYW4gQXR0ZXN0YXRpb24gT2JqZWN0LCBhbmQgRmlndXJlXG4gICAgICAgKiA2LlxuICAgICAgICovXG4gICAgICBhdHRlc3RhdGlvbk9iamVjdDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBhdHRyaWJ1dGUsIGluaGVyaXRlZCBmcm9tIEF1dGhlbnRpY2F0b3JSZXNwb25zZSwgY29udGFpbnMgdGhlXG4gICAgICAgKiBKU09OLWNvbXBhdGlibGUgc2VyaWFsaXphdGlvbiBvZiBjbGllbnQgZGF0YSAoc2VlIMKn4oCvNi41IEF0dGVzdGF0aW9uKVxuICAgICAgICogcGFzc2VkIHRvIHRoZSBhdXRoZW50aWNhdG9yIGJ5IHRoZSBjbGllbnQgaW4gb3JkZXIgdG8gZ2VuZXJhdGUgdGhpc1xuICAgICAgICogY3JlZGVudGlhbC4gVGhlIGV4YWN0IEpTT04gc2VyaWFsaXphdGlvbiBNVVNUIGJlIHByZXNlcnZlZCwgYXMgdGhlIGhhc2hcbiAgICAgICAqIG9mIHRoZSBzZXJpYWxpemVkIGNsaWVudCBkYXRhIGhhcyBiZWVuIGNvbXB1dGVkIG92ZXIgaXQuXG4gICAgICAgKi9cbiAgICAgIGNsaWVudERhdGFKU09OOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gV2ViQXV0aG4gUmVseWluZyBQYXJ0aWVzIG1heSB1c2UgdGhlIEF1dGhlbnRpY2F0b3JTZWxlY3Rpb25Dcml0ZXJpYVxuICAgICAqIGRpY3Rpb25hcnkgdG8gc3BlY2lmeSB0aGVpciByZXF1aXJlbWVudHMgcmVnYXJkaW5nIGF1dGhlbnRpY2F0b3JcbiAgICAgKiBhdHRyaWJ1dGVzLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RpY3RkZWYtYXV0aGVudGljYXRvcnNlbGVjdGlvbmNyaXRlcmlhXG4gICAgICovXG4gICAgQXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRlcmlhOiB7XG4gICAgICBhdXRoZW50aWNhdG9yQXR0YWNobWVudD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXV0aGVudGljYXRvckF0dGFjaG1lbnRcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZW1iZXIgaXMgcmV0YWluZWQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggV2ViQXV0aG4gTGV2ZWxcbiAgICAgICAqIDEgYW5kLCBmb3IgaGlzdG9yaWNhbCByZWFzb25zLCBpdHMgbmFtaW5nIHJldGFpbnMgdGhlIGRlcHJlY2F0ZWRcbiAgICAgICAqIOKAnHJlc2lkZW504oCdIHRlcm1pbm9sb2d5IGZvciBkaXNjb3ZlcmFibGUgY3JlZGVudGlhbHMuIFJlbHlpbmcgUGFydGllc1xuICAgICAgICogU0hPVUxEIHNldCBpdCB0byB0cnVlIGlmLCBhbmQgb25seSBpZiwgcmVzaWRlbnRLZXkgaXMgc2V0IHRvIHJlcXVpcmVkLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tYXV0aGVudGljYXRvcnNlbGVjdGlvbmNyaXRlcmlhLXJlcXVpcmVyZXNpZGVudGtleVxuICAgICAgICovXG4gICAgICByZXF1aXJlUmVzaWRlbnRLZXk/OiBib29sZWFuO1xuICAgICAgcmVzaWRlbnRLZXk/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJlc2lkZW50S2V5UmVxdWlyZW1lbnRcIl0gfCBudWxsO1xuICAgICAgdXNlclZlcmlmaWNhdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50XCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEF1dGhlbnRpY2F0b3JzIG1heSBpbXBsZW1lbnQgdmFyaW91cyB0cmFuc3BvcnRzIGZvciBjb21tdW5pY2F0aW5nIHdpdGhcbiAgICAgKiBjbGllbnRzLiBUaGlzIGVudW1lcmF0aW9uIGRlZmluZXMgaGludHMgYXMgdG8gaG93IGNsaWVudHMgbWlnaHQgY29tbXVuaWNhdGVcbiAgICAgKiB3aXRoIGEgcGFydGljdWxhciBhdXRoZW50aWNhdG9yIGluIG9yZGVyIHRvIG9idGFpbiBhbiBhc3NlcnRpb24gZm9yIGFcbiAgICAgKiBzcGVjaWZpYyBjcmVkZW50aWFsLiBOb3RlIHRoYXQgdGhlc2UgaGludHMgcmVwcmVzZW50IHRoZSBXZWJBdXRobiBSZWx5aW5nXG4gICAgICogUGFydHkncyBiZXN0IGJlbGllZiBhcyB0byBob3cgYW4gYXV0aGVudGljYXRvciBtYXkgYmUgcmVhY2hlZC4gQSBSZWx5aW5nXG4gICAgICogUGFydHkgd2lsbCB0eXBpY2FsbHkgbGVhcm4gb2YgdGhlIHN1cHBvcnRlZCB0cmFuc3BvcnRzIGZvciBhIHB1YmxpYyBrZXlcbiAgICAgKiBjcmVkZW50aWFsIHZpYSBnZXRUcmFuc3BvcnRzKCkuXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZW51bWRlZi1hdXRoZW50aWNhdG9ydHJhbnNwb3J0XG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBBdXRoZW50aWNhdG9yVHJhbnNwb3J0OiBcInVzYlwiIHwgXCJuZmNcIiB8IFwiYmxlXCIgfCBcImludGVybmFsXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IHRvIHNpZ24gYSBzZXJpYWxpemVkIEF2YWxhbmNoZSB0cmFuc2FjdGlvbiAqL1xuICAgIEF2YVNlcmlhbGl6ZWRUeFNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBleHBsYWluaW5nXG4gICAgICAgKiB0aGUgb3V0Y29tZSAoaS5lLiwgcGVybWl0dGVkIHZzLiBkZW5pZWQgdnMuIE1GQSByZXF1aXJlZCkgb2YgdGhlIHNpZ24gcmVxdWVzdC5cbiAgICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBleHBsYWluPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIE1GQSBpcyByZXF1aXJlZCwgZmFpbCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIHJldHVybmluZyAyMDIgYW5kIGNyZWF0aW5nXG4gICAgICAgKiBwZW5kaW5nIE1GQSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZmFpbF9vbl9tZmE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuIFBhc3NpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBtYWtlIHJldmlld2luZ1xuICAgICAgICogb2YgcGVuZGluZyBNRkEgcmVxdWVzdHMgYW5kL29yIGhpc3RvcmljYWwga2V5IHRyYW5zYWN0aW9ucyBtb3JlIHRyYW5zcGFyZW50LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGUuZy4sIHRvIGNhcnJ5IGFkZGl0aW9uYWwgZGF0YSB0byBXZWJIb29rIHBvbGljaWVzLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gU2VyaWFsaXplZCB0cmFuc2FjdGlvbiB0byBzaWduICovXG4gICAgICB0eDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IHRvIHNpZ24gYW4gQXZhbGFuY2hlIHRyYW5zYWN0aW9uICovXG4gICAgQXZhU2lnblJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFJlcXVlc3QgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcmVzcG9uc2UsIGV4cGxhaW5pbmdcbiAgICAgICAqIHRoZSBvdXRjb21lIChpLmUuLCBwZXJtaXR0ZWQgdnMuIGRlbmllZCB2cy4gTUZBIHJlcXVpcmVkKSBvZiB0aGUgc2lnbiByZXF1ZXN0LlxuICAgICAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGV4cGxhaW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgTUZBIGlzIHJlcXVpcmVkLCBmYWlsIHRoZSByZXF1ZXN0IGluc3RlYWQgb2YgcmV0dXJuaW5nIDIwMiBhbmQgY3JlYXRpbmdcbiAgICAgICAqIHBlbmRpbmcgTUZBIHJlcXVlc3QuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBmYWlsX29uX21mYT86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBtZXRhZGF0YS4gUGFzc2luZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFzIG1ldGFkYXRhIGNhbiBiZSB1c2VkIHRvIG1ha2UgcmV2aWV3aW5nXG4gICAgICAgKiBvZiBwZW5kaW5nIE1GQSByZXF1ZXN0cyBhbmQvb3IgaGlzdG9yaWNhbCBrZXkgdHJhbnNhY3Rpb25zIG1vcmUgdHJhbnNwYXJlbnQuIEl0IGNhbiBhbHNvIGJlIHVzZWQgZS5nLiwgdG8gY2FycnkgYWRkaXRpb25hbCBkYXRhIHRvIFdlYkhvb2sgcG9saWNpZXMuXG4gICAgICAgKi9cbiAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVHJhbnNhY3Rpb24gdG8gc2lnbi5cbiAgICAgICAqXG4gICAgICAgKiBFeGFtcGxlczpcbiAgICAgICAqIC0ge1wiUFwiOiB7IFwiQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3JcIjogW1R4SnNvbl0oaHR0cHM6Ly9naXRodWIuY29tL2F2YS1sYWJzL2F2YWxhbmNoZS1ycy9ibG9iL2F2YWxhbmNoZS10eXBlcy12MC4xLjMvY3JhdGVzL2F2YWxhbmNoZS10eXBlcy9zcmMvcGxhdGZvcm12bS90eHMvYWRkX3Blcm1pc3Npb25sZXNzX3ZhbGlkYXRvci5ycyNMMTQpIH19XG4gICAgICAgKiAtIHtcIlBcIjogeyBcIkFkZFN1Ym5ldFZhbGlkYXRvclwiOiBbVHhKc29uXShodHRwczovL2dpdGh1Yi5jb20vYXZhLWxhYnMvYXZhbGFuY2hlLXJzL2Jsb2IvYXZhbGFuY2hlLXR5cGVzLXYwLjEuMy9jcmF0ZXMvYXZhbGFuY2hlLXR5cGVzL3NyYy9wbGF0Zm9ybXZtL3R4cy9hZGRfc3VibmV0X3ZhbGlkYXRvci5ycyNMMjkpIH19XG4gICAgICAgKiAtIHtcIlBcIjogeyBcIkFkZFZhbGlkYXRvclwiOiBbVHhKc29uXShodHRwczovL2dpdGh1Yi5jb20vYXZhLWxhYnMvYXZhbGFuY2hlLXJzL2Jsb2IvYXZhbGFuY2hlLXR5cGVzLXYwLjEuMy9jcmF0ZXMvYXZhbGFuY2hlLXR5cGVzL3NyYy9wbGF0Zm9ybXZtL3R4cy9hZGRfdmFsaWRhdG9yLnJzI0wxMikgfX1cbiAgICAgICAqIC0ge1wiUFwiOiB7IFwiQ3JlYXRlQ2hhaW5cIjogW1R4SnNvbl0oaHR0cHM6Ly9naXRodWIuY29tL2F2YS1sYWJzL2F2YWxhbmNoZS1ycy9ibG9iL2F2YWxhbmNoZS10eXBlcy12MC4xLjMvY3JhdGVzL2F2YWxhbmNoZS10eXBlcy9zcmMvcGxhdGZvcm12bS90eHMvY3JlYXRlX2NoYWluLnJzI0w4KSB9fVxuICAgICAgICogLSB7XCJQXCI6IHsgXCJDcmVhdGVTdWJuZXRcIjogW1R4SnNvbl0oaHR0cHM6Ly9naXRodWIuY29tL2F2YS1sYWJzL2F2YWxhbmNoZS1ycy9ibG9iL2F2YWxhbmNoZS10eXBlcy12MC4xLjMvY3JhdGVzL2F2YWxhbmNoZS10eXBlcy9zcmMvcGxhdGZvcm12bS90eHMvY3JlYXRlX3N1Ym5ldC5ycyNMOCkgfX1cbiAgICAgICAqIC0ge1wiUFwiOiB7IFwiRXhwb3J0XCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL3BsYXRmb3Jtdm0vdHhzL2V4cG9ydC5ycyNMMTIpIH19XG4gICAgICAgKiAtIHtcIlBcIjogeyBcIkltcG9ydFwiOiBbVHhKc29uXShodHRwczovL2dpdGh1Yi5jb20vYXZhLWxhYnMvYXZhbGFuY2hlLXJzL2Jsb2IvYXZhbGFuY2hlLXR5cGVzLXYwLjEuMy9jcmF0ZXMvYXZhbGFuY2hlLXR5cGVzL3NyYy9wbGF0Zm9ybXZtL3R4cy9pbXBvcnQucnMjTDEyKSB9fVxuICAgICAgICogLSB7XCJYXCI6IHsgXCJCYXNlXCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL2F2bS90eHMvbW9kLnJzI0wyMSkgfX1cbiAgICAgICAqIC0ge1wiWFwiOiB7IFwiRXhwb3J0XCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL2F2bS90eHMvZXhwb3J0LnJzI0wxNikgfX1cbiAgICAgICAqIC0ge1wiWFwiOiB7IFwiSW1wb3J0XCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL2F2bS90eHMvaW1wb3J0LnJzI0wxNCkgfX1cbiAgICAgICAqL1xuICAgICAgdHg6IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gV3JhcHBlciBhcm91bmQgYSB6ZXJvaXppbmcgMzItYnl0ZSBmaXhlZC1zaXplIGFycmF5ICovXG4gICAgQjMyOiBzdHJpbmc7XG4gICAgQmFieWxvbkNvdlNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBleHBsYWluaW5nXG4gICAgICAgKiB0aGUgb3V0Y29tZSAoaS5lLiwgcGVybWl0dGVkIHZzLiBkZW5pZWQgdnMuIE1GQSByZXF1aXJlZCkgb2YgdGhlIHNpZ24gcmVxdWVzdC5cbiAgICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBleHBsYWluPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIE1GQSBpcyByZXF1aXJlZCwgZmFpbCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIHJldHVybmluZyAyMDIgYW5kIGNyZWF0aW5nXG4gICAgICAgKiBwZW5kaW5nIE1GQSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZmFpbF9vbl9tZmE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuIFBhc3NpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBtYWtlIHJldmlld2luZ1xuICAgICAgICogb2YgcGVuZGluZyBNRkEgcmVxdWVzdHMgYW5kL29yIGhpc3RvcmljYWwga2V5IHRyYW5zYWN0aW9ucyBtb3JlIHRyYW5zcGFyZW50LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGUuZy4sIHRvIGNhcnJ5IGFkZGl0aW9uYWwgZGF0YSB0byBXZWJIb29rIHBvbGljaWVzLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBrZXlzIGZvciB0aGUgZmluYWxpdHkgcHJvdmlkZXJzIHRvIHdoaWNoIHRoaXMgdHJhbnNhY3Rpb24gaXMgYmVpbmcgc3Rha2VkLlxuICAgICAgICogRWFjaCBrZXkgaXMgYSBoZXggc3RyaW5nIGNvbnRhaW5pbmcgYSBTRUMxLWVuY29kZWQgc2VjcDI1NmsxIHB1YmxpYyBrZXkuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwiMDNiNTczZTMxODgwM2ZkN2FlZTFiZTViNmIxOGQ0OTZjYzYwZWNjNTI0MjlkYmQ0NzdhODc5MjE3YzNlZDI2YTc5NWNiNGY0ZTg4MGFhZmYzYTZhZDY2MzM1ZTU0MDRmYTUxY2FlYjQ5NjRmMGM5Zjc1NjI3Mzc4NjRlM2JkZTViY1wiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIGZwX2VuY19rZXlzOiBzdHJpbmdbXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzbGFzaC11bmJvbmRpbmcgdHJhbnNhY3Rpb24gYmVpbmcgYXBwcm92ZWQgYnkgdGhlIGNvdmVuYW50IHNpZ25lci5cbiAgICAgICAqIFRoaXMgaXMgYSBCaXRjb2luIGNvbnNlbnN1cy0tZW5jb2RlZCBoZXggc3RyaW5nLlxuICAgICAgICogQGV4YW1wbGUgNjg5OWI1YmFmNzEzYTJjNjBlNmFiZjA1ZTg5MDk0NDBkNDFkYzQxMjViOTg4OTFjMzMyZjcwODdkYWYwMTdmYjI0MzYyODZlMmFhMDk3NDY0ZDljOTI3ZDY0NGZhNmRlXG4gICAgICAgKi9cbiAgICAgIHNsYXNoX3VuYm9uZGluZ190eDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHNsYXNoaW5nIHNjcmlwdCBpbiB0aGUgc3Rha2luZyB0cmFuc2FjdGlvbi5cbiAgICAgICAqIFRoaXMgaXMgYSBCaXRjb2luIGNvbnNlbnN1cy0tZW5jb2RlZCBoZXggc3RyaW5nLlxuICAgICAgICogQGV4YW1wbGUgODc3ZjA1Y2M2MjZkZWRjZjUzYjUwZWViYTA4MjFjYTBcbiAgICAgICAqL1xuICAgICAgc2xhc2hpbmdfc2NyaXB0OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc2xhc2hpbmcgdHJhbnNhY3Rpb24gYmVpbmcgYXBwcm92ZWQgYnkgdGhlIGNvdmVuYW50IHNpZ25lci5cbiAgICAgICAqIFRoaXMgaXMgYSBCaXRjb2luIGNvbnNlbnN1cy0tZW5jb2RlZCBoZXggc3RyaW5nLlxuICAgICAgICogQGV4YW1wbGUgZjM3ZTdjYTJiMjRhNWY3YjhiNmM5YmEwNTRmOTkzMmVmYjA0N2NlODBjZjUwYTExOGUzZjcyNzUxNDI5ZmIxM2EzNTVmYTA5M2JkMzU4Y2RjMzBlZmFjZjVhNjJjYWJlXG4gICAgICAgKi9cbiAgICAgIHNsYXNoaW5nX3R4OiBzdHJpbmc7XG4gICAgICBzdGFrZV9leHBhbnNpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJhYnlsb25Db3ZTdGFrZUV4cGFuc2lvblJlcXVlc3RcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG91dHB1dCBpbmRleCBvZiB0aGUgQmFieWxvbiBzdGFraW5nIHNjcmlwdHMgaW4gdGhlIHN0YWtpbmcgdHJhbnNhY3Rpb24uXG4gICAgICAgKiBAZXhhbXBsZSAxXG4gICAgICAgKi9cbiAgICAgIHN0YWtpbmdfb3V0cHV0X2lkeDogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YWtpbmcgdHJhbnNhY3Rpb24gYmVpbmcgYXBwcm92ZWQgYnkgdGhlIGNvdmVuYW50IHNpZ25lci5cbiAgICAgICAqIFRoaXMgaXMgYSBCaXRjb2luIGNvbnNlbnN1cy0tZW5jb2RlZCBoZXggc3RyaW5nLlxuICAgICAgICogQGV4YW1wbGUgOTU0YmExMThlNzEzM2I0YmIzYTY3YWNjNGY0MGNiOTUyOWFhYmJjMDEwMDcyMjlmN2JmZDg1NzA2ODUwMTc1ZDc3ZDVjYmU1ZTRjMGNhNjcyMzhkMTRhZmE0N2M1MWNjXG4gICAgICAgKi9cbiAgICAgIHN0YWtpbmdfdHg6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1bmJvbmRpbmcgc2NyaXB0IGluIHRoZSBzdGFraW5nIHRyYW5zYWN0aW9uLlxuICAgICAgICogVGhpcyBpcyBhIEJpdGNvaW4gY29uc2Vuc3VzLS1lbmNvZGVkIGhleCBzdHJpbmcuXG4gICAgICAgKiBAZXhhbXBsZSA1NWY2NjM4YzBjMGMwYjBlNTFjYTkyMmUwZTllNmFiZFxuICAgICAgICovXG4gICAgICB1bmJvbmRpbmdfc2NyaXB0OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc2xhc2hpbmcgc2NyaXB0IGluIHRoZSB1bmJvbmRpbmcgdHJhbnNhY3Rpb24uXG4gICAgICAgKiBUaGlzIGlzIGEgQml0Y29pbiBjb25zZW5zdXMtLWVuY29kZWQgaGV4IHN0cmluZy5cbiAgICAgICAqIEBleGFtcGxlIGUxMzNmNWE5MjNhMDdiOWM3ZjY3NjdjZGExNzEwMDViXG4gICAgICAgKi9cbiAgICAgIHVuYm9uZGluZ19zbGFzaGluZ19zY3JpcHQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1bmJvbmRpbmcgdHJhbnNhY3Rpb24gYmVpbmcgYXBwcm92ZWQgYnkgdGhlIGNvdmVuYW50IHNpZ25lci5cbiAgICAgICAqIFRoaXMgaXMgYSBCaXRjb2luIGNvbnNlbnN1cy0tZW5jb2RlZCBoZXggc3RyaW5nLlxuICAgICAgICogQGV4YW1wbGUgOTY5Y2I5NTEyOWE1NWE5NmQ1MTkxOWY1ZjY3ZjNhZGM1OTdlY2RlZTZlZGEyMWU3Nzc3ZjM3MGMzYjE4MDkzMzZlZTdkMDhlYzU3NGM4YmJiMzYxZmY2M2QwMzJhOTc2XG4gICAgICAgKi9cbiAgICAgIHVuYm9uZGluZ190eDogc3RyaW5nO1xuICAgIH07XG4gICAgQmFieWxvbkNvdlNpZ25SZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY3kgZXZhbHVhdGlvbiB0cmVlLiAqL1xuICAgICAgcG9saWN5X2V2YWxfdHJlZT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzbGFzaC11bmJvbmRpbmcgdHJhbnNhY3Rpb24gc2lnbmF0dXJlcyBhcyBhbiBhcnJheSBvZiBoZXggc3RyaW5ncyB3aXRoIG5vIDB4IHByZWZpeFxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICBcIjAyZTIxYTdiMDUxOTUzOWVmNjcwZjc5ZDFjMjVhNTRmOTBiMGM2ZDlmZGI1NmE3ZGU4MTNmYjIwNzAzMzAzMmZmZmFkOGFhYWZlYjFiNzdkZDllYThmMTdkYWRjZjI5NzY5NmJiZjVhNDEzMzI5MmYzNTE1Yjg2YmI5YzJkNzhkOWNcIlxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBzbGFzaF91bmJvbmRpbmdfdHJhbnNhY3Rpb25zX3NpZ25hdHVyZXM6IHN0cmluZ1tdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHNsYXNoaW5nIHRyYW5zYWN0aW9uIHNpZ25hdHVyZXMgYXMgYW4gYXJyYXkgb2YgaGV4IHN0cmluZ3Mgd2l0aCBubyAweCBwcmVmaXhcbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAgXCIwMzA3NWVjYTlkMTc2ZDE2MDVkNmMwOTZjMTExZTlhNGY4ZDg3MzlhYzk3MDhjMWRmM2VkNTE2MTA2ZTdhYjEzODdhMzkyNGE2NjUyYWNmMmUzNTI0MzU5NzMxY2ExZmJiMzM4YTNhZmIxYTY3ZjZlYTE5YzIwN2I2ZmY0NjZhNWFkXCIsXG4gICAgICAgKiAgIFwiMDIyMjI0NDkzZjRjZmZhZDViODQwNzZkYjMyZGQ4YzQ5YTI4ZmY0OGFmNGUxOWUyYmNjOTk1M2ZmODAzNDdiYTZlODM0M2NmN2E0NGU3NGE5NmZmNzFlYTU5YTAzYjQwMTY2ZTg1YjBkMTM1NTk1NGUwNGE0NDI3ZGM4ZDYzN2ZmMFwiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHNsYXNoaW5nX3RyYW5zYWN0aW9uc19zaWduYXR1cmVzOiBzdHJpbmdbXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzaWduYXR1cmUgdGhhdCBhbGxvd3MgZXhwYW5kaW5nIGEgc3Rha2UgYnkgc3BlbmRpbmcgdGhlIGN1cnJlbnQgYWN0aXZlXG4gICAgICAgKiBzdGFrZSB0cmFuc2FjdGlvbiBpbnRvIGEgbmV3IHN0YWtpbmcgdHJhbnNhY3Rpb24uIEEgdmFsdWUgaXMgcHJlc2VudCBpZmYgdGhlXG4gICAgICAgKiBjb3JyZXNwb25kaW5nIHJlcXVlc3QgaW5jbHVkZWQgYSBgc3Rha2VfZXhwYW5zaW9uYCB2YWx1ZS5cbiAgICAgICAqIEBleGFtcGxlIGI1NzNlMzE4ODAzZmQ3YWVlMWJlNWI2YjE4ZDQ5NmNjNjBlY2M1MjQyOWRiZDQ3N2E4NzkyMTdjM2VkMjZhNzk1Y2I0ZjRlODgwYWFmZjNhNmFkNjYzMzVlNTQwNGZhNTFjYWViNDk2NGYwYzlmNzU2MjczNzg2NGUzYmRlNWJjXG4gICAgICAgKi9cbiAgICAgIHN0YWtlX2V4cGFuc2lvbl90cmFuc2FjdGlvbl9zaWduYXR1cmU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHVuYm9uZGluZyB0cmFuc2FjdGlvbiBzaWduYXR1cmUgYXMgaGV4IHN0cmluZyB3aXRoIG5vIDB4IHByZWZpeFxuICAgICAgICogQGV4YW1wbGUgYjU3M2UzMTg4MDNmZDdhZWUxYmU1YjZiMThkNDk2Y2M2MGVjYzUyNDI5ZGJkNDc3YTg3OTIxN2MzZWQyNmE3OTVjYjRmNGU4ODBhYWZmM2E2YWQ2NjMzNWU1NDA0ZmE1MWNhZWI0OTY0ZjBjOWY3NTYyNzM3ODY0ZTNiZGU1YmNcbiAgICAgICAqL1xuICAgICAgdW5ib25kaW5nX3RyYW5zYWN0aW9uX3NpZ25hdHVyZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IHRvIGV4cGFuZCBhbiBhY3RpdmUgc3Rha2Ugd2l0aCBhZGRpdGlvbmFsIGZ1bmRzLiAqL1xuICAgIEJhYnlsb25Db3ZTdGFrZUV4cGFuc2lvblJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB0cmFuc2FjdGlvbiBvdXRwdXQgdGhhdCBpcyBiZWluZyB1c2VkIHRvIGZ1bmQgdGhlIHN0YWtlIGV4cGFuc2lvbi5cbiAgICAgICAqIFRoaXMgaXMgYSBCaXRjb2luIGNvbnNlbnN1cy0tZW5jb2RlZCBoZXggc3RyaW5nLlxuICAgICAgICovXG4gICAgICBvdGhlcl9mdW5kaW5nX291dHB1dDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGFjdGl2ZSBzdGFraW5nIHRyYW5zYWN0aW9uIHRoYXQgaXMgYmVpbmcgZXhwYW5kZWQgd2l0aCB0aGlzIHJlcXVlc3QuXG4gICAgICAgKiBUaGlzIGlzIGEgQml0Y29pbiBjb25zZW5zdXMtLWVuY29kZWQgaGV4IHN0cmluZy5cbiAgICAgICAqIEBleGFtcGxlIDk1NGJhMTE4ZTcxMzNiNGJiM2E2N2FjYzRmNDBjYjk1MjlhYWJiYzAxMDA3MjI5ZjdiZmQ4NTcwNjg1MDE3NWQ3N2Q1Y2JlNWU0YzBjYTY3MjM4ZDE0YWZhNDdjNTFjY1xuICAgICAgICovXG4gICAgICBwcmV2aW91c19hY3RpdmVfc3Rha2VfdHg6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1bmJvbmRpbmcgc2NyaXB0IGluIHRoZSBhY3RpdmUgc3Rha2luZyB0cmFuc2FjdGlvbi5cbiAgICAgICAqIFRoaXMgaXMgYSBCaXRjb2luIGNvbnNlbnN1cy0tZW5jb2RlZCBoZXggc3RyaW5nLlxuICAgICAgICogQGV4YW1wbGUgZTEzM2Y1YTkyM2EwN2I5YzdmNjc2N2NkYTE3MTAwNWJcbiAgICAgICAqL1xuICAgICAgcHJldmlvdXNfYWN0aXZlX3N0YWtlX3VuYm9uZGluZ19zY3JpcHQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpbmRleCBvZiB0aGUgYWN0aXZlIHN0YWtlIG91dHB1dCBpbiB0aGUgYWN0aXZlIHN0YWtpbmcgdHJhbnNhY3Rpb24uXG4gICAgICAgKiBAZXhhbXBsZSAxXG4gICAgICAgKi9cbiAgICAgIHByZXZpb3VzX3N0YWtpbmdfb3V0cHV0X2lkeDogbnVtYmVyO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXR3b3JrLWlkIGZvciBCYWJ5bG9uIHN0YWtpbmdcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIEJhYnlsb25OZXR3b3JrSWQ6IFwiYmJ0NFwiIHwgXCJiYm4xXCIgfCBcImJidDVcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEJhYnlsb24gc3Rha2luZyByZWdpc3RyYXRpb24gc3BlY2lmaWNhdGlvbiAqL1xuICAgIEJhYnlsb25SZWdpc3RyYXRpb25SZXF1ZXN0OiAoe1xuICAgICAgZXhwbGljaXRfcGFyYW1zPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCYWJ5bG9uU3Rha2luZ1BhcmFtc1wiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgU2Nobm9yciBwdWJsaWMga2V5IChpLmUuLCAzMi1ieXRlIFgtY29vcmRpbmF0ZSkgb2YgdGhlIGZpbmFsaXR5XG4gICAgICAgKiBwcm92aWRlciB0byB3aGljaCB0aGUgc3Rha2UgaXMgZGVsZWdhdGVkLlxuICAgICAgICovXG4gICAgICBmaW5hbGl0eV9wcm92aWRlcl9wa3M6IHN0cmluZ1tdO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGxvY2sgdGltZSB1c2VkIGZvciB0aGUgd2l0aGRyYXdhbCBvdXRwdXQgaW4gdGhlIHN0YWtpbmcgZGVwb3NpdCB0cmFuc2FjdGlvblxuICAgICAgICovXG4gICAgICBsb2NrX3RpbWU6IG51bWJlcjtcbiAgICAgIG5ldHdvcms6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFieWxvbk5ldHdvcmtJZFwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBTY2hub3JyIHB1YmxpYyBrZXkgKGkuZS4sIDMyLWJ5dGUgWC1jb29yZGluYXRlKSBvZiB0aGUgc3Rha2VyLiBUaGlzXG4gICAgICAgKiBpcyB0aGUga2V5IHRoYXQgc2lnbnMgdGhlIHNsYXNoaW5nLCB3aXRoZHJhd2FsLCBhbmQgdW5ib25kaW5nIHNjcmlwdHMuXG4gICAgICAgKi9cbiAgICAgIHN0YWtlcl9wazogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHBhcmFtZXRlciB2ZXJzaW9uIHRvIHVzZS4gSWYgYE5vbmVgLCB1c2VzIHRoZSBsYXRlc3QgdmVyc2lvbi5cbiAgICAgICAqL1xuICAgICAgdmVyc2lvbj86IG51bWJlciB8IG51bGw7XG4gICAgfSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGNoYW5nZSBhZGRyZXNzLCBzcGVjaWZpZWQgYXMgYSBCaXRjb2luIHNwZW5kIHNjcmlwdCAqL1xuICAgICAgY2hhbmdlOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdHJhbnNhY3Rpb24gZmVlIHZhbHVlLiBUaGUgYGZlZV90eXBlYCBmaWVsZCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhpc1xuICAgICAgICogaXMgYSBmaXhlZCBmZWUgaW4gc2F0cyBvciBhIHJhdGUgaW4gc2F0cyBwZXIgKGVzdGltYXRlZCkgdmlydHVhbCBieXRlIG9mXG4gICAgICAgKiB0cmFuc2FjdGlvbiB3ZWlnaHQgKGkuZS4sIHNhdHMgcGVyIHZiKS5cbiAgICAgICAqL1xuICAgICAgZmVlOiBudW1iZXI7XG4gICAgICBmZWVfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJGZWVUeXBlXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQnkgZGVmYXVsdCwgdGhlIFBTQlQgaW4gdGhpcyByZXF1ZXN0IGNhbiBvbmx5IHNwZWNpZnkgdHJhbnNhY3Rpb24gaW5wdXRzOlxuICAgICAgICogUFNCVHMgdGhhdCBzcGVjaWZ5IG91dHB1dHMgd2lsbCByZXN1bHQgaW4gYW4gZXJyb3IuIFdoZW4gdGhpcyBmbGFnIGlzIHNldCxcbiAgICAgICAqIGV4aXN0aW5nIG91dHB1dHMgaW4gdGhlIFBTQlQgd2lsbCBpbnN0ZWFkIGJlIGlnbm9yZWQgKGkuZS4sIGRlbGV0ZWQgZnJvbVxuICAgICAgICogdGhlIFBTQlQpIHdoZW4gY3JlYXRpbmcgdGhlIGRlcG9zaXQgdHJhbnNhY3Rpb24uXG4gICAgICAgKi9cbiAgICAgIGlnbm9yZV9wc2J0X291dHB1dHM/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBoZXgtc2VyaWFsaXplZCBQU0JUICh2ZXJzaW9uIDApIGNvbnRhaW5pbmcgdGhlIHRyYW5zYWN0aW9uIGlucHV0cyBhbmRcbiAgICAgICAqIGFsbCBuZWNlc3NhcnkgaW5mb3JtYXRpb24gZm9yIHNpZ25pbmcgKGUuZy4sIHRhcHJvb3QgcGF0aCBhbmQgbGVhZlxuICAgICAgICogaW5mb3JtYXRpb24pLiBUaGlzIFBTQlQgbXVzdCBub3QgaGF2ZSBhbnkgdHJhbnNhY3Rpb24gb3V0cHV0czsgdGhleVxuICAgICAgICogd2lsbCBiZSBhZGRlZCB0byB0aGUgcmV0dXJuZWQgUFNCVC5cbiAgICAgICAqL1xuICAgICAgcHNidDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHZhbHVlIHRvIGJlIHN0YWtlZCBpbiBzYXRzXG4gICAgICAgKi9cbiAgICAgIHZhbHVlOiBudW1iZXI7XG4gICAgfSkgJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBleHBsYWluaW5nXG4gICAgICAgKiB0aGUgb3V0Y29tZSAoaS5lLiwgcGVybWl0dGVkIHZzLiBkZW5pZWQgdnMuIE1GQSByZXF1aXJlZCkgb2YgdGhlIHNpZ24gcmVxdWVzdC5cbiAgICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBleHBsYWluPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIE1GQSBpcyByZXF1aXJlZCwgZmFpbCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIHJldHVybmluZyAyMDIgYW5kIGNyZWF0aW5nXG4gICAgICAgKiBwZW5kaW5nIE1GQSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZmFpbF9vbl9tZmE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuIFBhc3NpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBtYWtlIHJldmlld2luZ1xuICAgICAgICogb2YgcGVuZGluZyBNRkEgcmVxdWVzdHMgYW5kL29yIGhpc3RvcmljYWwga2V5IHRyYW5zYWN0aW9ucyBtb3JlIHRyYW5zcGFyZW50LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGUuZy4sIHRvIGNhcnJ5IGFkZGl0aW9uYWwgZGF0YSB0byBXZWJIb29rIHBvbGljaWVzLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBCYWJ5bG9uIGFkZHJlc3MgdGhhdCB3aWxsIHJlY2VpdmUgdGhlIHN0YWtpbmcgcmV3YXJkcyBmb3IgdGhpcyBkZXBvc2l0LlxuICAgICAgICogQmFieWxvbiByZXF1aXJlcyB0aGlzIHRvIGJlIHRoZSBzYW1lIGFkZHJlc3MgdGhhdCByZWdpc3RlcnMgdGhlIGRlcG9zaXQgb25cbiAgICAgICAqIHRoZSBCYWJ5bG9uIGNoYWluLlxuICAgICAgICpcbiAgICAgICAqIFRoaXMgbXVzdCBiZSBhIHNlY3AyNTZrMSBDb3Ntb3MgYWRkcmVzcyB3aXRoIGVpdGhlciBhIGBiYm5gIG9yIGEgYGNvc21vc2BcbiAgICAgICAqIGh1bWFuLXJlYWRhYmxlIHBhcnQgKGkuZS4sIGBiYm4xLi4uYCBvciBgY29zbW9zMS4uLmApLiBUaGUgbGF0dGVyIGxldHMgeW91XG4gICAgICAgKiBzcGVjaWZ5IHRoZSBtYXRlcmlhbC1pZCBvZiBhIFNlY3BDb3Ntb3MgQ3ViZVNpZ25lciBrZXkuXG4gICAgICAgKiBAZXhhbXBsZSBiYm4xbjVhbm1jMGtrcmg3MHlqeTdmNmYzOTljNzR5ZDA5eGw1dGVmZm1cbiAgICAgICAqL1xuICAgICAgYmJuX2FkZHI6IHN0cmluZztcbiAgICB9O1xuICAgIEJhYnlsb25SZWdpc3RyYXRpb25SZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY3kgZXZhbHVhdGlvbiB0cmVlLiAqL1xuICAgICAgcG9saWN5X2V2YWxfdHJlZT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBCYWJ5bG9uIGFkZHJlc3MgdGhhdCB3aWxsIHJlY2VpdmUgdGhlIHN0YWtpbmcgcmV3YXJkcyBmb3IgdGhpcyBkZXBvc2l0LlxuICAgICAgICpcbiAgICAgICAqIFRoaXMgdmFsdWUgd2lsbCBjb3JyZXNwb25kIHRvIHRoZSBgYmJuX2FkZHJgIHZhbHVlIHNwZWNpZmllZCBpbiB0aGUgcmVxdWVzdCxcbiAgICAgICAqIGJ1dCBpdCB3aWxsIGFsd2F5cyBoYXZlIGEgYGJibmAgaHVtYW4tcmVhZGFibGUgcGFydC5cbiAgICAgICAqIEBleGFtcGxlIGJibjFuNWFubWMwa2tyaDcweWp5N2Y2ZjM5OWM3NHlkMDl4bDV0ZWZmbVxuICAgICAgICovXG4gICAgICBiYm5fYWRkcjogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGRlcG9zaXQgdHJhbnNhY3Rpb24gUFNCVC4gVGhpcyBQU0JUIGluY2x1ZGVzIHNpZ25hdHVyZXMgb24gYW55XG4gICAgICAgKiBpbnB1dHMgY29udHJvbGxlZCBieSB0aGUgc3Rha2VyIHRhcHJvb3Qga2V5IHNwZWNpZmllZCBpbiB0aGUgcmVxdWVzdC5cbiAgICAgICAqL1xuICAgICAgZGVwb3NpdDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGRlcG9zaXQgdHJhbnNhY3Rpb24gZmVlIGluIHNhdHMuXG4gICAgICAgKiBAZXhhbXBsZSAxMzM3XG4gICAgICAgKi9cbiAgICAgIGRlcG9zaXRfZmVlOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcHJvb2Ygb2YgcG9zc2Vzc2lvbiwgaS5lLiwgYSBCSVAzMjIgc2lnbmF0dXJlIG9uIHRoZSBzdGFrZXInc1xuICAgICAgICogQmFieWxvbiBhZGRyZXNzIHNpZ25lZCBieSB0aGUgc3Rha2VyIHRhcHJvb3Qga2V5LiBUaGlzIGlzIGEgQml0Y29pblxuICAgICAgICogd2l0bmVzcyBzdGFjayBpbiBCaXRjb2luIGNvbnNlbnN1cyBoZXggZW5jb2RpbmcuXG4gICAgICAgKi9cbiAgICAgIHBvcDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgc2xhc2gtZGVwb3NpdCB0cmFuc2FjdGlvbiBpbiBCaXRjb2luIGNvbnNlbnN1cyBoZXggZW5jb2RpbmcuICovXG4gICAgICBzbGFzaF9kZXBvc2l0OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3Rha2VyIHRhcHJvb3Qga2V5J3Mgc2lnbmF0dXJlIG9uIHRoZSBzbGFzaC1kZXBvc2l0IHRyYW5zYWN0aW9uLlxuICAgICAgICogVGhpcyBpcyBhIEJJUDM0MCBzaWduYXR1cmUgaW4gaGV4IGZvcm1hdC5cbiAgICAgICAqL1xuICAgICAgc2xhc2hfZGVwb3NpdF9zaWc6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHNsYXNoLXVuYm9uZCB0cmFuc2FjdGlvbiBpbiBCaXRjb2luIGNvbnNlbnN1cyBoZXggZW5jb2RpbmcuICovXG4gICAgICBzbGFzaF91bmJvbmQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFrZXIgdGFwcm9vdCBrZXkncyBzaWduYXR1cmUgb24gdGhlIHNsYXNoLXVuYm9uZCB0cmFuc2FjdGlvbi5cbiAgICAgICAqIFRoaXMgaXMgYSBCSVAzNDAgc2lnbmF0dXJlIGluIGhleCBmb3JtYXQuXG4gICAgICAgKi9cbiAgICAgIHNsYXNoX3VuYm9uZF9zaWc6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlICh1bnNpZ25lZCkgdW5ib25kaW5nIHRyYW5zYWN0aW9uIGluIEJpdGNvaW4gY29uc2Vuc3VzIGhleCBlbmNvZGluZy4gKi9cbiAgICAgIHVuYm9uZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBEYXRhIG5lZWRlZCB0byBjcmVhdGUgdGhlIEJhYnlsb24gZGVwb3NpdCBzY3JpcHRzICovXG4gICAgQmFieWxvblNjcmlwdERhdGE6IHtcbiAgICAgIGV4cGxpY2l0X3BhcmFtcz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFieWxvblN0YWtpbmdQYXJhbXNcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFNjaG5vcnIgcHVibGljIGtleSAoaS5lLiwgMzItYnl0ZSBYLWNvb3JkaW5hdGUpIG9mIHRoZSBmaW5hbGl0eVxuICAgICAgICogcHJvdmlkZXIgdG8gd2hpY2ggdGhlIHN0YWtlIGlzIGRlbGVnYXRlZC5cbiAgICAgICAqL1xuICAgICAgZmluYWxpdHlfcHJvdmlkZXJfcGtzOiBzdHJpbmdbXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBsb2NrIHRpbWUgdXNlZCBmb3IgdGhlIHdpdGhkcmF3YWwgb3V0cHV0IGluIHRoZSBzdGFraW5nIGRlcG9zaXQgdHJhbnNhY3Rpb25cbiAgICAgICAqL1xuICAgICAgbG9ja190aW1lOiBudW1iZXI7XG4gICAgICBuZXR3b3JrOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJhYnlsb25OZXR3b3JrSWRcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgU2Nobm9yciBwdWJsaWMga2V5IChpLmUuLCAzMi1ieXRlIFgtY29vcmRpbmF0ZSkgb2YgdGhlIHN0YWtlci4gVGhpc1xuICAgICAgICogaXMgdGhlIGtleSB0aGF0IHNpZ25zIHRoZSBzbGFzaGluZywgd2l0aGRyYXdhbCwgYW5kIHVuYm9uZGluZyBzY3JpcHRzLlxuICAgICAgICovXG4gICAgICBzdGFrZXJfcGs6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwYXJhbWV0ZXIgdmVyc2lvbiB0byB1c2UuIElmIGBOb25lYCwgdXNlcyB0aGUgbGF0ZXN0IHZlcnNpb24uXG4gICAgICAgKi9cbiAgICAgIHZlcnNpb24/OiBudW1iZXIgfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBEYXRhIG5lZWRlZCB0byBjcmVhdGUgYSBCYWJ5bG9uIGRlcG9zaXQgdHJhbnNhY3Rpb24gKi9cbiAgICBCYWJ5bG9uU3Rha2luZ0RlcG9zaXQ6IHtcbiAgICAgIGV4cGxpY2l0X3BhcmFtcz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFieWxvblN0YWtpbmdQYXJhbXNcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFNjaG5vcnIgcHVibGljIGtleSAoaS5lLiwgMzItYnl0ZSBYLWNvb3JkaW5hdGUpIG9mIHRoZSBmaW5hbGl0eVxuICAgICAgICogcHJvdmlkZXIgdG8gd2hpY2ggdGhlIHN0YWtlIGlzIGRlbGVnYXRlZC5cbiAgICAgICAqL1xuICAgICAgZmluYWxpdHlfcHJvdmlkZXJfcGtzOiBzdHJpbmdbXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBsb2NrIHRpbWUgdXNlZCBmb3IgdGhlIHdpdGhkcmF3YWwgb3V0cHV0IGluIHRoZSBzdGFraW5nIGRlcG9zaXQgdHJhbnNhY3Rpb25cbiAgICAgICAqL1xuICAgICAgbG9ja190aW1lOiBudW1iZXI7XG4gICAgICBuZXR3b3JrOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJhYnlsb25OZXR3b3JrSWRcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgU2Nobm9yciBwdWJsaWMga2V5IChpLmUuLCAzMi1ieXRlIFgtY29vcmRpbmF0ZSkgb2YgdGhlIHN0YWtlci4gVGhpc1xuICAgICAgICogaXMgdGhlIGtleSB0aGF0IHNpZ25zIHRoZSBzbGFzaGluZywgd2l0aGRyYXdhbCwgYW5kIHVuYm9uZGluZyBzY3JpcHRzLlxuICAgICAgICovXG4gICAgICBzdGFrZXJfcGs6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwYXJhbWV0ZXIgdmVyc2lvbiB0byB1c2UuIElmIGBOb25lYCwgdXNlcyB0aGUgbGF0ZXN0IHZlcnNpb24uXG4gICAgICAgKi9cbiAgICAgIHZlcnNpb24/OiBudW1iZXIgfCBudWxsO1xuICAgIH0gJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBjaGFuZ2UgYWRkcmVzcywgc3BlY2lmaWVkIGFzIGEgQml0Y29pbiBzcGVuZCBzY3JpcHQgKi9cbiAgICAgIGNoYW5nZTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHRyYW5zYWN0aW9uIGZlZSB2YWx1ZS4gVGhlIGBmZWVfdHlwZWAgZmllbGQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoaXNcbiAgICAgICAqIGlzIGEgZml4ZWQgZmVlIGluIHNhdHMgb3IgYSByYXRlIGluIHNhdHMgcGVyIChlc3RpbWF0ZWQpIHZpcnR1YWwgYnl0ZSBvZlxuICAgICAgICogdHJhbnNhY3Rpb24gd2VpZ2h0IChpLmUuLCBzYXRzIHBlciB2YikuXG4gICAgICAgKi9cbiAgICAgIGZlZTogbnVtYmVyO1xuICAgICAgZmVlX3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRmVlVHlwZVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEJ5IGRlZmF1bHQsIHRoZSBQU0JUIGluIHRoaXMgcmVxdWVzdCBjYW4gb25seSBzcGVjaWZ5IHRyYW5zYWN0aW9uIGlucHV0czpcbiAgICAgICAqIFBTQlRzIHRoYXQgc3BlY2lmeSBvdXRwdXRzIHdpbGwgcmVzdWx0IGluIGFuIGVycm9yLiBXaGVuIHRoaXMgZmxhZyBpcyBzZXQsXG4gICAgICAgKiBleGlzdGluZyBvdXRwdXRzIGluIHRoZSBQU0JUIHdpbGwgaW5zdGVhZCBiZSBpZ25vcmVkIChpLmUuLCBkZWxldGVkIGZyb21cbiAgICAgICAqIHRoZSBQU0JUKSB3aGVuIGNyZWF0aW5nIHRoZSBkZXBvc2l0IHRyYW5zYWN0aW9uLlxuICAgICAgICovXG4gICAgICBpZ25vcmVfcHNidF9vdXRwdXRzPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgaGV4LXNlcmlhbGl6ZWQgUFNCVCAodmVyc2lvbiAwKSBjb250YWluaW5nIHRoZSB0cmFuc2FjdGlvbiBpbnB1dHMgYW5kXG4gICAgICAgKiBhbGwgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIGZvciBzaWduaW5nIChlLmcuLCB0YXByb290IHBhdGggYW5kIGxlYWZcbiAgICAgICAqIGluZm9ybWF0aW9uKS4gVGhpcyBQU0JUIG11c3Qgbm90IGhhdmUgYW55IHRyYW5zYWN0aW9uIG91dHB1dHM7IHRoZXlcbiAgICAgICAqIHdpbGwgYmUgYWRkZWQgdG8gdGhlIHJldHVybmVkIFBTQlQuXG4gICAgICAgKi9cbiAgICAgIHBzYnQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB2YWx1ZSB0byBiZSBzdGFrZWQgaW4gc2F0c1xuICAgICAgICovXG4gICAgICB2YWx1ZTogbnVtYmVyO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBEYXRhIG5lZWRlZCB0byBjcmVhdGUgYSBCYWJ5bG9uIGVhcmx5LXVuYm9uZGluZyBvciBzbGFzaGluZyB0cmFuc2FjdGlvbiAqL1xuICAgIEJhYnlsb25TdGFraW5nRWFybHlVbmJvbmQ6IHtcbiAgICAgIGV4cGxpY2l0X3BhcmFtcz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFieWxvblN0YWtpbmdQYXJhbXNcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFNjaG5vcnIgcHVibGljIGtleSAoaS5lLiwgMzItYnl0ZSBYLWNvb3JkaW5hdGUpIG9mIHRoZSBmaW5hbGl0eVxuICAgICAgICogcHJvdmlkZXIgdG8gd2hpY2ggdGhlIHN0YWtlIGlzIGRlbGVnYXRlZC5cbiAgICAgICAqL1xuICAgICAgZmluYWxpdHlfcHJvdmlkZXJfcGtzOiBzdHJpbmdbXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBsb2NrIHRpbWUgdXNlZCBmb3IgdGhlIHdpdGhkcmF3YWwgb3V0cHV0IGluIHRoZSBzdGFraW5nIGRlcG9zaXQgdHJhbnNhY3Rpb25cbiAgICAgICAqL1xuICAgICAgbG9ja190aW1lOiBudW1iZXI7XG4gICAgICBuZXR3b3JrOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJhYnlsb25OZXR3b3JrSWRcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgU2Nobm9yciBwdWJsaWMga2V5IChpLmUuLCAzMi1ieXRlIFgtY29vcmRpbmF0ZSkgb2YgdGhlIHN0YWtlci4gVGhpc1xuICAgICAgICogaXMgdGhlIGtleSB0aGF0IHNpZ25zIHRoZSBzbGFzaGluZywgd2l0aGRyYXdhbCwgYW5kIHVuYm9uZGluZyBzY3JpcHRzLlxuICAgICAgICovXG4gICAgICBzdGFrZXJfcGs6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwYXJhbWV0ZXIgdmVyc2lvbiB0byB1c2UuIElmIGBOb25lYCwgdXNlcyB0aGUgbGF0ZXN0IHZlcnNpb24uXG4gICAgICAgKi9cbiAgICAgIHZlcnNpb24/OiBudW1iZXIgfCBudWxsO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBgdHJ1ZWAsIHRoZSByZXN1bHRpbmcgUFNCVCBpcyBlbmNvZGVkIGFzIGEgYmFzZTY0IHN0cmluZy5cbiAgICAgICAqIE90aGVyd2lzZSwgaXQgaXMgZW5jb2RlZCBhcyBhIGhleCBzdHJpbmcuXG4gICAgICAgKi9cbiAgICAgIGFzX2Jhc2U2ND86IGJvb2xlYW47XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRyYW5zYWN0aW9uLWlkIG9mIHRoZSBkZXBvc2l0IHRyYW5zYWN0aW9uIHRvIHVuYm9uZCBvciBzbGFzaC4gKi9cbiAgICAgIHR4aWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB2YWx1ZSBpbiBzYXRzIHRoYXQgd2FzIHN0YWtlZCBpbiB0aGUgdHJhbnNhY3Rpb24gdG8gdW5ib25kIG9yIHNsYXNoLlxuICAgICAgICovXG4gICAgICB2YWx1ZTogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVHJhbnNhY3Rpb24gb3V0cHV0IGluZGV4IG9mIHRoZSBzdGFraW5nIHRyYW5zYWN0aW9uIHRvIHVuYm9uZCBvciBzbGFzaC5cbiAgICAgICAqIEZvciBzdGFraW5nIHRyYW5zYWN0aW9ucyBnZW5lcmF0ZWQgYnkgQ3ViZVNpZ25lciwgdGhpcyB3aWxsIGFsd2F5cyBiZSB6ZXJvLlxuICAgICAgICovXG4gICAgICB2b3V0OiBudW1iZXI7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUGFyYW1ldGVyIHNldCBmb3IgQmFieWxvbiBzdGFraW5nLiBUaGUgbGF0ZXN0IHBhcmFtZXRlciBzZXRzIGFyZVxuICAgICAqIGF2YWlsYWJsZSBmcm9tIDxodHRwczovL2dpdGh1Yi5jb20vYmFieWxvbmNoYWluL25ldHdvcmtzPlxuICAgICAqL1xuICAgIEJhYnlsb25TdGFraW5nUGFyYW1zOiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBCbG9jayBoZWlnaHQgYXQgd2hpY2ggdGhlc2UgcGFyYW1zIHdpbGwgZW50ZXIgdXNlXG4gICAgICAgKi9cbiAgICAgIGFjdGl2YXRpb25faGVpZ2h0OiBudW1iZXI7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFB1YmxpYyBrZXlzIG9mIHRoZSBjb3ZlbmFudCBzaWduZXJzICovXG4gICAgICBjb3ZlbmFudF9wa3M6IHN0cmluZ1tdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBRdW9ydW0gZm9yIGNvdmVuYW50IHNpZ25lciAqL1xuICAgICAgY292ZW5hbnRfcXVvcnVtOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggYW1vdW50IHRoYXQgY2FuIGJlIHN0YWtlZCBpbiBhIHNpbmdsZSB0eG5cbiAgICAgICAqL1xuICAgICAgbWF4X3N0YWtpbmdfYW1vdW50OiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggdGltZWxvY2sgZm9yIHN0YWtpbmdcbiAgICAgICAqL1xuICAgICAgbWF4X3N0YWtpbmdfdGltZTogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gTWluIGFtb3VudCB0aGF0IG11c3QgYmUgc3Rha2VkXG4gICAgICAgKi9cbiAgICAgIG1pbl9zdGFraW5nX2Ftb3VudDogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTWluIHRpbWVsb2NrIGZvciBzdGFraW5nXG4gICAgICAgKi9cbiAgICAgIG1pbl9zdGFraW5nX3RpbWU6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE1pbmltdW0gZmVlIChpbiBzYXRzKSB0aGF0IG11c3QgYmUgcGFpZCBhcyBwYXJ0IG9mIHRoZSBzbGFzaGluZyB0eG5cbiAgICAgICAqL1xuICAgICAgc2xhc2hpbmdfZmVlPzogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gQW4gZXh0cmEgbnVtYmVyIG9mIHNhdHMgdG8gc2xhc2ggaW4gdGhlIHNsYXNoaW5nIHR4bi4gVGhpcyBjYW4gYmUgdXNlZFxuICAgICAgICogdG8gZW5zdXJlIHRoYXQgdGhlIHRyYW5zYWN0aW9uIG1lZXRzIHRoZSBtaW5pbXVtIHNsYXNoaW5nIHJlcXVpcmVtZW50XG4gICAgICAgKiBldmVuIGlmIHRoZSBjb3ZlbmFudCBjb21taXR0ZWUgbWVtYmVycyB1c2UgZmxvYXRzIHRvIGNvbXB1dGUgdGhlIGFtb3VudFxuICAgICAgICogdGhhdCBzaG91bGQgYmUgc2xhc2hlZC4gVGhlIGRlZmF1bHQgaXMgMjsgaXQgc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnkgdG9cbiAgICAgICAqIGdvIGhpZ2hlciB0aGFuIHRoaXMuXG4gICAgICAgKi9cbiAgICAgIHNsYXNoaW5nX21hcmdpbj86IG51bWJlciB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcGtfc2NyaXB0IHZhbHVlIGZvciB0aGUgMHRoIG91dHB1dCBpbmRleCBvZiBhIHNsYXNoaW5nIHRyYW5zYWN0aW9uLFxuICAgICAgICogc2VyaWFsaXplZCBhcyBhIGhleCBieXRlIHN0cmluZy4gVGhpcyB2YWx1ZSBtdXN0IGJlIHByZXNlbnQgdG8gY3JlYXRlXG4gICAgICAgKiBzbGFzaGluZyBzaWduYXR1cmVzLlxuICAgICAgICovXG4gICAgICBzbGFzaGluZ19wa19zY3JpcHQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgZnJhY3Rpb24gb2Ygc3Rha2Ugc2xhc2hlZCBpZiBhIGRvdWJsZS1zaWduIGlzIGRldGVjdGVkICovXG4gICAgICBzbGFzaGluZ19yYXRlPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEJpdGNvaW4gdHJhbnNhY3Rpb24gdGFnIGZvciBzdGFraW5nIG1ldGFkYXRhLiBJZiBwcmVzZW50LCBhbiBpZGVudGlmaWFibGVcbiAgICAgICAqIHN0YWtpbmcgb3V0cHV0IChpLmUuLCBvbmUgd2l0aCBhbiBPUF9SRVRVUk4pIHdpbGwgYmUgY3JlYXRlZC5cbiAgICAgICAqL1xuICAgICAgdGFnPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIEZlZSAoaW4gc2F0cykgdGhhdCBtdXN0IGJlIHNwZW50IGFzIHBhcnQgb2YgdGhlIHVuYm9uZGluZyB0eG5cbiAgICAgICAqL1xuICAgICAgdW5ib25kaW5nX2ZlZTogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTWluIHRpbWVsb2NrIGZvciBhbiB1bmJvbmRpbmcgc2NyaXB0XG4gICAgICAgKi9cbiAgICAgIHVuYm9uZGluZ190aW1lOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBQYXJhbWV0ZXIgdmVyc2lvblxuICAgICAgICovXG4gICAgICB2ZXJzaW9uOiBudW1iZXI7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBhY3Rpb25zIHBvc3NpYmxlIHZpYSB0aGUgQmFieWxvbiBTdGFraW5nIGVuZHBvaW50ICovXG4gICAgQmFieWxvblN0YWtpbmdSZXF1ZXN0OlxuICAgICAgfCAoY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCYWJ5bG9uU3Rha2luZ0RlcG9zaXRcIl0gJiB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgYWN0aW9uOiBcImRlcG9zaXRcIjtcbiAgICAgICAgfSlcbiAgICAgIHwgKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFieWxvblN0YWtpbmdFYXJseVVuYm9uZFwiXSAmIHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBhY3Rpb246IFwiZWFybHlfdW5ib25kXCI7XG4gICAgICAgIH0pXG4gICAgICB8IChjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJhYnlsb25TdGFraW5nV2l0aGRyYXdhbFwiXSAmIHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBhY3Rpb246IFwid2l0aGRyYXdfdGltZWxvY2tcIjtcbiAgICAgICAgfSlcbiAgICAgIHwgKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFieWxvblN0YWtpbmdXaXRoZHJhd2FsXCJdICYge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIGFjdGlvbjogXCJ3aXRoZHJhd19lYXJseV91bmJvbmRcIjtcbiAgICAgICAgfSlcbiAgICAgIHwgKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFieWxvblN0YWtpbmdXaXRoZHJhd2FsXCJdICYge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIGFjdGlvbjogXCJ3aXRoZHJhd19zbGFzaGluZ1wiO1xuICAgICAgICB9KVxuICAgICAgfCAoY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCYWJ5bG9uU3Rha2luZ0Vhcmx5VW5ib25kXCJdICYge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIGFjdGlvbjogXCJzbGFzaF9kZXBvc2l0XCI7XG4gICAgICAgIH0pXG4gICAgICB8IChjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJhYnlsb25TdGFraW5nRWFybHlVbmJvbmRcIl0gJiB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgYWN0aW9uOiBcInNsYXNoX2Vhcmx5X3VuYm9uZFwiO1xuICAgICAgICB9KTtcbiAgICBCYWJ5bG9uU3Rha2luZ1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHBvbGljeSBldmFsdWF0aW9uIHRyZWUuICovXG4gICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHRyYW5zYWN0aW9uIGZlZSBpbiBzYXRzXG4gICAgICAgKiBAZXhhbXBsZSAxMzM3XG4gICAgICAgKi9cbiAgICAgIGZlZTogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFBTQlQgaW4gZWl0aGVyIGhleCBvciBiYXNlNjQgc2VyaWFsaXphdGlvblxuICAgICAgICogQGV4YW1wbGUgNzA3MzYyNzRmZjAxMDA1ZS4uLlxuICAgICAgICovXG4gICAgICBwc2J0OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIERhdGEgbmVlZGVkIHRvIGNyZWF0ZSBhIEJhYnlsb24gd2l0aGRyYXdhbCB0cmFuc2FjdGlvbiAqL1xuICAgIEJhYnlsb25TdGFraW5nV2l0aGRyYXdhbDoge1xuICAgICAgZXhwbGljaXRfcGFyYW1zPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCYWJ5bG9uU3Rha2luZ1BhcmFtc1wiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgU2Nobm9yciBwdWJsaWMga2V5IChpLmUuLCAzMi1ieXRlIFgtY29vcmRpbmF0ZSkgb2YgdGhlIGZpbmFsaXR5XG4gICAgICAgKiBwcm92aWRlciB0byB3aGljaCB0aGUgc3Rha2UgaXMgZGVsZWdhdGVkLlxuICAgICAgICovXG4gICAgICBmaW5hbGl0eV9wcm92aWRlcl9wa3M6IHN0cmluZ1tdO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGxvY2sgdGltZSB1c2VkIGZvciB0aGUgd2l0aGRyYXdhbCBvdXRwdXQgaW4gdGhlIHN0YWtpbmcgZGVwb3NpdCB0cmFuc2FjdGlvblxuICAgICAgICovXG4gICAgICBsb2NrX3RpbWU6IG51bWJlcjtcbiAgICAgIG5ldHdvcms6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFieWxvbk5ldHdvcmtJZFwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBTY2hub3JyIHB1YmxpYyBrZXkgKGkuZS4sIDMyLWJ5dGUgWC1jb29yZGluYXRlKSBvZiB0aGUgc3Rha2VyLiBUaGlzXG4gICAgICAgKiBpcyB0aGUga2V5IHRoYXQgc2lnbnMgdGhlIHNsYXNoaW5nLCB3aXRoZHJhd2FsLCBhbmQgdW5ib25kaW5nIHNjcmlwdHMuXG4gICAgICAgKi9cbiAgICAgIHN0YWtlcl9wazogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHBhcmFtZXRlciB2ZXJzaW9uIHRvIHVzZS4gSWYgYE5vbmVgLCB1c2VzIHRoZSBsYXRlc3QgdmVyc2lvbi5cbiAgICAgICAqL1xuICAgICAgdmVyc2lvbj86IG51bWJlciB8IG51bGw7XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIGB0cnVlYCwgdGhlIHJlc3VsdGluZyBQU0JUIGlzIGVuY29kZWQgYXMgYSBiYXNlNjQgc3RyaW5nLlxuICAgICAgICogT3RoZXJ3aXNlLCBpdCBpcyBlbmNvZGVkIGFzIGEgaGV4IHN0cmluZy5cbiAgICAgICAqL1xuICAgICAgYXNfYmFzZTY0PzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB0cmFuc2FjdGlvbiBmZWUgdmFsdWUuIFRoZSBgZmVlX3R5cGVgIGZpZWxkIGRldGVybWluZXMgd2hldGhlciB0aGlzXG4gICAgICAgKiBpcyBhIGZpeGVkIGZlZSBpbiBzYXRzIG9yIGEgcmF0ZSBpbiBzYXRzIHBlciAoZXN0aW1hdGVkKSB2aXJ0dWFsIGJ5dGUgb2ZcbiAgICAgICAqIHRyYW5zYWN0aW9uIHdlaWdodCAoaS5lLiwgc2F0cyBwZXIgdmIpLlxuICAgICAgICovXG4gICAgICBmZWU6IG51bWJlcjtcbiAgICAgIGZlZV90eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkZlZVR5cGVcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB3aXRoZHJhd2FsIHJlY2lwaWVudCwgc3BlY2lmaWVkIGFzIGEgQml0Y29pbiBzcGVuZCBzY3JpcHQgKi9cbiAgICAgIHJlY2lwaWVudDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUcmFuc2FjdGlvbi1pZCBvZiB0aGUgZGVwb3NpdCBvciBlYXJseSB1bmJvbmRpbmcgdHJhbnNhY3Rpb24gdG8gd2l0aGRyYXcgZnJvbSAqL1xuICAgICAgdHhpZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQW4gb3B0aW9uYWwgbG9jayBoZWlnaHQgKGluIGJsb2NrcykgZm9yIHRoaXMgdHJhbnNhY3Rpb24uIFRoZSByZXN1bHRpbmdcbiAgICAgICAqIHRyYW5zYWN0aW9uIGNhbm5vdCBiZSBtaW5lZCBiZWZvcmUgdGhlIHNwZWNpZmllZCBibG9jayBoZWlnaHQuXG4gICAgICAgKi9cbiAgICAgIHR4bl9sb2NrX2hlaWdodD86IG51bWJlciB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdmFsdWUgaW4gc2F0cyB0aGF0IGlzIHN0YWtlZCBpbiB0aGUgdHJhbnNhY3Rpb24gYmVpbmcgd2l0aGRyYXduXG4gICAgICAgKi9cbiAgICAgIHZhbHVlOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUcmFuc2FjdGlvbiBvdXRwdXQgaW5kZXggb2YgdGhlIHN0YWtpbmcgdHJhbnNhY3Rpb24gZnJvbSB3aGljaCB0byB3aXRoZHJhdy5cbiAgICAgICAqIEZvciBzdGFraW5nIHRyYW5zYWN0aW9ucyBnZW5lcmF0ZWQgYnkgQ3ViZVNpZ25lciwgdGhpcyB3aWxsIGFsd2F5cyBiZSAwLlxuICAgICAgICogRm9yIHNsYXNoaW5nIHRyYW5zYWN0aW9ucyBnZW5lcmF0ZWQgYnkgQ3ViZVNpZ25lciwgdGhpcyB3aWxsIGFsd2F5cyBiZSAxLlxuICAgICAgICovXG4gICAgICB2b3V0OiBudW1iZXI7XG4gICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBCYWRHYXRld2F5RXJyb3JDb2RlOlxuICAgICAgfCBcIkdlbmVyaWNcIlxuICAgICAgfCBcIkN1c3RvbUNoYWluUnBjRXJyb3JcIlxuICAgICAgfCBcIkVzcGxvcmFBcGlFcnJvclwiXG4gICAgICB8IFwiU2VudHJ5QXBpRXJyb3JcIlxuICAgICAgfCBcIkNhbGxXZWJob29rRXJyb3JcIlxuICAgICAgfCBcIk9BdXRoUHJvdmlkZXJFcnJvclwiXG4gICAgICB8IFwiT2lkY0Rpc292ZXJ5RmFpbGVkXCJcbiAgICAgIHwgXCJPaWRjSXNzdWVySndrRW5kcG9pbnRVbmF2YWlsYWJsZVwiXG4gICAgICB8IFwiU210cFNlcnZlclVuYXZhaWxhYmxlXCI7XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgQmFkUmVxdWVzdEVycm9yQ29kZTpcbiAgICAgIHwgXCJHZW5lcmljQmFkUmVxdWVzdFwiXG4gICAgICB8IFwiRGlzYWxsb3dlZEFsbG93UnVsZVJlZmVyZW5jZVwiXG4gICAgICB8IFwiSW52YWxpZFBhZ2luYXRpb25Ub2tlblwiXG4gICAgICB8IFwiSW52YWxpZEVtYWlsXCJcbiAgICAgIHwgXCJJbnZhbGlkRW1haWxUZW1wbGF0ZVwiXG4gICAgICB8IFwiUXVlcnlNZXRyaWNzRXJyb3JcIlxuICAgICAgfCBcIkludmFsaWRUZWxlZ3JhbURhdGFcIlxuICAgICAgfCBcIlZhbGlkYXRpb25FcnJvclwiXG4gICAgICB8IFwiV2ViaG9va1BvbGljeVRpbWVvdXRPdXRPZkJvdW5kc1wiXG4gICAgICB8IFwiV2ViaG9va1BvbGljeURpc2FsbG93ZWRVcmxTY2hlbWVcIlxuICAgICAgfCBcIldlYmhvb2tQb2xpY3lEaXNhbGxvd2VkVXJsSG9zdFwiXG4gICAgICB8IFwiV2ViaG9va1BvbGljeURpc2FsbG93ZWRIZWFkZXJzXCJcbiAgICAgIHwgXCJSZXNlcnZlZE5hbWVcIlxuICAgICAgfCBcIlVzZXJFbWFpbE5vdENvbmZpZ3VyZWRcIlxuICAgICAgfCBcIkVtYWlsUGFzc3dvcmROb3RGb3VuZFwiXG4gICAgICB8IFwiUGFzc3dvcmRBdXRoTm90QWxsb3dlZEJ5SW52aXRhdGlvblwiXG4gICAgICB8IFwiT25lVGltZUNvZGVFeHBpcmVkXCJcbiAgICAgIHwgXCJJbnZhbGlkQm9keVwiXG4gICAgICB8IFwiSW52YWxpZEp3dFwiXG4gICAgICB8IFwiSW52aXRhdGlvbk5vTG9uZ2VyVmFsaWRcIlxuICAgICAgfCBcIlRva2VuUmVxdWVzdEVycm9yXCJcbiAgICAgIHwgXCJJbnZhbGlkTWZhUmVjZWlwdFwiXG4gICAgICB8IFwiSW52YWxpZE1mYVBvbGljeUNvdW50XCJcbiAgICAgIHwgXCJJbnZhbGlkTWZhUG9saWN5TnVtQXV0aEZhY3RvcnNcIlxuICAgICAgfCBcIkludmFsaWRNZmFQb2xpY3lOdW1BbGxvd2VkQXBwcm92ZXJzXCJcbiAgICAgIHwgXCJJbnZhbGlkTWZhUG9saWN5R3JhY2VQZXJpb2RUb29Mb25nXCJcbiAgICAgIHwgXCJJbnZhbGlkQmFieWxvblN0YWtpbmdQb2xpY3lQYXJhbXNcIlxuICAgICAgfCBcIkludmFsaWRTdWlUeFJlY2VpdmVyc0VtcHR5QWxsb3dsaXN0XCJcbiAgICAgIHwgXCJJbnZhbGlkQnRjVHhSZWNlaXZlcnNFbXB0eUFsbG93bGlzdFwiXG4gICAgICB8IFwiSW52YWxpZFJlcXVpcmVSb2xlU2Vzc2lvbkFsbG93bGlzdFwiXG4gICAgICB8IFwiSW52YWxpZENyZWF0ZUtleUNvdW50XCJcbiAgICAgIHwgXCJJbnZhbGlkRGlmZmllSGVsbG1hbkNvdW50XCJcbiAgICAgIHwgXCJPcmdJbnZpdGVFeGlzdGluZ1VzZXJcIlxuICAgICAgfCBcIk9yZ1VzZXJBbHJlYWR5RXhpc3RzXCJcbiAgICAgIHwgXCJPcmdOYW1lVGFrZW5cIlxuICAgICAgfCBcIkt3a05vdEZvdW5kSW5SZWdpb25cIlxuICAgICAgfCBcIk9yZ0lzTm90T3JnRXhwb3J0XCJcbiAgICAgIHwgXCJSb2xlTmFtZVRha2VuXCJcbiAgICAgIHwgXCJQb2xpY3lOYW1lVGFrZW5cIlxuICAgICAgfCBcIk5hbWVUYWtlblwiXG4gICAgICB8IFwiQ29udGFjdE5hbWVJbnZhbGlkXCJcbiAgICAgIHwgXCJDb250YWN0QWRkcmVzc2VzSW52YWxpZFwiXG4gICAgICB8IFwiQ29udGFjdExhYmVsSW52YWxpZFwiXG4gICAgICB8IFwiQ29udGFjdE1vZGlmaWVkXCJcbiAgICAgIHwgXCJQb2xpY3lOb3RGb3VuZFwiXG4gICAgICB8IFwiUG9saWN5VmVyc2lvbk5vdEZvdW5kXCJcbiAgICAgIHwgXCJQb2xpY3lSdWxlRGlzYWxsb3dlZEJ5VHlwZVwiXG4gICAgICB8IFwiUG9saWN5VHlwZURpc2FsbG93ZWRcIlxuICAgICAgfCBcIlBvbGljeUR1cGxpY2F0ZUVycm9yXCJcbiAgICAgIHwgXCJQb2xpY3lTdGlsbEF0dGFjaGVkXCJcbiAgICAgIHwgXCJQb2xpY3lNb2RpZmllZFwiXG4gICAgICB8IFwiUG9saWN5Tm90QXR0YWNoZWRcIlxuICAgICAgfCBcIkFkZEtleVRvUm9sZUNvdW50VG9vSGlnaFwiXG4gICAgICB8IFwiSW52YWxpZEtleUlkXCJcbiAgICAgIHwgXCJJbnZhbGlkVGltZUxvY2tBbHJlYWR5SW5UaGVQYXN0XCJcbiAgICAgIHwgXCJJbnZhbGlkUmVzdHJpY3RlZFNjb3Blc1wiXG4gICAgICB8IFwiSW52YWxpZFVwZGF0ZVwiXG4gICAgICB8IFwiSW52YWxpZE1ldGFkYXRhTGVuZ3RoXCJcbiAgICAgIHwgXCJJbnZhbGlkTGVuZ3RoXCJcbiAgICAgIHwgXCJJbnZhbGlkS2V5TWF0ZXJpYWxJZFwiXG4gICAgICB8IFwiS2V5Tm90Rm91bmRcIlxuICAgICAgfCBcIlNpd2VDaGFsbGVuZ2VOb3RGb3VuZFwiXG4gICAgICB8IFwiU2l3ZUludmFsaWRSZXF1ZXN0XCJcbiAgICAgIHwgXCJVc2VyRXhwb3J0RGVyaXZlZEtleVwiXG4gICAgICB8IFwiVXNlckV4cG9ydFB1YmxpY0tleUludmFsaWRcIlxuICAgICAgfCBcIk5pc3RQMjU2UHVibGljS2V5SW52YWxpZFwiXG4gICAgICB8IFwiVW5hYmxlVG9BY2Nlc3NTbXRwUmVsYXlcIlxuICAgICAgfCBcIlVzZXJFeHBvcnRJblByb2dyZXNzXCJcbiAgICAgIHwgXCJSb2xlTm90Rm91bmRcIlxuICAgICAgfCBcIkludmFsaWRSb2xlTmFtZU9ySWRcIlxuICAgICAgfCBcIkludmFsaWRNZmFSZWNlaXB0T3JnSWRNaXNzaW5nXCJcbiAgICAgIHwgXCJJbnZhbGlkTWZhUmVjZWlwdEludmFsaWRPcmdJZFwiXG4gICAgICB8IFwiTWZhUmVxdWVzdE5vdEZvdW5kXCJcbiAgICAgIHwgXCJJbnZhbGlkS2V5VHlwZVwiXG4gICAgICB8IFwiSW52YWxpZEtleU1hdGVyaWFsXCJcbiAgICAgIHwgXCJJbnZhbGlkSGV4VmFsdWVcIlxuICAgICAgfCBcIkludmFsaWRCYXNlMzJWYWx1ZVwiXG4gICAgICB8IFwiSW52YWxpZEJhc2U1OFZhbHVlXCJcbiAgICAgIHwgXCJJbnZhbGlkU3M1OFZhbHVlXCJcbiAgICAgIHwgXCJJbnZhbGlkRm9ya1ZlcnNpb25MZW5ndGhcIlxuICAgICAgfCBcIkludmFsaWRFdGhBZGRyZXNzXCJcbiAgICAgIHwgXCJJbnZhbGlkU3RlbGxhckFkZHJlc3NcIlxuICAgICAgfCBcIkludmFsaWRPcmdOYW1lT3JJZFwiXG4gICAgICB8IFwiSW52YWxpZFVwZGF0ZU9yZ1JlcXVlc3REaXNhbGxvd2VkTWZhVHlwZVwiXG4gICAgICB8IFwiSW52YWxpZFVwZGF0ZU9yZ1JlcXVlc3RFbXB0eUFsbG93ZWRNZmFUeXBlc1wiXG4gICAgICB8IFwiRW1haWxPdHBEZWxheVRvb1Nob3J0Rm9yUmVnaXN0ZXJNZmFcIlxuICAgICAgfCBcIkludmFsaWRTdGFrZURlcG9zaXRcIlxuICAgICAgfCBcIkludmFsaWRCbG9iU2lnblJlcXVlc3RcIlxuICAgICAgfCBcIkludmFsaWREaWZmaWVIZWxsbWFuUmVxdWVzdFwiXG4gICAgICB8IFwiSW52YWxpZFNvbGFuYVNpZ25SZXF1ZXN0XCJcbiAgICAgIHwgXCJJbnZhbGlkRWlwNzEyU2lnblJlcXVlc3RcIlxuICAgICAgfCBcIk9ubHlTcGVjaWZ5T25lXCJcbiAgICAgIHwgXCJOb09pZGNEYXRhSW5Qcm9vZlwiXG4gICAgICB8IFwiSW52YWxpZEV2bVNpZ25SZXF1ZXN0XCJcbiAgICAgIHwgXCJJbnZhbGlkRXRoMlNpZ25SZXF1ZXN0XCJcbiAgICAgIHwgXCJJbnZhbGlkRGVyaXZlS2V5UmVxdWVzdFwiXG4gICAgICB8IFwiSW52YWxpZFN0YWtpbmdBbW91bnRcIlxuICAgICAgfCBcIkN1c3RvbVN0YWtpbmdBbW91bnROb3RBbGxvd2VkRm9yV3JhcHBlckNvbnRyYWN0XCJcbiAgICAgIHwgXCJJbnZhbGlkVW5zdGFrZVJlcXVlc3RcIlxuICAgICAgfCBcIkludmFsaWRDcmVhdGVVc2VyUmVxdWVzdFwiXG4gICAgICB8IFwiVXNlckFscmVhZHlFeGlzdHNcIlxuICAgICAgfCBcIklkcFVzZXJBbHJlYWR5RXhpc3RzXCJcbiAgICAgIHwgXCJDb2duaXRvVXNlckFscmVhZHlPcmdNZW1iZXJcIlxuICAgICAgfCBcIlVzZXJOb3RGb3VuZFwiXG4gICAgICB8IFwiVXNlcldpdGhFbWFpbE5vdEZvdW5kXCJcbiAgICAgIHwgXCJQb2xpY3lLZXlNaXNtYXRjaFwiXG4gICAgICB8IFwiRW1wdHlTY29wZXNcIlxuICAgICAgfCBcIkludmFsaWRTY29wZXNGb3JSb2xlU2Vzc2lvblwiXG4gICAgICB8IFwiSW52YWxpZExpZmV0aW1lXCJcbiAgICAgIHwgXCJOb1NpbmdsZUtleUZvclVzZXJcIlxuICAgICAgfCBcIkludmFsaWRPcmdQb2xpY3lSdWxlXCJcbiAgICAgIHwgXCJTb3VyY2VJcEFsbG93bGlzdEVtcHR5XCJcbiAgICAgIHwgXCJMaW1pdFdpbmRvd1Rvb0xvbmdcIlxuICAgICAgfCBcIkVyYzIwQ29udHJhY3REaXNhbGxvd2VkXCJcbiAgICAgIHwgXCJFbXB0eVJ1bGVFcnJvclwiXG4gICAgICB8IFwiT3B0aW9uYWxMaXN0RW1wdHlcIlxuICAgICAgfCBcIk11bHRpcGxlRXhjbHVzaXZlRmllbGRzUHJvdmlkZWRcIlxuICAgICAgfCBcIkR1cGxpY2F0ZUZpZWxkRW50cnlcIlxuICAgICAgfCBcIkludmFsaWRSYW5nZVwiXG4gICAgICB8IFwiSW52YWxpZE9yZ1BvbGljeVJlcGVhdGVkUnVsZVwiXG4gICAgICB8IFwiSW52YWxpZFN1aVRyYW5zYWN0aW9uXCJcbiAgICAgIHwgXCJTdWlTZW5kZXJNaXNtYXRjaFwiXG4gICAgICB8IFwiQXZhU2lnbkhhc2hFcnJvclwiXG4gICAgICB8IFwiQXZhU2lnbkVycm9yXCJcbiAgICAgIHwgXCJCdGNTZWd3aXRIYXNoRXJyb3JcIlxuICAgICAgfCBcIkJ0Y1RhcHJvb3RIYXNoRXJyb3JcIlxuICAgICAgfCBcIkJ0Y1NpZ25FcnJvclwiXG4gICAgICB8IFwiVGFwcm9vdFNpZ25FcnJvclwiXG4gICAgICB8IFwiRWlwNzEyU2lnbkVycm9yXCJcbiAgICAgIHwgXCJJbnZhbGlkTWVtYmVyUm9sZUluVXNlckFkZFwiXG4gICAgICB8IFwiSW52YWxpZE1lbWJlclJvbGVJblJlY2lwaWVudEFkZFwiXG4gICAgICB8IFwiVGhpcmRQYXJ0eVVzZXJBbHJlYWR5RXhpc3RzXCJcbiAgICAgIHwgXCJPaWRjSWRlbnRpdHlBbHJlYWR5RXhpc3RzXCJcbiAgICAgIHwgXCJVc2VyQWxyZWFkeUhhc0lkZW50aXR5XCJcbiAgICAgIHwgXCJUaGlyZFBhcnR5VXNlck5vdEZvdW5kXCJcbiAgICAgIHwgXCJEZWxldGVPaWRjVXNlckVycm9yXCJcbiAgICAgIHwgXCJEZWxldGVVc2VyRXJyb3JcIlxuICAgICAgfCBcIlNlc3Npb25Sb2xlTWlzbWF0Y2hcIlxuICAgICAgfCBcIkludmFsaWRPaWRjVG9rZW5cIlxuICAgICAgfCBcIkludmFsaWRPaWRjSWRlbnRpdHlcIlxuICAgICAgfCBcIk9pZGNJc3N1ZXJVbnN1cHBvcnRlZFwiXG4gICAgICB8IFwiT2lkY0lzc3Vlck5vdEFsbG93ZWRcIlxuICAgICAgfCBcIk9pZGNJc3N1ZXJOb0FwcGxpY2FibGVKd2tcIlxuICAgICAgfCBcIkZpZG9LZXlBbHJlYWR5UmVnaXN0ZXJlZFwiXG4gICAgICB8IFwiRmlkb0tleVNpZ25Db3VudFRvb0xvd1wiXG4gICAgICB8IFwiRmlkb1ZlcmlmaWNhdGlvbkZhaWxlZFwiXG4gICAgICB8IFwiRmlkb0NoYWxsZW5nZU1mYU1pc21hdGNoXCJcbiAgICAgIHwgXCJVbnN1cHBvcnRlZExlZ2FjeUNvZ25pdG9TZXNzaW9uXCJcbiAgICAgIHwgXCJJbnZhbGlkSWRlbnRpdHlQcm9vZlwiXG4gICAgICB8IFwiUGFnaW5hdGlvbkRhdGFFeHBpcmVkXCJcbiAgICAgIHwgXCJFeGlzdGluZ0tleXNWaW9sYXRlRXhjbHVzaXZlS2V5QWNjZXNzXCJcbiAgICAgIHwgXCJFeHBvcnREZWxheVRvb1Nob3J0XCJcbiAgICAgIHwgXCJFeHBvcnRXaW5kb3dUb29Mb25nXCJcbiAgICAgIHwgXCJJbnZhbGlkVG90cEZhaWx1cmVMaW1pdFwiXG4gICAgICB8IFwiSW52YWxpZEVpcDE5MVNpZ25SZXF1ZXN0XCJcbiAgICAgIHwgXCJDYW5ub3RSZXNlbmRVc2VySW52aXRhdGlvblwiXG4gICAgICB8IFwiSW52YWxpZE5vdGlmaWNhdGlvbkVuZHBvaW50Q291bnRcIlxuICAgICAgfCBcIkNhbm5vdERlbGV0ZVBlbmRpbmdTdWJzY3JpcHRpb25cIlxuICAgICAgfCBcIkludmFsaWROb3RpZmljYXRpb25VcmxQcm90b2NvbFwiXG4gICAgICB8IFwiRW1wdHlPbmVPZk9yZ0V2ZW50RmlsdGVyXCJcbiAgICAgIHwgXCJFbXB0eUFsbEV4Y2VwdE9yZ0V2ZW50RmlsdGVyXCJcbiAgICAgIHwgXCJJbnZhbGlkVGFwTm9kZUhhc2hcIlxuICAgICAgfCBcIkludmFsaWRPbmVUaW1lQ29kZVwiXG4gICAgICB8IFwiTWVzc2FnZU5vdEZvdW5kXCJcbiAgICAgIHwgXCJNZXNzYWdlQWxyZWFkeVNpZ25lZFwiXG4gICAgICB8IFwiTWVzc2FnZVJlamVjdGVkXCJcbiAgICAgIHwgXCJNZXNzYWdlUmVwbGFjZWRcIlxuICAgICAgfCBcIkludmFsaWRNZXNzYWdlVHlwZVwiXG4gICAgICB8IFwiRW1wdHlBZGRyZXNzXCJcbiAgICAgIHwgXCJJbnZhbGlkRXRoMlNpZ25pbmdQb2xpY3lTbG90UmFuZ2VcIlxuICAgICAgfCBcIkludmFsaWRFdGgyU2lnbmluZ1BvbGljeUVwb2NoUmFuZ2VcIlxuICAgICAgfCBcIkludmFsaWRFdGgyU2lnbmluZ1BvbGljeVRpbWVzdGFtcFJhbmdlXCJcbiAgICAgIHwgXCJJbnZhbGlkRXRoMlNpZ25pbmdQb2xpY3lPdmVybGFwcGluZ1J1bGVcIlxuICAgICAgfCBcIlJwY1VybE1pc3NpbmdcIlxuICAgICAgfCBcIk1taUNoYWluSWRNaXNzaW5nXCJcbiAgICAgIHwgXCJFdGhlcnNJbnZhbGlkUnBjVXJsXCJcbiAgICAgIHwgXCJFdGhlcnNHZXRUcmFuc2FjdGlvbkNvdW50RXJyb3JcIlxuICAgICAgfCBcIkludmFsaWRQYXNzd29yZFwiXG4gICAgICB8IFwiQmFieWxvblN0YWtpbmdGZWVQbHVzRHVzdE92ZXJmbG93XCJcbiAgICAgIHwgXCJCYWJ5bG9uU3Rha2luZ1wiXG4gICAgICB8IFwiQmFieWxvblN0YWtpbmdJbmNvcnJlY3RLZXlcIlxuICAgICAgfCBcIkJhYnlsb25TdGFraW5nU2Vnd2l0Tm9uRGVwb3NpdFwiXG4gICAgICB8IFwiQmFieWxvblN0YWtpbmdSZWdpc3RyYXRpb25SZXF1aXJlc1RhcHJvb3RcIlxuICAgICAgfCBcIlBzYnRTaWduaW5nXCJcbiAgICAgIHwgXCJUb29NYW55UmVzZXRzXCJcbiAgICAgIHwgXCJUb29NYW55UmVxdWVzdHNcIlxuICAgICAgfCBcIlRvb01hbnlGYWlsZWRMb2dpbnNcIlxuICAgICAgfCBcIkJhZEJ0Y01lc3NhZ2VTaWduUDJzaEZsYWdcIlxuICAgICAgfCBcIkludmFsaWRUZW5kZXJtaW50UmVxdWVzdFwiXG4gICAgICB8IFwiUG9saWN5VmVyc2lvbk1heFJlYWNoZWRcIlxuICAgICAgfCBcIlBvbGljeVZlcnNpb25JbnZhbGlkXCJcbiAgICAgIHwgXCJQb2xpY3lTZWNyZXRMaW1pdFJlYWNoZWRcIlxuICAgICAgfCBcIlBvbGljeVNlY3JldFRvb0xhcmdlXCJcbiAgICAgIHwgXCJJbnZhbGlkSW1wb3J0S2V5XCJcbiAgICAgIHwgXCJBbGllbk93bmVySW52YWxpZFwiXG4gICAgICB8IFwiRW1wdHlVcGRhdGVSZXF1ZXN0XCJcbiAgICAgIHwgXCJJbnZhbGlkUG9saWN5UmVmZXJlbmNlXCJcbiAgICAgIHwgXCJQb2xpY3lFbmdpbmVEaXNhYmxlZFwiXG4gICAgICB8IFwiSW52YWxpZFdhc21Qb2xpY3lcIlxuICAgICAgfCBcIkludmFsaWRQb2xpY3lcIlxuICAgICAgfCBcIlJlZHVuZGFudERlcml2YXRpb25QYXRoXCJcbiAgICAgIHwgXCJJbXBvcnRLZXlNaXNzaW5nXCJcbiAgICAgIHwgXCJJbnZhbGlkQWJpTWV0aG9kc1wiXG4gICAgICB8IFwiQmFieWxvbkNvdlNpZ25cIlxuICAgICAgfCBcIkludmFsaWRQb2xpY3lMb2dzUmVxdWVzdFwiXG4gICAgICB8IFwiVXNlclByb2ZpbGVNaWdyYXRpb25NdWx0aXBsZUVudHJpZXNcIlxuICAgICAgfCBcIlVzZXJQcm9maWxlTWlncmF0aW9uVG9vTWFueUl0ZW1zXCJcbiAgICAgIHwgXCJJbnB1dFRvb1Nob3J0XCJcbiAgICAgIHwgXCJJbnZhbGlkVHdlYWtMZW5ndGhcIlxuICAgICAgfCBcIkludmFsaWRDdXN0b21DaGFpbnNcIjtcbiAgICBCaWxsaW5nQXJnczoge1xuICAgICAgYmlsbGluZ19vcmc6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICBldmVudF90eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJpbGxpbmdFdmVudFwiXTtcbiAgICAgIGtleT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl0gfCBudWxsO1xuICAgICAgcm9sZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl0gfCBudWxsO1xuICAgICAgdXNlcj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl0gfCBudWxsO1xuICAgIH07XG4gICAgQmlsbGluZ0RpbWVuc2lvbnM6IHtcbiAgICAgIGtpbmQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmlsbGluZ0V2ZW50XCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgbWV0cmljcyBtdXN0IGluY2x1ZGUgJ29yZ19pZCcgYXMgYSBkaW1lbnNpb24uICovXG4gICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBCaWxsaW5nIGV2ZW50IHR5cGVzLlxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgQmlsbGluZ0V2ZW50OlxuICAgICAgfCBcIk1taVwiXG4gICAgICB8IFwiTW1pTWVzc2FnZUdldFwiXG4gICAgICB8IFwiTW1pTWVzc2FnZUxpc3RcIlxuICAgICAgfCBcIk1taU1lc3NhZ2VTaWduXCJcbiAgICAgIHwgXCJNbWlNZXNzYWdlUmVqZWN0XCJcbiAgICAgIHwgXCJNbWlNZXNzYWdlRGVsZXRlXCJcbiAgICAgIHwgXCJBYm91dE1lXCJcbiAgICAgIHwgXCJVc2VyUmVzZXRFbWFpbEluaXRcIlxuICAgICAgfCBcIlVzZXJSZXNldEVtYWlsQ29tcGxldGVcIlxuICAgICAgfCBcIlVzZXJEZWxldGVUb3RwXCJcbiAgICAgIHwgXCJVc2VyUmVzZXRUb3RwSW5pdFwiXG4gICAgICB8IFwiVXNlclJlc2V0VG90cENvbXBsZXRlXCJcbiAgICAgIHwgXCJVc2VyVmVyaWZ5VG90cFwiXG4gICAgICB8IFwiVXNlclJlZ2lzdGVyRmlkb0luaXRcIlxuICAgICAgfCBcIlVzZXJSZWdpc3RlckZpZG9Db21wbGV0ZVwiXG4gICAgICB8IFwiVXNlckRlbGV0ZUZpZG9cIlxuICAgICAgfCBcIkNyZWF0ZVByb29mT2lkY1wiXG4gICAgICB8IFwiQ3JlYXRlUHJvb2ZDdWJlU2lnbmVyXCJcbiAgICAgIHwgXCJWZXJpZnlQcm9vZlwiXG4gICAgICB8IFwiQWRkT2lkY0lkZW50aXR5XCJcbiAgICAgIHwgXCJSZW1vdmVPaWRjSWRlbnRpdHlcIlxuICAgICAgfCBcIkxpc3RPaWRjSWRlbnRpdGllc1wiXG4gICAgICB8IFwiR2V0T3JnXCJcbiAgICAgIHwgXCJVcGRhdGVPcmdcIlxuICAgICAgfCBcIkdldE9yZ0V4cG9ydFwiXG4gICAgICB8IFwiQ3JlYXRlT3JnXCJcbiAgICAgIHwgXCJMaXN0S2V5c1wiXG4gICAgICB8IFwiQXR0ZXN0S2V5XCJcbiAgICAgIHwgXCJHZXRLZXlcIlxuICAgICAgfCBcIkdldEtleUJ5TWF0ZXJpYWxJZFwiXG4gICAgICB8IFwiTGlzdEtleVJvbGVzXCJcbiAgICAgIHwgXCJVcGRhdGVLZXlcIlxuICAgICAgfCBcIkxpc3RIaXN0b3JpY2FsS2V5VHhcIlxuICAgICAgfCBcIkludml0ZVwiXG4gICAgICB8IFwiTGlzdFVzZXJzXCJcbiAgICAgIHwgXCJHZXRVc2VyXCJcbiAgICAgIHwgXCJHZXRVc2VyQnlFbWFpbFwiXG4gICAgICB8IFwiR2V0VXNlckJ5T2lkY1wiXG4gICAgICB8IFwiVXBkYXRlTWVtYmVyc2hpcFwiXG4gICAgICB8IFwiUmVzZXRNZW1iZXJNZmFcIlxuICAgICAgfCBcIkNvbXBsZXRlUmVzZXRNZW1iZXJNZmFcIlxuICAgICAgfCBcIkNyZWF0ZVJvbGVcIlxuICAgICAgfCBcIkdldFJvbGVcIlxuICAgICAgfCBcIkxpc3RUb2tlbktleXNcIlxuICAgICAgfCBcIkxpc3RSb2xlc1wiXG4gICAgICB8IFwiR2V0Um9sZUtleVwiXG4gICAgICB8IFwiTGlzdFJvbGVLZXlzXCJcbiAgICAgIHwgXCJMaXN0Um9sZVVzZXJzXCJcbiAgICAgIHwgXCJVcGRhdGVSb2xlXCJcbiAgICAgIHwgXCJEZWxldGVSb2xlXCJcbiAgICAgIHwgXCJDb25maWd1cmVFbWFpbFwiXG4gICAgICB8IFwiTGlzdEhpc3RvcmljYWxSb2xlVHhcIlxuICAgICAgfCBcIkNyZWF0ZVBvbGljeVwiXG4gICAgICB8IFwiR2V0UG9saWN5XCJcbiAgICAgIHwgXCJMaXN0UG9saWNpZXNcIlxuICAgICAgfCBcIkRlbGV0ZVBvbGljeVwiXG4gICAgICB8IFwiVXBkYXRlUG9saWN5XCJcbiAgICAgIHwgXCJJbnZva2VQb2xpY3lcIlxuICAgICAgfCBcIkdldFBvbGljeUxvZ3NcIlxuICAgICAgfCBcIlVwbG9hZFdhc21Qb2xpY3lcIlxuICAgICAgfCBcIkdldFBvbGljeVNlY3JldHNcIlxuICAgICAgfCBcIlVwZGF0ZVBvbGljeVNlY3JldHNcIlxuICAgICAgfCBcIlNldFBvbGljeVNlY3JldFwiXG4gICAgICB8IFwiRGVsZXRlUG9saWN5U2VjcmV0XCJcbiAgICAgIHwgXCJDcmVhdGVQb2xpY3lJbXBvcnRLZXlcIlxuICAgICAgfCBcIlVzZXJFeHBvcnREZWxldGVcIlxuICAgICAgfCBcIlVzZXJFeHBvcnRMaXN0XCJcbiAgICAgIHwgXCJVc2VyRXhwb3J0SW5pdFwiXG4gICAgICB8IFwiVXNlckV4cG9ydENvbXBsZXRlXCJcbiAgICAgIHwgXCJBZGRVc2VyVG9Sb2xlXCJcbiAgICAgIHwgXCJSZW1vdmVVc2VyRnJvbVJvbGVcIlxuICAgICAgfCBcIk1mYUFwcHJvdmVDc1wiXG4gICAgICB8IFwiTWZhUmVqZWN0Q3NcIlxuICAgICAgfCBcIk1mYUdldFwiXG4gICAgICB8IFwiTWZhTGlzdFwiXG4gICAgICB8IFwiQWRkS2V5c1RvUm9sZVwiXG4gICAgICB8IFwiUmVtb3ZlS2V5RnJvbVJvbGVcIlxuICAgICAgfCBcIkNyZWF0ZVRva2VuXCJcbiAgICAgIHwgXCJDcmVhdGVTZXNzaW9uXCJcbiAgICAgIHwgXCJSZXZva2VTZXNzaW9uXCJcbiAgICAgIHwgXCJSZXZva2VDdXJyZW50U2Vzc2lvblwiXG4gICAgICB8IFwiUmV2b2tlU2Vzc2lvbnNcIlxuICAgICAgfCBcIkxpc3RTZXNzaW9uc1wiXG4gICAgICB8IFwiR2V0U2Vzc2lvblwiXG4gICAgICB8IFwiU2lnbmVyU2Vzc2lvblJlZnJlc2hcIlxuICAgICAgfCBcIk1mYUFwcHJvdmVUb3RwXCJcbiAgICAgIHwgXCJNZmFSZWplY3RUb3RwXCJcbiAgICAgIHwgXCJNZmFGaWRvSW5pdFwiXG4gICAgICB8IFwiTWZhQXBwcm92ZUZpZG9Db21wbGV0ZVwiXG4gICAgICB8IFwiTWZhUmVqZWN0Rmlkb0NvbXBsZXRlXCJcbiAgICAgIHwgXCJNZmFFbWFpbEluaXRcIlxuICAgICAgfCBcIk1mYUVtYWlsQ29tcGxldGVcIlxuICAgICAgfCBcIkN1YmUzc2lnbmVySGVhcnRiZWF0XCJcbiAgICAgIHwgXCJDcmVhdGVDb250YWN0XCJcbiAgICAgIHwgXCJHZXRDb250YWN0XCJcbiAgICAgIHwgXCJMaXN0Q29udGFjdHNcIlxuICAgICAgfCBcIkRlbGV0ZUNvbnRhY3RcIlxuICAgICAgfCBcIlVwZGF0ZUNvbnRhY3RcIlxuICAgICAgfCBcIkxvb2t1cENvbnRhY3RzQnlBZGRyZXNzXCJcbiAgICAgIHwgXCJRdWVyeU1ldHJpY3NcIlxuICAgICAgfCBcIlF1ZXJ5QXVkaXRMb2dcIlxuICAgICAgfCBcIkNvdW50c1wiXG4gICAgICB8IFwiQ3JlYXRlS2V5XCJcbiAgICAgIHwgXCJJbXBvcnRLZXlcIlxuICAgICAgfCBcIkNyZWF0ZUtleUltcG9ydEtleVwiXG4gICAgICB8IFwiRGVyaXZlS2V5XCJcbiAgICAgIHwgXCJEZWxldGVLZXlcIlxuICAgICAgfCBcIkF2YVNpZ25cIlxuICAgICAgfCBcIkF2YVNlcmlhbGl6ZWRUeFNpZ25cIlxuICAgICAgfCBcIkJhYnlsb25SZWdpc3RyYXRpb25cIlxuICAgICAgfCBcIkJhYnlsb25TdGFraW5nXCJcbiAgICAgIHwgXCJCYWJ5bG9uQ292U2lnblwiXG4gICAgICB8IFwiQmxvYlNpZ25cIlxuICAgICAgfCBcIkJ0Y01lc3NhZ2VTaWduXCJcbiAgICAgIHwgXCJCdGNTaWduXCJcbiAgICAgIHwgXCJEaWZmaWVIZWxsbWFuRXhjaGFuZ2VcIlxuICAgICAgfCBcIlBzYnRTaWduXCJcbiAgICAgIHwgXCJQc2J0TGVnYWN5SW5wdXRTaWduXCJcbiAgICAgIHwgXCJQc2J0U2Vnd2l0SW5wdXRTaWduXCJcbiAgICAgIHwgXCJQc2J0VGFwcm9vdElucHV0U2lnblwiXG4gICAgICB8IFwiVGFwcm9vdFNpZ25cIlxuICAgICAgfCBcIkVpcDcxMlNpZ25cIlxuICAgICAgfCBcIkVpcDE5MVNpZ25cIlxuICAgICAgfCBcIkV0aDFTaWduXCJcbiAgICAgIHwgXCJFdGgyU2lnblwiXG4gICAgICB8IFwiU29sYW5hU2lnblwiXG4gICAgICB8IFwiU3VpU2lnblwiXG4gICAgICB8IFwiVGVuZGVybWludFNpZ25cIlxuICAgICAgfCBcIlN0YWtlXCJcbiAgICAgIHwgXCJVbnN0YWtlXCJcbiAgICAgIHwgXCJQYXNza2V5QXV0aEluaXRcIlxuICAgICAgfCBcIlBhc3NrZXlBdXRoQ29tcGxldGVcIlxuICAgICAgfCBcIk9pZGNBdXRoXCJcbiAgICAgIHwgXCJPYXV0aDJUd2l0dGVyXCJcbiAgICAgIHwgXCJPQXV0aDJUb2tlblJlZnJlc2hcIlxuICAgICAgfCBcIkVtYWlsT3RwQXV0aFwiXG4gICAgICB8IFwiU2l3ZUluaXRcIlxuICAgICAgfCBcIlNpd2VDb21wbGV0ZVwiXG4gICAgICB8IFwiVGVsZWdyYW1BdXRoXCJcbiAgICAgIHwgXCJDcmVhdGVPaWRjVXNlclwiXG4gICAgICB8IFwiRGVsZXRlT2lkY1VzZXJcIlxuICAgICAgfCBcIkRlbGV0ZVVzZXJcIlxuICAgICAgfCBcIkNyZWF0ZUVvdHNOb25jZXNcIlxuICAgICAgfCBcIkVvdHNTaWduXCJcbiAgICAgIHwgXCJBdXRoTWlncmF0aW9uSWRlbnRpdHlBZGRcIlxuICAgICAgfCBcIkF1dGhNaWdyYXRpb25JZGVudGl0eVJlbW92ZVwiXG4gICAgICB8IFwiQXV0aE1pZ3JhdGlvblVzZXJVcGRhdGVcIlxuICAgICAgfCBcIktleUNyZWF0ZWRcIlxuICAgICAgfCBcIktleUltcG9ydGVkXCJcbiAgICAgIHwgXCJJbnZpdGF0aW9uQWNjZXB0XCJcbiAgICAgIHwgXCJJZHBBdXRoZW50aWNhdGVcIlxuICAgICAgfCBcIklkcFBhc3N3b3JkUmVzZXRSZXF1ZXN0XCJcbiAgICAgIHwgXCJJZHBQYXNzd29yZFJlc2V0Q29uZmlybVwiXG4gICAgICB8IFwiQ3VzdG9tQ2hhaW5ScGNDYWxsXCJcbiAgICAgIHwgXCJFc3Bsb3JhQXBpQ2FsbFwiXG4gICAgICB8IFwiRXhlY3V0ZVBvbGljeVwiXG4gICAgICB8IFwiU2VudHJ5QXBpQ2FsbFwiXG4gICAgICB8IFwiU2VudHJ5QXBpQ2FsbFB1YmxpY1wiXG4gICAgICB8IFwiTW1pSndrU2V0XCJcbiAgICAgIHwgXCJBdHRlc3RhdGlvbkp3a1NldFwiXG4gICAgICB8IFwiVXNlck9yZ3NcIlxuICAgICAgfCBcIlB1YmxpY09yZ0luZm9cIlxuICAgICAgfCBcIkVtYWlsTXlPcmdzXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIGJpdGNvaW4gYWRkcmVzcyBhbmQgaXRzIG5ldHdvcmsuICovXG4gICAgQml0Y29pbkFkZHJlc3NJbmZvOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgYml0Y29pbiBhZGRyZXNzLlxuICAgICAgICogQGV4YW1wbGUgYmMxcHVjMHE4amh4M2tuYzJzdGxmaGwzNW5qYTg5bnZrbXFyNGM1ZTJsZHl1cTJtY2NraHIzbXNhdmo5OWpcbiAgICAgICAqL1xuICAgICAgYWRkcmVzczogc3RyaW5nO1xuICAgICAgY2hhaW46IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQnRjQ2hhaW5cIl07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZXhhbXBsZSB7XG4gICAgICogICBcIm1lc3NhZ2VfYmFzZTY0XCI6IFwiWVdKalpHVm1aMmhwYW10c2JXNXZjSEZ5YzNSMWRuZDRlWG94TWpNME5UWUtcIlxuICAgICAqIH1cbiAgICAgKi9cbiAgICBCbG9iU2lnblJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFJlcXVlc3QgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcmVzcG9uc2UsIGV4cGxhaW5pbmdcbiAgICAgICAqIHRoZSBvdXRjb21lIChpLmUuLCBwZXJtaXR0ZWQgdnMuIGRlbmllZCB2cy4gTUZBIHJlcXVpcmVkKSBvZiB0aGUgc2lnbiByZXF1ZXN0LlxuICAgICAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGV4cGxhaW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgTUZBIGlzIHJlcXVpcmVkLCBmYWlsIHRoZSByZXF1ZXN0IGluc3RlYWQgb2YgcmV0dXJuaW5nIDIwMiBhbmQgY3JlYXRpbmdcbiAgICAgICAqIHBlbmRpbmcgTUZBIHJlcXVlc3QuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBmYWlsX29uX21mYT86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBtZXRhZGF0YS4gUGFzc2luZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFzIG1ldGFkYXRhIGNhbiBiZSB1c2VkIHRvIG1ha2UgcmV2aWV3aW5nXG4gICAgICAgKiBvZiBwZW5kaW5nIE1GQSByZXF1ZXN0cyBhbmQvb3IgaGlzdG9yaWNhbCBrZXkgdHJhbnNhY3Rpb25zIG1vcmUgdHJhbnNwYXJlbnQuIEl0IGNhbiBhbHNvIGJlIHVzZWQgZS5nLiwgdG8gY2FycnkgYWRkaXRpb25hbCBkYXRhIHRvIFdlYkhvb2sgcG9saWNpZXMuXG4gICAgICAgKi9cbiAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQW4gb3B0aW9uYWwgYmFzZTY0IHN0cmluZyBjb21wcmlzaW5nIGEgU0VDMS1lbmNvZGVkIHNlY3AyNTZrMSBwdWJsaWMga2V5LlxuICAgICAgICogVGhpcyBmaWVsZCBjYW4gYmUgdXNlZCAqb25seSogd2l0aCBTY2hub3JyIGtleXMuXG4gICAgICAgKlxuICAgICAgICogSWYgdGhpcyBmaWVsZCBpcyBwcmVzZW50LCB0aGUgcmVzcG9uc2Ugd2lsbCBiZSBhIFNjaG5vcnIgYWRhcHRvciBzaWduYXR1cmVcbiAgICAgICAqIGluIHRoZSBmb3JtYXQgc3BlY2lmaWVkIGJ5IEJsb2Nrc3RyZWFtIGZvciB1c2UgaW4gbGlic2VjcDI1NmsxLXprcC4gU2VlXG4gICAgICAgKiA8aHR0cHM6Ly9naXRodWIuY29tL1poZVBhbmcvUHl0aG9uX1NwZWNpZmljYXRpb25fZm9yX1NjaG5vcnJfQWRhcHRvci8+XG4gICAgICAgKiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAgICAgICAqIEBleGFtcGxlIEFybnk0V29IRE5CVlhZY3luaE5sOS95N0p0dEoycmswQ0NSZkxSN3QzYURnXG4gICAgICAgKi9cbiAgICAgIGFkYXB0b3JfcGs/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQW4gb3B0aW9uYWwgZG9tYWluIHNlcGFyYXRpb24gdGFnIGZvciB1c2UgKm9ubHkqIHdpdGggQkxTIHNpZ25pbmcgcmVxdWVzdHMuXG4gICAgICAgKiBUaGlzIGZpZWxkIG11c3Qgbm90IGJlIHN1cHBsaWVkIGZvciByZXF1ZXN0cyBpbnZvbHZpbmcgbm9uLUJMUyBrZXkgdHlwZXMuXG4gICAgICAgKlxuICAgICAgICogSWYgdGhpcyBmaWVsZCBpcyBub3QgcHJlc2VudCBvciBudWxsLCB0aGUgZG9tYWluIHNlcGFyYXRpb24gdGFnIHNwZWNpZmllZCBpblxuICAgICAgICogdGhlIElFVEYgQkxTIFNpZ25hdHVyZXMgZHJhZnQgdmVyc2lvbnMgNCBhbmQgNSwgc2VjdGlvbiA0LjIuMyAobWluaW1hbCBwdWJrZXlcbiAgICAgICAqIHNpemUgdmFyaWFudCkgaXMgdXNlZC5cbiAgICAgICAqXG4gICAgICAgKiBPdGhlcndpc2UsIHRoaXMgZmllbGQgbXVzdCBjb250YWluIGEgYmFzZS02NCBzdHJpbmcgZW5jb2RpbmcgYSBub24tZW1wdHkgYnl0ZVxuICAgICAgICogdmVjdG9yLiBXaGVuIHVzaW5nIGEgY3VzdG9tIHRhZywgUkZDOTM4MCAoU2VjdGlvbiAzLjEpIHJlY29tbWVuZHMgYSBsZW5ndGggb2ZcbiAgICAgICAqIGF0IGxlYXN0IDE2IGJ5dGVzLlxuICAgICAgICogQGV4YW1wbGUgRWJiTHZDeEk3Z2FuNzFpSVNEc2ZyNDZldE92NjA2UWtHR0RQNVBwVmw1UT1cbiAgICAgICAqL1xuICAgICAgYmxzX2RzdD86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgYmxvYiB0byBzaWduLCBlbmNvZGVkIGFzIGEgYmFzZTY0IHN0cmluZy5cbiAgICAgICAqXG4gICAgICAgKiBOb3RlIHRoYXQgY2VydGFpbiBzaWduaW5nIGtleXMgaW1wb3NlIGFkZGl0aW9uYWwgcmVxdWlyZW1lbnRzIG9uIHRoZSBjb250ZW50cyBvZlxuICAgICAgICogdGhlIG1lc3NhZ2UuIEZvciBleGFtcGxlLCBTZWNwMjU2azEga2V5cyByZXF1aXJlIHRoYXQgdGhlIG1lc3NhZ2UgaXMgMzIgYnl0ZXMgbG9uZy5cbiAgICAgICAqL1xuICAgICAgbWVzc2FnZV9iYXNlNjQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFuIG9wdGlvbmFsIHR3ZWFrIHZhbHVlIGZvciB1c2Ugb25seSB3aXRoIChzb21lKSBzZWNwMjU2azEga2V5IHR5cGVzLlxuICAgICAgICogVGhpcyBmaWVsZCBtdXN0IG5vdCBiZSBzdXBwbGllZCBmb3IgcmVxdWVzdHMgaW52b2x2aW5nIGFueSBvdGhlciBrZXkgdHlwZS5cbiAgICAgICAqXG4gICAgICAgKiBJZiB0aGlzIGZpZWxkIGlzIG5vdCBwcmVzZW50IG9yIG51bGwsIG5vIHR3ZWFrIGlzIGFwcGxpZWQuIE90aGVyd2lzZSwgdGhpcyBmaWVsZFxuICAgICAgICogbXVzdCBjb250YWluIGEgYmFzZS02NCBzdHJpbmcgZW5jb2RpbmcgYSB2ZWN0b3Igb2YgZXhhY3RseSAzMiBieXRlcy4gU2VlIHRoZVxuICAgICAgICogQ3ViZVNpZ25lciBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBTZWd3aXQgdHdlYWtpbmcgcHJvY2VkdXJlLlxuICAgICAgICogQGV4YW1wbGUgRjQxSEF5MnE1R244bGFGMkN1TXNaYlJBUVRtRCs0T2IzVlVNWjdUQkdLND1cbiAgICAgICAqL1xuICAgICAgc2Vnd2l0X3R3ZWFrPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFuIG9wdGlvbmFsIHR3ZWFrIHZhbHVlIGZvciB1c2UgKm9ubHkqIHdpdGggVGFwcm9vdCBrZXlzLiBUaGlzIGZpZWxkIG11c3Qgbm90XG4gICAgICAgKiBiZSBzdXBwbGllZCBmb3IgcmVxdWVzdHMgaW52b2x2aW5nIGFueSBvdGhlciBrZXkgdHlwZS5cbiAgICAgICAqXG4gICAgICAgKiBJZiB0aGlzIGZpZWxkIGlzIG5vdCBwcmVzZW50IG9yIG51bGwsIG5vIHR3ZWFrIGlzIGFwcGxpZWQuIElmIHRoZSBmaWVsZCBpcyBhblxuICAgICAgICogZW1wdHkgc3RyaW5nLCB0aGUga2V5IGlzIHR3ZWFrZWQgd2l0aCBhbiB1bnNwZW5kYWJsZSBzY3JpcHQgcGF0aCBwZXIgQklQMDM0MS5cbiAgICAgICAqIE90aGVyd2lzZSwgdGhpcyBmaWVsZCBtdXN0IGNvbnRhaW4gYSAzMi1ieXRlLCBiYXNlLTY0IHN0cmluZyByZXByZXNlbnRpbmcgdGhlXG4gICAgICAgKiBNZXJrbGUgcm9vdCB3aXRoIHdoaWNoIHRvIHR3ZWFrIHRoZSBrZXkgYmVmb3JlIHNpZ25pbmcuXG4gICAgICAgKiBAZXhhbXBsZSBGNDFIQXkycTVHbjhsYUYyQ3VNc1piUkFRVG1EKzRPYjNWVU1aN1RCR0s0PVxuICAgICAgICovXG4gICAgICB0YXByb290X3R3ZWFrPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTdXBwb3J0ZWQgQlRDIGNoYWlucy5cbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIEJ0Y0NoYWluOiBcIm1haW5uZXRcIiB8IFwic2lnbmV0XCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBMZWFmIGhhc2ggYW5kIGNvZGUsIGFzIHBlciBCSVAzNDEgYW5kIGh0dHBzOi8vZ2l0aHViLmNvbS9ydXN0LWJpdGNvaW4vcnVzdC1iaXRjb2luL2Jsb2IvNDY0MjAyMTA5ZDJiMmM5NmU5YjQ4Njc0NjFiZmZlNDIwZGJkODE3Ny9iaXRjb2luL3NyYy9jcnlwdG8vc2lnaGFzaC5ycyNMNjkxICovXG4gICAgQnRjTGVhZkhhc2hDb2RlU2VwYXJhdG9yOiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDb2RlIHNlcGFyYXRvclxuICAgICAgICovXG4gICAgICBjb2RlX3NlcGFyYXRvcjogbnVtYmVyO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUYXByb290LXRhZ2dlZCBoYXNoIHdpdGggdGFnIFwiVGFwTGVhZlwiLiAqL1xuICAgICAgbGVhZl9oYXNoOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIERhdGEgdG8gc2lnbiAqL1xuICAgIEJ0Y01lc3NhZ2VTaWduUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGJlIGluY2x1ZGVkIGluIHRoZSByZXNwb25zZSwgZXhwbGFpbmluZ1xuICAgICAgICogdGhlIG91dGNvbWUgKGkuZS4sIHBlcm1pdHRlZCB2cy4gZGVuaWVkIHZzLiBNRkEgcmVxdWlyZWQpIG9mIHRoZSBzaWduIHJlcXVlc3QuXG4gICAgICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZXhwbGFpbj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBNRkEgaXMgcmVxdWlyZWQsIGZhaWwgdGhlIHJlcXVlc3QgaW5zdGVhZCBvZiByZXR1cm5pbmcgMjAyIGFuZCBjcmVhdGluZ1xuICAgICAgICogcGVuZGluZyBNRkEgcmVxdWVzdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGZhaWxfb25fbWZhPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG1ldGFkYXRhLiBQYXNzaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYXMgbWV0YWRhdGEgY2FuIGJlIHVzZWQgdG8gbWFrZSByZXZpZXdpbmdcbiAgICAgICAqIG9mIHBlbmRpbmcgTUZBIHJlcXVlc3RzIGFuZC9vciBoaXN0b3JpY2FsIGtleSB0cmFuc2FjdGlvbnMgbW9yZSB0cmFuc3BhcmVudC4gSXQgY2FuIGFsc28gYmUgdXNlZCBlLmcuLCB0byBjYXJyeSBhZGRpdGlvbmFsIGRhdGEgdG8gV2ViSG9vayBwb2xpY2llcy5cbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBNZXNzYWdlIHRvIHNpZ24gYXMgYSBoZXgtZW5jb2RlZCBieXRlIHN0cmluZy5cbiAgICAgICAqIEBleGFtcGxlIDB4ZGVhZGJlZWYxM2MwZmZlZVxuICAgICAgICovXG4gICAgICBkYXRhOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEZvciBzZWd3aXQsIHNpZ24gdGhlIG1lc3NhZ2UgYXMgcDJzaC1wMndwa2ggaW5zdGVhZCBvZiBwMndwa2ggKi9cbiAgICAgIGlzX3Ayc2g/OiBib29sZWFuO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBCVEMgbWVzc2FnZSBzaWduaW5nIHJlc3BvbnNlICovXG4gICAgQnRjTWVzc2FnZVNpZ25SZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY3kgZXZhbHVhdGlvbiB0cmVlLiAqL1xuICAgICAgcG9saWN5X2V2YWxfdHJlZT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGJhc2U2NC1lbmNvZGVkIHNpZ25hdHVyZSBpbiBCSVAxMzcgZm9ybWF0LiAqL1xuICAgICAgc2lnOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBCdGNTaWdoYXNoVHlwZTpcbiAgICAgIHwgXCJBbGxcIlxuICAgICAgfCBcIk5vbmVcIlxuICAgICAgfCBcIlNpbmdsZVwiXG4gICAgICB8IFwiQWxsUGx1c0FueW9uZUNhblBheVwiXG4gICAgICB8IFwiTm9uZVBsdXNBbnlvbmVDYW5QYXlcIlxuICAgICAgfCBcIlNpbmdsZVBsdXNBbnlvbmVDYW5QYXlcIjtcbiAgICBCdGNTaWduUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGJlIGluY2x1ZGVkIGluIHRoZSByZXNwb25zZSwgZXhwbGFpbmluZ1xuICAgICAgICogdGhlIG91dGNvbWUgKGkuZS4sIHBlcm1pdHRlZCB2cy4gZGVuaWVkIHZzLiBNRkEgcmVxdWlyZWQpIG9mIHRoZSBzaWduIHJlcXVlc3QuXG4gICAgICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZXhwbGFpbj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBNRkEgaXMgcmVxdWlyZWQsIGZhaWwgdGhlIHJlcXVlc3QgaW5zdGVhZCBvZiByZXR1cm5pbmcgMjAyIGFuZCBjcmVhdGluZ1xuICAgICAgICogcGVuZGluZyBNRkEgcmVxdWVzdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGZhaWxfb25fbWZhPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG1ldGFkYXRhLiBQYXNzaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYXMgbWV0YWRhdGEgY2FuIGJlIHVzZWQgdG8gbWFrZSByZXZpZXdpbmdcbiAgICAgICAqIG9mIHBlbmRpbmcgTUZBIHJlcXVlc3RzIGFuZC9vciBoaXN0b3JpY2FsIGtleSB0cmFuc2FjdGlvbnMgbW9yZSB0cmFuc3BhcmVudC4gSXQgY2FuIGFsc28gYmUgdXNlZCBlLmcuLCB0byBjYXJyeSBhZGRpdGlvbmFsIGRhdGEgdG8gV2ViSG9vayBwb2xpY2llcy5cbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICBzaWdfa2luZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCdGNTaWduYXR1cmVLaW5kXCJdO1xuICAgICAgdHg6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQnRjVHhcIl07XG4gICAgfTtcbiAgICBCdGNTaWduYXR1cmVLaW5kOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFNlZ3JlZ2F0ZWQgV2l0bmVzcyAqL1xuICAgICAgU2Vnd2l0OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVHJhbnNhY3Rpb24gaW5wdXQgaW5kZXhcbiAgICAgICAgICogQGV4YW1wbGUgMFxuICAgICAgICAgKi9cbiAgICAgICAgaW5wdXRfaW5kZXg6IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBTY3JpcHRcbiAgICAgICAgICogQGV4YW1wbGUgMHg3NmE5MTQ3OTA5MTk3MjE4NmM0NDllYjFkZWQyMmI3OGU0MGQwMDliZGYwMDg5ODhhY1xuICAgICAgICAgKi9cbiAgICAgICAgc2NyaXB0X2NvZGU6IHN0cmluZztcbiAgICAgICAgc2lnaGFzaF90eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJ0Y1NpZ2hhc2hUeXBlXCJdO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHR3ZWFrIHRvIGFwcGx5IHRvIHRoZSBrZXkgYmVmb3JlIHNpZ25pbmcuXG4gICAgICAgICAqXG4gICAgICAgICAqIFdoZW4gc3VwcGxpZWQsIHRoaXMgZmllbGQgbXVzdCBjb250YWluIGEgYmFzZS02NCBzdHJpbmcgZW5jb2RpbmcgYSB2ZWN0b3Igb2ZcbiAgICAgICAgICogZXhhY3RseSAzMiBieXRlcywgd2hpY2ggYXJlIHVzZWQgdG8gY29tcHV0ZSB0aGUgdHdlYWtlZCBwdWJsaWMga2V5LiBTZWUgdGhlXG4gICAgICAgICAqIEN1YmVTaWduZXIgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgU2Vnd2l0IHR3ZWFraW5nIHByb2NlZHVyZS5cbiAgICAgICAgICogQGV4YW1wbGUgRjQxSEF5MnE1R244bGFGMkN1TXNaYlJBUVRtRCs0T2IzVlVNWjdUQkdLND1cbiAgICAgICAgICovXG4gICAgICAgIHR3ZWFrPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB0b3RhbCBhbW91bnQgb2YgdGhlIGlucHV0IChpbiBzYXRvc2hpcykuXG4gICAgICAgICAqIEBleGFtcGxlIDEwMDAwMDBcbiAgICAgICAgICovXG4gICAgICAgIHZhbHVlOiBudW1iZXI7XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGV4YW1wbGUge1xuICAgICAqICAgXCJpbnB1dFwiOiBbXG4gICAgICogICAgIHtcbiAgICAgKiAgICAgICBcInByZXZpb3VzX291dHB1dFwiOiBcIjc3NTQxYWViM2M0ZGFjOTI2MGI2OGY3NGY0NGM5NzMwODFhOWQ0Y2IyZWJlODAzOGIyZDcwZmFhMjAxYjZiZGI6MVwiLFxuICAgICAqICAgICAgIFwic2NyaXB0X3NpZ1wiOiBcIlwiLFxuICAgICAqICAgICAgIFwic2VxdWVuY2VcIjogNDI5NDk2NzI5NCxcbiAgICAgKiAgICAgICBcIndpdG5lc3NcIjogW11cbiAgICAgKiAgICAgfVxuICAgICAqICAgXSxcbiAgICAgKiAgIFwibG9ja190aW1lXCI6IDExNzAsXG4gICAgICogICBcIm91dHB1dFwiOiBbXG4gICAgICogICAgIHtcbiAgICAgKiAgICAgICBcInNjcmlwdF9wdWJrZXlcIjogXCI3NmE5MTRhNDU3YjY4NGQ3ZjBkNTM5YTQ2YTQ1YmJjMDQzZjM1YjU5ZDBkOTYzODhhY1wiLFxuICAgICAqICAgICAgIFwidmFsdWVcIjogMTk5OTk2NjAwXG4gICAgICogICAgIH0sXG4gICAgICogICAgIHtcbiAgICAgKiAgICAgICBcInNjcmlwdF9wdWJrZXlcIjogXCI3NmE5MTRmZDI3MGIxZWU2YWJjYWVhOTdmZWE3YWQwNDAyZThiZDhhZDZkNzdjODhhY1wiLFxuICAgICAqICAgICAgIFwidmFsdWVcIjogODAwMDAwMDAwXG4gICAgICogICAgIH1cbiAgICAgKiAgIF0sXG4gICAgICogICBcInZlcnNpb25cIjogMVxuICAgICAqIH1cbiAgICAgKi9cbiAgICBCdGNUeDogUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgIEJ0Y1R4T3V0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBzY3JpcHQgd2hpY2ggbXVzdCBiZSBzYXRpc2ZpZWQgZm9yIHRoZSBvdXRwdXQgdG8gYmUgc3BlbnQuICovXG4gICAgICBzY3JpcHRfcHVia2V5OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdmFsdWUgb2YgdGhlIG91dHB1dCwgaW4gc2F0b3NoaXMuXG4gICAgICAgKi9cbiAgICAgIHZhbHVlOiBudW1iZXI7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gU3VwcG9ydGVkIENhbnRvbiBlbnZpcm9ubWVudHMuXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBDYW50b25FbnZpcm9ubWVudDogXCJtYWlubmV0XCIgfCBcImRldm5ldFwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gYWJvdXQgYSBzcGVjaWZpYyBDYW50b24gcGFydHkuICovXG4gICAgQ2FudG9uUGFydHlJbmZvOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIENhbnRvbiBwYXJ0eS5cbiAgICAgICAqIEBleGFtcGxlIEFsaWNlOjoxMjIwZjJmZTI5ODY2ZmQ2YTAwMDllY2M4YTY0Y2NkYzA5ZjE5NThiZDBmODAxMTY2YmFhZWU0NjlkMTI1MWIyZWI3MlxuICAgICAgICovXG4gICAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgICBjaGFpbjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDYW50b25FbnZpcm9ubWVudFwiXTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRGVzY3JpYmVzIGhvdyB0byBkZXJpdmUgYSBXZWJBdXRobiBjaGFsbGVuZ2UgdmFsdWUuICovXG4gICAgQ2hhbGxlbmdlUGllY2VzOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGJhc2U2NHVybCBlbmNvZGluZyBvZiBVVEY4IEpTT04uIFRoZSBkYXRhIGluIHRoYXQgSlNPTiBpcyBlbmRwb2ludCBzcGVjaWZpYywgYW5kIGRlc2NyaWJlcyB3aGF0IHRoaXMgRklETyBjaGFsbGVuZ2Ugd2lsbCBiZSB1c2VkIGZvci5cbiAgICAgICAqXG4gICAgICAgKiBDbGllbnRzIGNhbiB1c2UgYHByZWltYWdlYCBhbG9uZyB3aXRoIGByYW5kb21fc2VlZGAgdG8gcmVjb25zdHJ1Y3QgdGhlIGNoYWxsZW5nZSBsaWtlIHNvOlxuICAgICAgICpcbiAgICAgICAqIGBjaGFsbGVuZ2UgPSBITUFDLVNIQTI1NihrZXk9cmFuZG9tX3NlZWQsIG1lc3NhZ2U9cHJlaW1hZ2UpYFxuICAgICAgICovXG4gICAgICBwcmVpbWFnZTogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIHJhbmRvbSBzZWVkIHRoYXQgcHJldmVudHMgcmVwbGF5IGF0dGFja3MgKi9cbiAgICAgIHJhbmRvbV9zZWVkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIENsaWVudCBpbmZvcm1hdGlvbiByZXByZXNlbnRpbmcgdGhlIG5hdHVyZSBvZiBmcm9udC1lbmQgaW4gW2BDbGllbnRTZXNzaW9uTWV0YWRhdGFgXSBhbmQgcmVmbGVjdGVkIGluIFtgU2Vzc2lvbk1ldGFkYXRhYF0uICovXG4gICAgQ2xpZW50UHJvZmlsZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQWdlbnQvUHJvZHVjdCBuYW1lXG4gICAgICAgKiBAZXhhbXBsZSBNb3ppbGxhIEZpcmVmb3hcbiAgICAgICAqL1xuICAgICAgYWdlbnQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvZiB0aGUgZW5naW5lXG4gICAgICAgKiBAZXhhbXBsZSBHZWNrb1xuICAgICAgICovXG4gICAgICBlbmdpbmU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQWdlbnQvcHJvZHVjdCB2ZXJzaW9uXG4gICAgICAgKiBAZXhhbXBsZSA0MS4yXG4gICAgICAgKi9cbiAgICAgIHZlcnNpb24/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFNlc3Npb24gaW5mb3JtYXRpb24gc2VudCB0byB0aGUgY2xpZW50LlxuICAgICAqIFRoaXMgc3RydWN0IHdvcmtzIGluIHRhbmRlbSB3aXRoIGl0cyBzZXJ2ZXItc2lkZSBjb3VudGVycGFydCBbYFNlc3Npb25EYXRhYF0uXG4gICAgICovXG4gICAgQ2xpZW50U2Vzc2lvbkluZm86IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVG9rZW4gdG8gdXNlIGZvciBhdXRob3JpemF0aW9uLiAqL1xuICAgICAgYXV0aF90b2tlbjogc3RyaW5nO1xuICAgICAgYXV0aF90b2tlbl9leHA6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIEVwb2NoIGF0IHdoaWNoIHRoZSB0b2tlbiB3YXMgbGFzdCByZWZyZXNoZWRcbiAgICAgICAqL1xuICAgICAgZXBvY2g6IG51bWJlcjtcbiAgICAgIGVwb2NoX3Rva2VuOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkIzMlwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVG9rZW4gdG8gdXNlIGZvciByZWZyZXNoaW5nIHRoZSBgKGF1dGgsIHJlZnJlc2gpYCB0b2tlbiBwYWlyICovXG4gICAgICByZWZyZXNoX3Rva2VuOiBzdHJpbmc7XG4gICAgICByZWZyZXNoX3Rva2VuX2V4cDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBTZXNzaW9uIElEICovXG4gICAgICBzZXNzaW9uX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEF0dHJpYnV0ZXMgdGhhdCBhcmUgZXhwZWN0ZWQgdG8gYmUgcHJvdmlkZWQgYnkgdGhlIGNsaWVudCAqL1xuICAgIENsaWVudFNlc3Npb25NZXRhZGF0YToge1xuICAgICAgY2xpZW50PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDbGllbnRQcm9maWxlXCJdO1xuICAgICAgb3NfaW5mbz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT3NJbmZvXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEZpZWxkcyB0aGF0IGFyZSBjb21tb24gdG8gZGlmZmVyZW50IHR5cGVzIG9mIHJlc291cmNlcyBzdWNoIGFzIGtleXMsIHJvbGVzLCBldGMuXG4gICAgICogSW5jbHVkZXMgdmVyc2lvbmluZyBmaWVsZHMgcGx1cyBtZXRhZGF0YSwgZWRpdCBwb2xpY3ksIGV0Yy5cbiAgICAgKi9cbiAgICBDb21tb25GaWVsZHM6IHtcbiAgICAgIGNyZWF0ZWQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl0gfCBudWxsO1xuICAgICAgbGFzdF9tb2RpZmllZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBWZXJzaW9uIG9mIHRoaXMgb2JqZWN0XG4gICAgICAgKi9cbiAgICAgIHZlcnNpb24/OiBudW1iZXI7XG4gICAgfSAmIHtcbiAgICAgIGVkaXRfcG9saWN5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFZGl0UG9saWN5XCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVXNlci1kZWZpbmVkIG1ldGFkYXRhLiBXaGVuIHJlbmRlcmluZyAoZS5nLiwgaW4gdGhlIGJyb3dzZXIpIHlvdSBzaG91bGQgdHJlYXRcbiAgICAgICAqIGl0IGFzIHVudHJ1c3RlZCB1c2VyIGRhdGEgKGFuZCBhdm9pZCBpbmplY3RpbmcgbWV0YWRhdGEgaW50byBIVE1MIGRpcmVjdGx5KSBpZlxuICAgICAgICogdW50cnVzdGVkIHVzZXJzIGNhbiBjcmVhdGUvdXBkYXRlIGtleXMgKG9yIHRoZWlyIG1ldGFkYXRhKS5cbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgIH07XG4gICAgQ29tcGxldGVNZmFSZXNldFJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSByZXNldCB0b2tlbiBlbWFpbGVkIHRvIHRoZSB1c2VyXG4gICAgICAgKiBAZXhhbXBsZSBVc2VyI2MzYjkzNzljLTRlOGMtNDIxNi1iZDBhLTY1YWNlNTNjZjk4ZlxuICAgICAgICovXG4gICAgICB0b2tlbjogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbnVtYmVyIG9mIHVzZXJzIGFuZCBrZXlzIGluIGFuIG9yZywgb3JnYW5pemVkIGJ5IHVzZXIgcm9sZSBhbmQga2V5IHR5cGUgKi9cbiAgICBDb21wdXRlQ291bnRzUmVzcG9uc2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgbWFwIG9mIGEgYEtleVR5cGVgIHRvIHRoZSBhbW91bnQgb2Yga2V5cyB3aXRoIHRoYXQgdHlwZSBpbiB0aGUgb3JnLlxuICAgICAgICogQGV4YW1wbGUge1xuICAgICAgICogICBcIlNlY3BCdGNcIjogMyxcbiAgICAgICAqICAgXCJTZWNwRXRoQWRkclwiOiAxXG4gICAgICAgKiB9XG4gICAgICAgKi9cbiAgICAgIGtleXM6IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogbnVtYmVyO1xuICAgICAgfTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgbWFwIG9mIGEgYE1lbWJlclJvbGVgIHRvIHRoZSBhbW91bnQgb2YgbnVtYmVyIG9mIHVzZXJzIHdpdGggdGhhdCByb2xlIGluIHRoZSBvcmcuXG4gICAgICAgKiBAZXhhbXBsZSB7XG4gICAgICAgKiAgIFwiTWVtYmVyXCI6IDEwLFxuICAgICAgICogICBcIk93bmVyXCI6IDFcbiAgICAgICAqIH1cbiAgICAgICAqL1xuICAgICAgdXNlcnM6IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogbnVtYmVyO1xuICAgICAgfTtcbiAgICB9O1xuICAgIENvbmZpZ3VyZUVtYWlsUmVxdWVzdDoge1xuICAgICAgYXV0aDoge1xuICAgICAgICBzbXRwOiBzdHJpbmc7XG4gICAgICB9O1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgZW1haWwgYWRkcmVzcyB0aGF0IGVtYWlscyB3aWxsIGJlIHNlbnQgZnJvbSAqL1xuICAgICAgc2VuZGVyOiBzdHJpbmc7XG4gICAgICB0ZW1wbGF0ZT86IHtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBIVE1MIHRlbXBsYXRlIHRvIHVzZSBmb3IgdGhlIGJvZHkuICovXG4gICAgICAgIGJvZHlfdGVtcGxhdGU6IHN0cmluZztcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgc3ViamVjdCBsaW5lIHRlbXBsYXRlICovXG4gICAgICAgIHN1YmplY3RfdGVtcGxhdGU6IHN0cmluZztcbiAgICAgIH0gfCBudWxsO1xuICAgIH07XG4gICAgQ29uZmlndXJlZE1mYTpcbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIHR5cGU6IFwidG90cFwiO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFVVSUQgb2YgdGhlIGRldmljZSB0eXBlICovXG4gICAgICAgICAgYWFndWlkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGlvbiBkYXRlXG4gICAgICAgICAgICovXG4gICAgICAgICAgY3JlYXRlZF9hdDogbnVtYmVyO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGlzIGtleSB3YXMgcmVxdWVzdGVkIHRvIGJlIGRpc2NvdmVyYWJsZS4gKi9cbiAgICAgICAgICBkaXNjb3ZlcmFibGU6IGJvb2xlYW47XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIHVuaXF1ZSBjcmVkZW50aWFsIGlkICovXG4gICAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIExhc3QgdXNlZCBkYXRlXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF91c2VkX2F0OiBudW1iZXI7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIGh1bWFuLXJlYWRhYmxlIG5hbWUgZ2l2ZW4gdG8gdGhlIGtleSAqL1xuICAgICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICB0eXBlOiBcImZpZG9cIjtcbiAgICAgICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBDb25mbGljdEVycm9yQ29kZTogXCJDb25jdXJyZW50UmVxdWVzdERpc2FsbG93ZWRcIiB8IFwiQ29uY3VycmVudExvY2tDcmVhdGlvblwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSBjb250YWN0IGluIHRoZSBvcmcuICovXG4gICAgQ29udGFjdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDb21tb25GaWVsZHNcIl0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBMYWJlbHMgdG8gY2F0ZWdvcml6ZSB0aGlzIGNvbnRhY3QuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwiY3ViaXN0OmVyYzIwX3Rva2VuXCJcbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgbGFiZWxzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDb250YWN0TGFiZWxcIl1bXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuYW1lIGZvciB0aGUgY29udGFjdC4gTXVzdCBiZSBhIHVuaXF1ZSBuYW1lIGFtb25nIGNvbnRhY3RzIGluIHRoZVxuICAgICAgICogb3JnLiBUaGUgbmFtZSBtdXN0IGNvbnNpc3Qgb2YgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMsIHNwYWNlcywgYC5gIGFuZCBgLWAsXG4gICAgICAgKiBhbmQgY2Fubm90IGJlIGxvbmdlciB0aGFuIDUwIGNoYXJhY3RlcnMuXG4gICAgICAgKiBAZXhhbXBsZSBTYXRvc2hpIE5ha2Ftb3RvXG4gICAgICAgKi9cbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgIG93bmVyOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBhZGRyZXNzIGFzc29jaWF0ZWQgd2l0aCBhIGNvbnRhY3QuICovXG4gICAgQ29udGFjdEFkZHJlc3NEYXRhOlxuICAgICAgfCAoY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCaXRjb2luQWRkcmVzc0luZm9cIl0gJiB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgbmV0d29yazogXCJCaXRjb2luXCI7XG4gICAgICAgIH0pXG4gICAgICB8IChjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkV2bUFkZHJlc3NJbmZvXCJdICYge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG5ldHdvcms6IFwiRXZtXCI7XG4gICAgICAgIH0pXG4gICAgICB8IChjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlN1aUFkZHJlc3NJbmZvXCJdICYge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG5ldHdvcms6IFwiU3VpXCI7XG4gICAgICAgIH0pXG4gICAgICB8IChjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNvbGFuYUFkZHJlc3NJbmZvXCJdICYge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG5ldHdvcms6IFwiU29sYW5hXCI7XG4gICAgICAgIH0pXG4gICAgICB8IChjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNhbnRvblBhcnR5SW5mb1wiXSAmIHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBuZXR3b3JrOiBcIkNhbnRvblwiO1xuICAgICAgICB9KTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIGFib3V0IGEgQ29udGFjdC4gKi9cbiAgICBDb250YWN0SW5mb1Jlc3BvbnNlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbnRhY3RcIl0gJiB7XG4gICAgICBhZGRyZXNzZXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWRkcmVzc01hcFwiXTtcbiAgICAgIGlkOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIExhYmVscyB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIGEgY29udGFjdC5cbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIENvbnRhY3RMYWJlbDogXCJjdWJpc3Q6ZXJjMjBfdG9rZW5cIiB8IFwiY3ViaXN0OnNwbF90b2tlblwiO1xuICAgIENyZWF0ZUFuZFVwZGF0ZUtleVByb3BlcnRpZXM6IHtcbiAgICAgIGVkaXRfcG9saWN5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFZGl0UG9saWN5XCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFNldCB0aGlzIGtleSdzIG1ldGFkYXRhLiBJZiB0aGlzIHZhbHVlIGlzIGBudWxsYCwgdGhlIG1ldGFkYXRhIGlzIGVyYXNlZC4gSWYgdGhlIGZpZWxkIGlzXG4gICAgICAgKiBtaXNzaW5nLCB0aGUgbWV0YWRhdGEgcmVtYWlucyB1bmNoYW5nZWQuXG4gICAgICAgKi9cbiAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFNwZWNpZnkgYSB1c2VyIG90aGVyIHRoYW4gdGhlbXNlbHZlcyB0byBiZSB0aGUgKHBvdGVudGlhbGx5IG5ldykgb3duZXIgb2YgdGhlIGtleS5cbiAgICAgICAqIFRoZSBzcGVjaWZpZWQgb3duZXIgbXVzdCBiZSBhbiBleGlzdGluZyB1c2VyIHdobyBpcyBhIG1lbWJlciBvZiB0aGUgc2FtZSBvcmcuXG4gICAgICAgKiBAZXhhbXBsZSBVc2VyI2MzYjkzNzljLTRlOGMtNDIxNi1iZDBhLTY1YWNlNTNjZjk4ZlxuICAgICAgICovXG4gICAgICBvd25lcj86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBTZXQgdGhpcyBrZXkncyBwb2xpY2llcy4gRm9yIGFuIGV4aXN0aW5nIGtleSwgdGhpcyBvdmVyd3JpdGVzIGFsbCBpdHMgcG9saWNpZXMuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwiQWxsb3dSYXdCbG9iU2lnbmluZ1wiLFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJSZXF1aXJlTWZhXCI6IHtcbiAgICAgICAqICAgICAgIFwiY291bnRcIjogMVxuICAgICAgICogICAgIH1cbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBwb2xpY3k/OiB1bmtub3duW10gfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaW5mb3JtYXRpb24gbmVlZGVkIHRvIGNyZWF0ZSBhIENvbnRhY3QuICovXG4gICAgQ3JlYXRlQ29udGFjdFJlcXVlc3Q6IHtcbiAgICAgIGFkZHJlc3Nlcz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWRkcmVzc01hcFwiXTtcbiAgICAgIGVkaXRfcG9saWN5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFZGl0UG9saWN5XCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIGxhYmVscyB0byBhc3NvY2lhdGUgd2l0aCB0aGUgY29udGFjdC5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAgXCJjdWJpc3Q6ZXJjMjBfdG9rZW5cIlxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBsYWJlbHM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbnRhY3RMYWJlbFwiXVtdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCB1c2VyLWRlZmluZWQgbWV0YWRhdGEgYWJvdXQgdGhlIGNvbnRhY3QuICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmFtZSBmb3IgdGhlIGNvbnRhY3QuIE11c3QgYmUgYSB1bmlxdWUgbmFtZSBhbW9uZyBjb250YWN0cyBpbiB0aGVcbiAgICAgICAqIG9yZy4gTmFtZSBtdXN0IGNvbnNpc3Qgb2YgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMsIHNwYWNlcywgYC5gIGFuZCBgLWAsXG4gICAgICAgKiBhbmQgY2Fubm90IGJlIGxvbmdlciB0aGFuIDUwIGNoYXJhY3RlcnMuXG4gICAgICAgKiBAZXhhbXBsZSBTYXRvc2hpIE5ha2Ftb3RvXG4gICAgICAgKi9cbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICB9O1xuICAgIENyZWF0ZUtleUltcG9ydEtleVJlc3BvbnNlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUltcG9ydEtleVwiXSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFuIGF0dGVzdGF0aW9uIGRvY3VtZW50IGZyb20gYSBzZWN1cmUgZW5jbGF2ZSwgaW5jbHVkaW5nIGFuXG4gICAgICAgKiBSU0Egc2lnbmluZyBrZXkgdXNlZCB0byBzaWduIHRoZSBjb250ZW50cyBvZiB0aGlzIG1lc3NhZ2UuXG4gICAgICAgKi9cbiAgICAgIGVuY2xhdmVfYXR0ZXN0YXRpb246IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFuIFJTQS1QU1MtU0hBMjU2IHNpZ25hdHVyZSBvbiB0aGUgcHVibGljIGtleSBhbmQgZW5jcnlwdGVkXG4gICAgICAgKiBzZWNyZXRzIGF0dGVzdGluZyB0byB0aGVpciBnZW5lcmF0aW9uIGluc2lkZSBhIHNlY3VyZSBlbmNsYXZlLlxuICAgICAgICovXG4gICAgICBlbmNsYXZlX3NpZ25hdHVyZTogc3RyaW5nO1xuICAgIH07XG4gICAgQ3JlYXRlS2V5UmVxdWVzdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDcmVhdGVBbmRVcGRhdGVLZXlQcm9wZXJ0aWVzXCJdICYge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ2hhaW4gaWQgZm9yIHdoaWNoIHRoZSBrZXkgaXMgYWxsb3dlZCB0byBzaWduIG1lc3NhZ2VzXG4gICAgICAgKiBAZXhhbXBsZSA1XG4gICAgICAgKi9cbiAgICAgIGNoYWluX2lkPzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIE51bWJlciBvZiBrZXlzIHRvIGNyZWF0ZVxuICAgICAgICogQGV4YW1wbGUgMVxuICAgICAgICovXG4gICAgICBjb3VudDogbnVtYmVyO1xuICAgICAga2V5X3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5VHlwZVwiXTtcbiAgICB9O1xuICAgIENyZWF0ZUtleVJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBpbmZvIGFib3V0IHRoZSBjcmVhdGVkIGtleXMgKi9cbiAgICAgIGtleXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5mb1wiXVtdO1xuICAgIH07XG4gICAgQ3JlYXRlT3JnUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRvIGVuYWJsZSBtZXRyaWNzIGZvciB0aGUgbmV3IG9yZ2FuaXphdGlvbiAqL1xuICAgICAgbWV0cmljc19lbmFibGVkPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBodW1hbiByZWFkYWJsZSBuYW1lIG9mIHRoZSBuZXcgb3JnYW5pemF0aW9uXG4gICAgICAgKiBAZXhhbXBsZSBNeSBDb29sIE9yZ1xuICAgICAgICovXG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHJlc3BvbnNlIHRvIFtjcmVhdGVfaW1wb3J0X2tleV0gY29udGFpbmluZyB0aGUgZ2VuZXJhdGVkIGtleSBhbmQgZW5jbGF2ZVxuICAgICAqIGF0dGVzdGF0aW9ucy5cbiAgICAgKi9cbiAgICBDcmVhdGVQb2xpY3lJbXBvcnRLZXlSZXNwb25zZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJbXBvcnRLZXlcIl0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBbiBhdHRlc3RhdGlvbiBkb2N1bWVudCBmcm9tIGEgc2VjdXJlIGVuY2xhdmUsIGluY2x1ZGluZyBhblxuICAgICAgICogUlNBIHNpZ25pbmcga2V5IHVzZWQgdG8gc2lnbiB0aGUgY29udGVudHMgb2YgdGhpcyBtZXNzYWdlLlxuICAgICAgICovXG4gICAgICBlbmNsYXZlX2F0dGVzdGF0aW9uOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBbiBSU0EtUFNTLVNIQTI1NiBzaWduYXR1cmUgb24gdGhlIHB1YmxpYyBrZXkgYW5kIGVuY3J5cHRlZFxuICAgICAgICogc2VjcmV0cyBhdHRlc3RpbmcgdG8gdGhlaXIgZ2VuZXJhdGlvbiBpbnNpZGUgYSBzZWN1cmUgZW5jbGF2ZS5cbiAgICAgICAqL1xuICAgICAgZW5jbGF2ZV9zaWduYXR1cmU6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBmb3IgY3JlYXRpbmcgYSBuYW1lZCBwb2xpY3kgKi9cbiAgICBDcmVhdGVQb2xpY3lSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBY2Nlc3MtY29udHJvbCBlbnRyaWVzIGRlZmluaW5nIGhvdyB0aGUgcG9saWN5IGNhbiBiZSBhY2Nlc3NlZCwgbW9kaWZpZWQsXG4gICAgICAgKiBhdHRhY2hlZCBhbmQgZXhlY3V0ZWQuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcImFjdGlvblwiOiBcImF0dGFjaFwiLFxuICAgICAgICogICAgIFwicmVzb3VyY2VzXCI6IFtcbiAgICAgICAqICAgICAgIHtcbiAgICAgICAqICAgICAgICAgXCJrZXlfaWRcIjogXCIqXCIsXG4gICAgICAgKiAgICAgICAgIFwicm9sZV9pZFwiOiBcIlJvbGUjZTQyN2MyOGEtOWM1Yi00OWNjLWEyNTctODc4YWVhNThhMjJjXCJcbiAgICAgICAqICAgICAgIH1cbiAgICAgICAqICAgICBdLFxuICAgICAgICogICAgIFwic3ViamVjdHNcIjogXCIqXCJcbiAgICAgICAqICAgfSxcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiYWN0aW9uXCI6IFwic2lnblwiLFxuICAgICAgICogICAgIFwic3ViamVjdHNcIjogXCJSb2xlI2U0MjdjMjhhLTljNWItNDljYy1hMjU3LTg3OGFlYTU4YTIyY1wiXG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgYWNsPzogdW5rbm93bltdIHwgbnVsbDtcbiAgICAgIGVkaXRfcG9saWN5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFZGl0UG9saWN5XCJdIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcG9saWN5IG5hbWUuXG4gICAgICAgKiBNdXN0IGJlIHVuaXF1ZSBhbW9uZyB0aGUgbmFtZWQgcG9saWNpZXMgaW4gdGhpcyBvcmcuIER1cGxpY2F0ZSBwb2xpY3kgbmFtZXNcbiAgICAgICAqIHdpbGwgYmUgcmVqZWN0ZWQuXG4gICAgICAgKiBAZXhhbXBsZSBteV9wb2xpY3lcbiAgICAgICAqL1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgcG9saWN5X3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUG9saWN5VHlwZVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwb2xpY3kgcnVsZXMuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlJlcXVpcmVNZmFcIjoge1xuICAgICAgICogICAgICAgXCJjb3VudFwiOiAxXG4gICAgICAgKiAgICAgfVxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHJ1bGVzOiB1bmtub3duW107XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIGNyZWF0ZSByb2xlIHJlcXVlc3QgYm9keSAqL1xuICAgIENyZWF0ZVJvbGVSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoZSByb2xlLlxuICAgICAgICogQGV4YW1wbGUgbXlfcm9sZVxuICAgICAgICovXG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBuZXdseSBjcmVhdGVkIHJvbGUgaW5mb3JtYXRpb24gKi9cbiAgICBDcmVhdGVSb2xlUmVzcG9uc2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIHJvbGUuXG4gICAgICAgKiBAZXhhbXBsZSBteV9yb2xlXG4gICAgICAgKi9cbiAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBuZXdseSBjcmVhdGVkIHJvbGVcbiAgICAgICAqIEBleGFtcGxlIFJvbGUjYmZlM2VjY2ItNzMxZS00MzBkLWIxZTUtYWMxMzYzZTZiMDZiXG4gICAgICAgKi9cbiAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIENyZWF0ZVNlc3Npb25SZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJhdGNoZXRDb25maWdcIl0gJlxuICAgICAgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDbGllbnRTZXNzaW9uTWV0YWRhdGFcIl0gJiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gQnkgZGVmYXVsdCwgdGhlIHJlcXVlc3RlZCBzZXNzaW9uIGFuZCBhdXRoIGxpZmV0aW1lcyBhcmUgdHJ1bmNhdGVkIHRvIGJlIGF0IG1vc3QgcmVxdWVzdG9yJ3NcbiAgICAgICAgICogc2Vzc2lvbiBhbmQgYXV0aCBsaWZldGltZSwgcmVzcGVjdGl2ZWx5LiBUbyBleHRlbmQgdGhlIHJlcXVlc3RlZCBsaWZldGltZXMgcGFzdCB0aGVcbiAgICAgICAgICogcmVxdWVzdG9yJ3MsIHNldCB0aGlzIHByb3BlcnR5IHRvIGB0cnVlYCAoaW4gd2hpY2ggY2FzZSBNRkEgd2lsbCBiZSByZXF1aXJlZCkuXG4gICAgICAgICAqL1xuICAgICAgICBleHRlbmRfbGlmZXRpbWVzPzogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGh1bWFuIHJlYWRhYmxlIGRlc2NyaXB0aW9uIG9mIHRoZSBzZXNzaW9uJ3MgcHVycG9zZVxuICAgICAgICAgKiBAZXhhbXBsZSBNYW5hZ2Uga2V5cyBvbiBzZXJ2ZXIgZm9vLmJhclxuICAgICAgICAgKi9cbiAgICAgICAgcHVycG9zZTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIENvbnRyb2xzIHdoYXQgY2FwYWJpbGl0aWVzIHRoaXMgc2Vzc2lvbiB3aWxsIGhhdmUuXG4gICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICogICBcIm1hbmFnZTprZXk6KlwiXG4gICAgICAgICAqIF1cbiAgICAgICAgICovXG4gICAgICAgIHNjb3BlczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTY29wZVwiXVtdO1xuICAgICAgfTtcbiAgICBDcmVhdGVUb2tlblJlcXVlc3Q6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUmF0Y2hldENvbmZpZ1wiXSAmXG4gICAgICBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNsaWVudFNlc3Npb25NZXRhZGF0YVwiXSAmIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGh1bWFuIHJlYWRhYmxlIGRlc2NyaXB0aW9uIG9mIHRoZSBwdXJwb3NlIG9mIHRoZSBrZXlcbiAgICAgICAgICogQGV4YW1wbGUgVmFsaWRhdG9yIFNpZ25pbmdcbiAgICAgICAgICovXG4gICAgICAgIHB1cnBvc2U6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBDb250cm9scyB3aGF0IGNhcGFiaWxpdGllcyB0aGlzIHNlc3Npb24gd2lsbCBoYXZlLiBCeSBkZWZhdWx0LCBpdCBoYXMgYWxsXG4gICAgICAgICAqIHNpZ25pbmcgY2FwYWJpbGl0aWVzLCBpLmUuLCBqdXN0IHRoZSAnc2lnbjoqJyBzY29wZS5cbiAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgKiAgIFwic2lnbjoqXCJcbiAgICAgICAgICogXVxuICAgICAgICAgKi9cbiAgICAgICAgc2NvcGVzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTY29wZVwiXVtdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEFuIGV4dGVuZGVkIGZvcm0gb2YgYFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnNgIHRoYXQgYWxsb3dzIGNsaWVudHMgdG8gZGVyaXZlIHRoZSBXZWJBdXRobiBjaGFsbGVuZ2VcbiAgICAgKiBmcm9tIGEgc3RydWN0dXJlZCBwcmVpbWFnZS5cbiAgICAgKlxuICAgICAqIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSB3ZWJ1YXRobiBzaWduYXR1cmUgY2FuIG9ubHkgYmUgdXNlZCBmb3IgYSBzcGVjaWZpYyBwdXJwb3NlXG4gICAgICovXG4gICAgQ3JlYXRpb25PcHRpb25zV2l0aEhhc2g6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2hhbGxlbmdlUGllY2VzXCJdICYge1xuICAgICAgb3B0aW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zXCJdO1xuICAgIH07XG4gICAgQ3ViZVNpZ25lclVzZXJJbmZvOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBtdWx0aS1mYWN0b3IgYXV0aGVudGljYXRpb24gbWV0aG9kcyBjb25maWd1cmVkIGZvciB0aGlzIHVzZXIgKi9cbiAgICAgIGNvbmZpZ3VyZWRfbWZhOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbmZpZ3VyZWRNZmFcIl1bXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gU2V0IG9uY2UgdGhlIHVzZXIgc3VjY2Vzc2Z1bGx5IGxvZ3MgaW50byBDdWJlU2lnbmVyICovXG4gICAgICBpbml0aWFsaXplZDogYm9vbGVhbjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgaHVtYW4gbmFtZSBmb3IgdGhlIHVzZXIgKi9cbiAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBDdWJlU2lnbmVyJ3MgdXNlciBpZGVudGlmaWVyICovXG4gICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEN1c3RvbSBjaGFpbiBSUEMgcmVxdWVzdCAqL1xuICAgIEN1c3RvbUNoYWluUnBjUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBIVFRQIGJvZHkgKi9cbiAgICAgIGJvZHk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgY2hhaW46IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3VzdG9tQ2hhaW5TZWxlY3RvclwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSFRUUCByZWxhdGl2ZSBwYXRoICovXG4gICAgICBwYXRoOiBzdHJpbmc7XG4gICAgfTtcbiAgICBDdXN0b21DaGFpblJwY1Jlc3BvbnNlOiB1bmtub3duO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQ3VzdG9tIGNoYWluIHNlbGVjdG9yICovXG4gICAgQ3VzdG9tQ2hhaW5TZWxlY3Rvcjoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBFVk0gY2hhaW4gKi9cbiAgICAgIEV2bToge1xuICAgICAgICAvKiogQGV4YW1wbGUgMHgwMSAqL1xuICAgICAgICBjaGFpbl9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gYWJvdXQgYW4gb3JnJ3MgY3VzdG9tIGNoYWlucy4gKi9cbiAgICBDdXN0b21DaGFpbnNEYXRhOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEN1c3RvbSBFVk0gY2hhaW5zLiAqL1xuICAgICAgZXZtOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkV2bUN1c3RvbUNoYWluXCJdW107XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gcHJvZHVjZWQgYnkgYSBzdWNjZXNzZnVsIGRlcG9zaXRcbiAgICAgKiBAZXhhbXBsZSB7XG4gICAgICogICBcImNoYWluX2lkXCI6IDUsXG4gICAgICogICBcImRlcG9zaXRfdHhuXCI6IHtcbiAgICAgKiAgICAgXCJkYXRhXCI6IFwiMHguLi5cIixcbiAgICAgKiAgICAgXCJ0b1wiOiBcIjB4ZmY1MGVkM2QwZWMwM2FjMDFkNGM3OWFhZDc0OTI4YmZmNDhhN2IyYlwiLFxuICAgICAqICAgICBcInZhbHVlXCI6IFwiMHgxYmMxNmQ2NzRlYzgwMDAwMFwiXG4gICAgICogICB9LFxuICAgICAqICAgXCJuZXdfdmFsaWRhdG9yX3BrXCI6IFwiOTcwMGZiYjhjOTA2OTQyNDQyYzJhNWIzYWQ3NDk4ZjI3YWVkZGEyNTM3ODZhNmZiYWE4ZmVmNDdmYjdhZjIzNGU1MGNmMmNjZTgxNWE1NTMwODc5OTJhZTU2NWQ0OGRhXCJcbiAgICAgKiB9XG4gICAgICovXG4gICAgRGVwb3NpdFR4bjoge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ2hhaW4gSUQgZm9yIHdoaWNoIHRoZSBkZXBvc2l0IHRyYW5zYWN0aW9uIHdhcyBjcmVhdGVkXG4gICAgICAgKi9cbiAgICAgIGNoYWluX2lkOiBudW1iZXI7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBkZXBvc2l0IHRyYW5zYWN0aW9uLiBJbmNsdWRlcyBvbmx5IGB0b2AsIGB2YWx1ZWAsIGFuZCBgZGF0YWAgZmllbGRzLiAqL1xuICAgICAgZGVwb3NpdF90eG46IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGhleC1lbmNvZGVkIGNvbXByZXNzZWQgZm9ybSBvZiB0aGUgbmV3IHZhbGlkYXRvciBCTFMgcHVibGljIGtleSAqL1xuICAgICAgbmV3X3ZhbGlkYXRvcl9wazogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSB0eXBlIG9mIGRlcG9zaXQgdG8gcGVyZm9ybVxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgRGVwb3NpdFR5cGU6IFwiQ2Fub25pY2FsXCIgfCBcIldyYXBwZXJcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlcXVlc3QgdG8gZGVyaXZlIGtleXMgZm9yIG9uZSB0eXBlIGZyb20gYSBzcGVjaWZpZWQgbW5lbW9uaWMuICovXG4gICAgRGVyaXZlS2V5UmVxdWVzdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDcmVhdGVBbmRVcGRhdGVLZXlQcm9wZXJ0aWVzXCJdICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBvZiBkZXJpdmF0aW9uIHBhdGhzIGZvciB3aGljaCB0byBkZXJpdmUuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwibS80NCcvNjAnLzAnLzAvMFwiLFxuICAgICAgICogICBcIm0vNDQnLzkwMDAnLzAnLzAvMFwiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIGRlcml2YXRpb25fcGF0aDogc3RyaW5nW107XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBXaGVuIGZhbHNlICh0aGUgZGVmYXVsdCksIG5vdGhpbmcgaXMgcmV0dXJuZWQgd2hlbiBhIGRlcml2ZWQga2V5IGFscmVhZHlcbiAgICAgICAqIGV4aXN0cy4gV2hlbiB0cnVlLCByZXR1cm5zIHRoZSBLZXlJbmZvIHN0cnVjdCBmb3Iga2V5cyB0aGF0IGFscmVhZHkgZXhpc3RcbiAgICAgICAqIGlmIGNhbGxlciBpcyBhbGxvd2VkIHRvIGxpc3QgdGhhdCBrZXkuXG4gICAgICAgKi9cbiAgICAgIGlkZW1wb3RlbnQ/OiBib29sZWFuO1xuICAgICAga2V5X3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5VHlwZVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE1hdGVyaWFsLWlkIG9mIHRoZSBtbmVtb25pYyB0byB1c2UgZm9yIGRlcml2YXRpb24uXG4gICAgICAgKiBAZXhhbXBsZSAweDlmMDdiZTgyZDkzNGZjYjVkMGY3NWRkMjRjMmRmZWE4YTg1YTRkMGMyODlkNTg4MjhiMzUzN2ZhZTI0ZDMyYjhcbiAgICAgICAqL1xuICAgICAgbW5lbW9uaWNfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVxdWVzdCB0byBkZXJpdmUga2V5cyBmb3IgbXVsdGlwbGUgdHlwZXMgZnJvbSBhIHNwZWNpZmllZCBtbmVtb25pYy4gKi9cbiAgICBEZXJpdmVLZXlzUmVxdWVzdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDcmVhdGVBbmRVcGRhdGVLZXlQcm9wZXJ0aWVzXCJdICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gV2hlbiBmYWxzZSAodGhlIGRlZmF1bHQpLCBub3RoaW5nIGlzIHJldHVybmVkIHdoZW4gYSBkZXJpdmVkIGtleSBhbHJlYWR5XG4gICAgICAgKiBleGlzdHMuIFdoZW4gdHJ1ZSwgcmV0dXJucyB0aGUgS2V5SW5mbyBzdHJ1Y3QgZm9yIGtleXMgdGhhdCBhbHJlYWR5IGV4aXN0XG4gICAgICAgKiBpZiBjYWxsZXIgaXMgYWxsb3dlZCB0byBsaXN0IHRoYXQga2V5LlxuICAgICAgICovXG4gICAgICBpZGVtcG90ZW50PzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEtleSB0eXBlcyBhbmQgY29ycmVzcG9uZGluZyBwYXRocyBmb3IgZGVyaXZhdGlvbiwgcGx1cyBvcHRpb25hbFxuICAgICAgICogcG9saWNpZXMgdG8gaW5jbHVkZSBmb3Igc3BlY2lmaWMga2V5cy4gSXQgaXMgYW4gZXJyb3IgdG8gc3BlY2lmeVxuICAgICAgICogYSBwb2xpY3kgdGhhdCBkb2VzIG5vdCBhcHBseSB0byB0aGUgY29ycmVzcG9uZGluZyBrZXkgdHlwZS5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiZGVyaXZhdGlvbl9wYXRoXCI6IFwibS80NCcvNjAnLzAnLzAvMFwiLFxuICAgICAgICogICAgIFwia2V5X3R5cGVcIjogXCJTZWNwRXRoQWRkclwiXG4gICAgICAgKiAgIH0sXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcImRlcml2YXRpb25fcGF0aFwiOiBcIm0vMTEnLzIyJy8zM1wiLFxuICAgICAgICogICAgIFwia2V5X3R5cGVcIjogXCJUYXByb290QnRjXCIsXG4gICAgICAgKiAgICAgXCJwb2xpY3lcIjogW1xuICAgICAgICogICAgICAgXCJBbGxvd1Jhd0Jsb2JTaWduaW5nXCJcbiAgICAgICAqICAgICBdXG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAga2V5X3R5cGVzX2FuZF9kZXJpdmF0aW9uX3BhdGhzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleVR5cGVBbmREZXJpdmF0aW9uUGF0aFwiXVtdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTWF0ZXJpYWwtaWQgb2YgdGhlIG1uZW1vbmljIHRvIHVzZSBmb3IgZGVyaXZhdGlvbi4gSWYgdW5zcGVjaWZpZWQsXG4gICAgICAgKiBhIG5ldyBtbmVtb25pYyBpcyBmaXJzdCBjcmVhdGVkLlxuICAgICAgICogQGV4YW1wbGUgMHg5ZjA3YmU4MmQ5MzRmY2I1ZDBmNzVkZDI0YzJkZmVhOGE4NWE0ZDBjMjg5ZDU4ODI4YjM1MzdmYWUyNGQzMmI4XG4gICAgICAgKi9cbiAgICAgIG1uZW1vbmljX2lkPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIERpZmZpZUhlbGxtYW5SZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBleHBsYWluaW5nXG4gICAgICAgKiB0aGUgb3V0Y29tZSAoaS5lLiwgcGVybWl0dGVkIHZzLiBkZW5pZWQgdnMuIE1GQSByZXF1aXJlZCkgb2YgdGhlIHNpZ24gcmVxdWVzdC5cbiAgICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBleHBsYWluPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIE1GQSBpcyByZXF1aXJlZCwgZmFpbCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIHJldHVybmluZyAyMDIgYW5kIGNyZWF0aW5nXG4gICAgICAgKiBwZW5kaW5nIE1GQSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZmFpbF9vbl9tZmE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuIFBhc3NpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBtYWtlIHJldmlld2luZ1xuICAgICAgICogb2YgcGVuZGluZyBNRkEgcmVxdWVzdHMgYW5kL29yIGhpc3RvcmljYWwga2V5IHRyYW5zYWN0aW9ucyBtb3JlIHRyYW5zcGFyZW50LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGUuZy4sIHRvIGNhcnJ5IGFkZGl0aW9uYWwgZGF0YSB0byBXZWJIb29rIHBvbGljaWVzLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzZXQgb2Ygc2VyaWFsaXplZCBlbGxpcHRpYyBjdXJ2ZSBwb2ludHMgZnJvbSB3aGljaCB0byBjb21wdXRlIHNoYXJlZCBzZWNyZXRzLlxuICAgICAgICogVGhlIHNlcmlhbGl6YXRpb24gZm9ybWF0IG9mIHRoZXNlIHBvaW50cyBkZXBlbmRzIG9uIHRoZSBrZXkgdHlwZTsgc2VlIHRoZSBDdWJlU2lnbmVyXG4gICAgICAgKiBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICAgICAgICovXG4gICAgICBwb2ludHM6IHN0cmluZ1tdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQW4gb3B0aW9uYWwgTklTVCBQLTI1NiBwdWJsaWMga2V5IChiYXNlNjQtZW5jb2RlZCBTRUMxIHdpdGggb3Igd2l0aG91dCBjb21wcmVzc2lvbikuXG4gICAgICAgKlxuICAgICAgICogSWYgcHJvdmlkZWQsIHRoZSByZXNwb25zZSB3aWxsIGJlIGVuY3J5cHRlZCB0byB0aGlzIHB1YmxpYyBrZXkgdXNpbmcgUkZDOTE4MFxuICAgICAgICogSFBLRS1ESEtFTShQLTI1NiwgSEtERi1TSEEyNTYpIHdpdGggQUVTLTI1Ni1HQ00gYXMgdGhlIHN5bW1ldHJpYyBjaXBoZXIuXG4gICAgICAgKlxuICAgICAgICogSWYgbm8gcHVibGljIGtleSBpcyBzcGVjaWZpZWQsIHRoZSByZXN1bHRzIHdpbGwgYmUgcmV0dXJuZWQgdW5lbmNyeXB0ZWQuIEluIHRoaXNcbiAgICAgICAqIGNhc2UsIHRoZSBpbnB1dCBwb2ludHMgc2hvdWxkIGJlIG1hc2tlZCB3aXRoIGEgcmFuZG9tIHNjYWxhciB0byBhdm9pZCBsZWFraW5nIHRoZVxuICAgICAgICogc2hhcmVkIHNlY3JldCBpbiB0aGUgcmVzcG9uc2U7IHRoZSByZXN1bHRzIGNhbiBiZSB1bm1hc2tlZCB2aWEgcG9pbnQgbXVsdGlwbGljYXRpb25cbiAgICAgICAqIHdpdGggdGhlIGludmVyc2Ugb2YgdGhlIG1hc2tpbmcgc2NhbGFyLlxuICAgICAgICogQGV4YW1wbGUgQWtwTFQvM2RYQXBKelhTZHVhUFE3YXB5VDBBREJ3cWt0MWVzL2FUMGlXV2ZcbiAgICAgICAqL1xuICAgICAgcHVibGljX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXN1bHQgb2YgYSBEaWZmaWUgSGVsbG1hbiBrZXkgZXhjaGFuZ2UgKi9cbiAgICBEaWZmaWVIZWxsbWFuUmVzcG9uc2U6IChcbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlc3VsdGluZyBwb2ludHMgYXMgYmFzZTY0LWVuY29kZWQgYnl0ZSBzdHJpbmdzIGluIGEga2V5LXR5cGUtLWRlcGVuZGVudCBmb3JtYXQuICovXG4gICAgICAgICAgcG9pbnRzOiBzdHJpbmdbXTtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICByZXNwb25zZV90eXBlOiBcIm1hc2tlZFwiO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gQSBjaXBoZXJ0ZXh0IGNvbnRhaW5pbmcgdGhlIHJlc3VsdGluZyBwb2ludHMuIFRoZSBlbmNsb3NlZCBwbGFpbnRleHQgaXMgYSBzZXF1ZW5jZVxuICAgICAgICAgICAqIG9mIGJhc2U2NC1lbmNvZGVkIGJ5dGUgc3RyaW5ncyBpbiBhIGtleS10eXBlLS1kZXBlbmRlbnQgZm9ybWF0LlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGVuY3J5cHRlZF9zaGFyZWRfc2VjcmV0czogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZXBoZW1lcmFsIHB1YmxpYyBrZXkgdXNlZCBmb3IgSFBLRSBrZXkgZGVyaXZhdGlvbiBpbiBiYXNlNjQtZW5jb2RlZFxuICAgICAgICAgICAqIHVuY29tcHJlc3NlZCBTRUMxIHNlcmlhbGl6YXRpb24uXG4gICAgICAgICAgICovXG4gICAgICAgICAgZXBoZW1lcmFsX3B1YmxpY19rZXk6IHN0cmluZztcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICByZXNwb25zZV90eXBlOiBcImVuY3J5cHRlZFwiO1xuICAgICAgICB9XG4gICAgKSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWN5IGV2YWx1YXRpb24gdHJlZS4gKi9cbiAgICAgIHBvbGljeV9ldmFsX3RyZWU/OiB1bmtub3duO1xuICAgIH0gJiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEEgcG9saWN5IHdoaWNoIGdvdmVybnMgd2hlbiBhbmQgd2hvIGlzIGFsbG93ZWQgdG8gdXBkYXRlIHRoZSBlbnRpdHkgdGhpcyBwb2xpY3kgaXNcbiAgICAgKiBhdHRhY2hlZCB0byAoZS5nLiwgYSByb2xlIG9yIGEga2V5KS5cbiAgICAgKlxuICAgICAqIFdoZW4gYXR0YWNoZWQgdG8gYSByb2xlLCBieSBkZWZhdWx0LCB0aGlzIHBvbGljeSBhcHBsaWVzIHRvIHJvbGUgZGVsZXRpb24gYW5kIGFsbFxuICAgICAqIHJvbGUgdXBkYXRlcyAoaW5jbHVkaW5nIGFkZGluZy9yZW1vdmluZyBrZXlzIGFuZCB1c2Vycyk7IGluIHRlcm1zIG9mIHNjb3BlcyxcbiAgICAgKiBpdCBhcHBsaWVzIHRvIGBtYW5hZ2U6cm9sZTp1cGRhdGU6KmAgYW5kIGBtYW5hZ2U6cm9sZTpkZWxldGVgLlxuICAgICAqXG4gICAgICogV2hlbiBhdHRhY2hlZCB0byBhIGtleSwgYnkgZGVmYXVsdCwgdGhpcyBwb2xpY3kgYXBwbGllcyB0byBrZXkgZGVsZXRpb24sIGFsbFxuICAgICAqIGtleSB1cGRhdGVzLCBhbmQgYWRkaW5nL3JlbW92aW5nIHRoYXQga2V5IHRvL2Zyb20gYSByb2xlOyBpbiB0ZXJtcyBvZiBzY29wZXMsXG4gICAgICogaXQgYXBwbGllcyB0byBgbWFuYWdlOmtleTp1cGRhdGU6KmAsIGBtYW5hZ2U6a2V5OmRlbGV0ZWAsIGBtYW5hZ2U6cm9sZTp1cGRhdGU6a2V5OipgLlxuICAgICAqXG4gICAgICogVGhpcyBkZWZhdWx0IGNhbiBiZSBjaGFuZ2VkIGJ5IHNldHRpbmcgdGhlIGBhcHBsaWVzX3RvX3Njb3Blc2AgcHJvcGVydHkuXG4gICAgICovXG4gICAgRWRpdFBvbGljeToge1xuICAgICAgYXBwbGllc190b19zY29wZXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNjb3BlU2V0XCJdO1xuICAgICAgbWZhPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFQb2xpY3lcIl0gfCBudWxsO1xuICAgICAgdGltZV9sb2NrX3VudGlsPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdIHwgbnVsbDtcbiAgICB9O1xuICAgIEVpcDE5MVNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBleHBsYWluaW5nXG4gICAgICAgKiB0aGUgb3V0Y29tZSAoaS5lLiwgcGVybWl0dGVkIHZzLiBkZW5pZWQgdnMuIE1GQSByZXF1aXJlZCkgb2YgdGhlIHNpZ24gcmVxdWVzdC5cbiAgICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBleHBsYWluPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIE1GQSBpcyByZXF1aXJlZCwgZmFpbCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIHJldHVybmluZyAyMDIgYW5kIGNyZWF0aW5nXG4gICAgICAgKiBwZW5kaW5nIE1GQSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZmFpbF9vbl9tZmE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuIFBhc3NpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBtYWtlIHJldmlld2luZ1xuICAgICAgICogb2YgcGVuZGluZyBNRkEgcmVxdWVzdHMgYW5kL29yIGhpc3RvcmljYWwga2V5IHRyYW5zYWN0aW9ucyBtb3JlIHRyYW5zcGFyZW50LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGUuZy4sIHRvIGNhcnJ5IGFkZGl0aW9uYWwgZGF0YSB0byBXZWJIb29rIHBvbGljaWVzLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEVJUC0xOTEgZGF0YSB0byBzaWduIGFzIGhleC1lbmNvZGVkIGJ5dGVzLlxuICAgICAgICogQGV4YW1wbGUgMHhkZWFkYmVlZjEzYzBmZmVlXG4gICAgICAgKi9cbiAgICAgIGRhdGE6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFuIG9wdGlvbmFsIHR3ZWFrIHZhbHVlIHRoYXQgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBzZWNyZXQga2V5IGJlZm9yZSBzaWduaW5nLlxuICAgICAgICogVGhpcyBmaWVsZCBtdXN0IGNvbnRhaW4gYSBiYXNlLTY0IHN0cmluZyBlbmNvZGluZyBhIHZlY3RvciBvZiBleGFjdGx5IDMyIGJ5dGVzLlxuICAgICAgICogU2VlIHRoZSBDdWJlU2lnbmVyIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIHR3ZWFraW5nIHByb2NlZHVyZS5cbiAgICAgICAqIEBleGFtcGxlIEY0MUhBeTJxNUduOGxhRjJDdU1zWmJSQVFUbUQrNE9iM1ZVTVo3VEJHSzQ9XG4gICAgICAgKi9cbiAgICAgIHR3ZWFrPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBleGFtcGxlIHtcbiAgICAgKiAgIFwiY2hhaW5faWRcIjogMTMzNyxcbiAgICAgKiAgIFwidHlwZWRfZGF0YVwiOiB7XG4gICAgICogICAgIFwiZG9tYWluXCI6IHtcbiAgICAgKiAgICAgICBcImNoYWluSWRcIjogMTMzNyxcbiAgICAgKiAgICAgICBcIm5hbWVcIjogXCJFdGhlciBNYWlsXCIsXG4gICAgICogICAgICAgXCJzYWx0XCI6IFwiMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwXCIsXG4gICAgICogICAgICAgXCJ2ZXJpZnlpbmdDb250cmFjdFwiOiBcIjB4Q2NDQ2NjY2NDQ0NDY0NDQ0NDQ2NDY0NjY0NjQ0NDY0NjY2NjY2NjQ1wiLFxuICAgICAqICAgICAgIFwidmVyc2lvblwiOiBcIjFcIlxuICAgICAqICAgICB9LFxuICAgICAqICAgICBcIm1lc3NhZ2VcIjoge1xuICAgICAqICAgICAgIFwiY29udGVudHNcIjogXCJIZWxsbywgQm9iIVwiLFxuICAgICAqICAgICAgIFwiZnJvbVwiOiB7XG4gICAgICogICAgICAgICBcIm5hbWVcIjogXCJDb3dcIixcbiAgICAgKiAgICAgICAgIFwid2FsbGV0c1wiOiBbXG4gICAgICogICAgICAgICAgIFwiMHhDRDJhM2Q5RjkzOEUxM0NEOTQ3RWMwNUFiQzdGRTczNERmOEREODI2XCIsXG4gICAgICogICAgICAgICAgIFwiMHhEZWFEYmVlZmRFQWRiZWVmZEVhZGJFRUZkZWFkYmVFRmRFYURiZWVGXCJcbiAgICAgKiAgICAgICAgIF1cbiAgICAgKiAgICAgICB9LFxuICAgICAqICAgICAgIFwidG9cIjoge1xuICAgICAqICAgICAgICAgXCJuYW1lXCI6IFwiQm9iXCIsXG4gICAgICogICAgICAgICBcIndhbGxldHNcIjogW1xuICAgICAqICAgICAgICAgICBcIjB4YkJiQkJCQmJiQkJCYmJiQmJiQmJiYmJCQmJCYmJiYkJiQmJiQkJiQlwiLFxuICAgICAqICAgICAgICAgICBcIjB4QjBCZGFCZWE1N0IwQkRBQmVBNTdiMGJkQUJFQTU3YjBCRGFiRWE1N1wiLFxuICAgICAqICAgICAgICAgICBcIjB4QjBCMGIwYjBiMGIwQjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFwiXG4gICAgICogICAgICAgICBdXG4gICAgICogICAgICAgfVxuICAgICAqICAgICB9LFxuICAgICAqICAgICBcInByaW1hcnlUeXBlXCI6IFwiTWFpbFwiLFxuICAgICAqICAgICBcInR5cGVzXCI6IHtcbiAgICAgKiAgICAgICBcIkVJUDcxMkRvbWFpblwiOiBbXG4gICAgICogICAgICAgICB7XG4gICAgICogICAgICAgICAgIFwibmFtZVwiOiBcIm5hbWVcIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgKiAgICAgICAgIH0sXG4gICAgICogICAgICAgICB7XG4gICAgICogICAgICAgICAgIFwibmFtZVwiOiBcInZlcnNpb25cIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgKiAgICAgICAgIH0sXG4gICAgICogICAgICAgICB7XG4gICAgICogICAgICAgICAgIFwibmFtZVwiOiBcImNoYWluSWRcIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwidWludDI1NlwiXG4gICAgICogICAgICAgICB9LFxuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJ2ZXJpZnlpbmdDb250cmFjdFwiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJhZGRyZXNzXCJcbiAgICAgKiAgICAgICAgIH0sXG4gICAgICogICAgICAgICB7XG4gICAgICogICAgICAgICAgIFwibmFtZVwiOiBcInNhbHRcIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwiYnl0ZXMzMlwiXG4gICAgICogICAgICAgICB9XG4gICAgICogICAgICAgXSxcbiAgICAgKiAgICAgICBcIkdyb3VwXCI6IFtcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwibmFtZVwiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAqICAgICAgICAgfSxcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwibWVtYmVyc1wiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJQZXJzb25bXVwiXG4gICAgICogICAgICAgICB9XG4gICAgICogICAgICAgXSxcbiAgICAgKiAgICAgICBcIk1haWxcIjogW1xuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJmcm9tXCIsXG4gICAgICogICAgICAgICAgIFwidHlwZVwiOiBcIlBlcnNvblwiXG4gICAgICogICAgICAgICB9LFxuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJ0b1wiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJQZXJzb25cIlxuICAgICAqICAgICAgICAgfSxcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwiY29udGVudHNcIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgKiAgICAgICAgIH1cbiAgICAgKiAgICAgICBdLFxuICAgICAqICAgICAgIFwiUGVyc29uXCI6IFtcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwibmFtZVwiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAqICAgICAgICAgfSxcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwid2FsbGV0c1wiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJhZGRyZXNzW11cIlxuICAgICAqICAgICAgICAgfVxuICAgICAqICAgICAgIF1cbiAgICAgKiAgICAgfVxuICAgICAqICAgfVxuICAgICAqIH1cbiAgICAgKi9cbiAgICBFaXA3MTJTaWduUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGJlIGluY2x1ZGVkIGluIHRoZSByZXNwb25zZSwgZXhwbGFpbmluZ1xuICAgICAgICogdGhlIG91dGNvbWUgKGkuZS4sIHBlcm1pdHRlZCB2cy4gZGVuaWVkIHZzLiBNRkEgcmVxdWlyZWQpIG9mIHRoZSBzaWduIHJlcXVlc3QuXG4gICAgICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZXhwbGFpbj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBNRkEgaXMgcmVxdWlyZWQsIGZhaWwgdGhlIHJlcXVlc3QgaW5zdGVhZCBvZiByZXR1cm5pbmcgMjAyIGFuZCBjcmVhdGluZ1xuICAgICAgICogcGVuZGluZyBNRkEgcmVxdWVzdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGZhaWxfb25fbWZhPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG1ldGFkYXRhLiBQYXNzaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYXMgbWV0YWRhdGEgY2FuIGJlIHVzZWQgdG8gbWFrZSByZXZpZXdpbmdcbiAgICAgICAqIG9mIHBlbmRpbmcgTUZBIHJlcXVlc3RzIGFuZC9vciBoaXN0b3JpY2FsIGtleSB0cmFuc2FjdGlvbnMgbW9yZSB0cmFuc3BhcmVudC4gSXQgY2FuIGFsc28gYmUgdXNlZCBlLmcuLCB0byBjYXJyeSBhZGRpdGlvbmFsIGRhdGEgdG8gV2ViSG9vayBwb2xpY2llcy5cbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgY2hhaW4taWQgdG8gd2hpY2ggdGhpcyB0eXBlZCBkYXRhIHdpbGwgYmUgc2VudFxuICAgICAgICovXG4gICAgICBjaGFpbl9pZDogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQW4gb3B0aW9uYWwgdHdlYWsgdmFsdWUgdGhhdCB3aWxsIGJlIGFwcGxpZWQgdG8gdGhlIHNlY3JldCBrZXkgYmVmb3JlIHNpZ25pbmcuXG4gICAgICAgKiBUaGlzIGZpZWxkIG11c3QgY29udGFpbiBhIGJhc2UtNjQgc3RyaW5nIGVuY29kaW5nIGEgdmVjdG9yIG9mIGV4YWN0bHkgMzIgYnl0ZXMuXG4gICAgICAgKiBTZWUgdGhlIEN1YmVTaWduZXIgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgdHdlYWtpbmcgcHJvY2VkdXJlLlxuICAgICAgICogQGV4YW1wbGUgRjQxSEF5MnE1R244bGFGMkN1TXNaYlJBUVRtRCs0T2IzVlVNWjdUQkdLND1cbiAgICAgICAqL1xuICAgICAgdHdlYWs/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgdHlwZWRfZGF0YTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUeXBlZERhdGFcIl07XG4gICAgfTtcbiAgICBFbWFpbDogc3RyaW5nO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gYW5zd2VyIHRvIHRoZSBjaGFsbGVuZ2UgcmV0dXJuZWQgYnkgdGhlIGBtZmFfZW1haWxfaW5pdGAgZW5kcG9pbnQuICovXG4gICAgRW1haWxPdHBBbnN3ZXI6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEZ1bGwgSldUIHRva2VuLCBjb25zdHJ1Y3RlZCBieSBjb25jYXRlbmF0aW5nIHRoZSBcInBhcnRpYWwgdG9rZW5cIlxuICAgICAgICogKGkuZS4sIGB7aGVhZGVyfS57cGF5bG9hZH0uYCkgcmV0dXJuZWQgYnkgdGhlIGBtYWlsX2VtYWlsX2luaXRgIGVuZHBvaW50XG4gICAgICAgKiBhbmQgdGhlIHNpZ25hdHVyZSBzZW50IHRvIHRoZSB1c2VyJ3MgZW1haWwuXG4gICAgICAgKi9cbiAgICAgIHRva2VuOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXF1ZXN0IHVzZXJzIHNlbmQgdG8gaW5pdGlhdGUgZW1haWwgT1RQICovXG4gICAgRW1haWxPdHBSZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBlbWFpbCB3aGljaCB3aWxsIHJlY2VpdmUgdGhlIE9UUCAqL1xuICAgICAgZW1haWw6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSFRUUCByZXNwb25zZSB0byBhbiBlbWFpbCBPVFAgcmVxdWVzdC5cbiAgICAgKlxuICAgICAqIFRoaXMgcmVzcG9uc2UgY29udGFpbnMgYW4gT0lEQyB0b2tlbiB3aXRob3V0IGEgc2lnbmF0dXJlLlxuICAgICAqIFRoZSBzaWduYXR1cmUgaXMgc2VudCB0byB0aGUgZW5kLXVzZXIgaW4gYW4gZW1haWwuXG4gICAgICogVGhlIHRva2VuIGNhbiBiZSByZWNvbnN0cnVjdGVkIGJ5IGNvbmNhdGVuYXRpbmcgdGhlIGBwYXJ0aWFsX3Rva2VuYCB3aXRoIHRoZSBzaWduYXR1cmUuXG4gICAgICovXG4gICAgRW1haWxPdHBSZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIE9JREMgdG9rZW4gd2l0aG91dCB0aGUgc2lnbmF0dXJlLlxuICAgICAgICogKFRoZSBzaWduYXR1cmUsIHdoaWNoIGlzIGFjdHVhbGx5IGEgTUFDLCBpcyBzZW50IHRvIHRoZSBlbmQtdXNlciBpbiBhbiBlbWFpbClcbiAgICAgICAqL1xuICAgICAgcGFydGlhbF90b2tlbjogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBEZXNjcmliZXMgZW1haWwgcHJlZmVyZW5jZXMgYXQgYW4gT3JnIGxldmVsIC0gd2hhdCBlbWFpbHMgdG8gc2VuZCBhbmQgb3B0aW9ucyBhc3NvY2lhdGVkICovXG4gICAgRW1haWxQcmVmZXJlbmNlczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPcmdBbGVydHNQcmVmc1wiXSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSWYgdHJ1ZSwgc2VuZCBub3RpZmljYXRpb25zIG9uIGV2ZXJ5IGxvZ2luICovXG4gICAgICBsb2dpbl9ub3RpZmljYXRpb25zPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiB0cnVlLCBzZW5kIG5vdGlmaWNhdGlvbnMgd2hlbiBsb2dnaW5nIGluIGZyb20gYSBuZXcgZGV2aWNlLlxuICAgICAgICogbmV3X2RldmljZSB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgbG9naW5fbm90aWZpY2F0aW9ucy4gRS5nLiwgZW1haWwgZm9yXG4gICAgICAgKiBuZXdfZGV2aWNlIGlzIHNlbnQgaW5zdGVhZCBvZiBhIGdlbmVyYWwgbG9naW4gbm90aWZpY2F0aW9uIGVtYWlsIHdoZW4gYVxuICAgICAgICogbmV3IGRldmljZSBpcyBkZXRlY3RlZFxuICAgICAgICovXG4gICAgICBuZXdfZGV2aWNlPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIElmIHRydWUsIHNlbmQgZW1haWwgbm90aWZpY2F0aW9ucyBmb3IgbWZhIGFwcHJvdmFscyAqL1xuICAgICAgcGVuZGluZ19hcHByb3ZhbHM/OiBib29sZWFuIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVxdWVzdCB0byByZXNldCB2ZXJpZmllZCBlbWFpbC4gKi9cbiAgICBFbWFpbFJlc2V0UmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGlzIGVtYWlsIHNob3VsZCBiZSB1c2FibGUgZm9yIGVtYWlsIE9UUCBsb2dpbi4gVGhlIHJlcXVlc3RcbiAgICAgICAqIHdpbGwgZmFpbCBpZiB0aGlzIGZpZWxkIGlzIHNldCB0byBgdHJ1ZWAsIGFuZCB0aGUgb3JnIGRvZXMgbm90IGhhdmVcbiAgICAgICAqIGVtYWlsIE9UUCBlbmFibGVkLiBEZWZhdWx0OiBgZmFsc2VgXG4gICAgICAgKi9cbiAgICAgIGFsbG93X290cF9sb2dpbj86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgZW1haWwgdG8gcmVnaXN0ZXIgKi9cbiAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlZmF1bHQgbnVsbCAqL1xuICAgIEVtcHR5OiB1bmtub3duO1xuICAgIEVtcHR5SW1wbDoge1xuICAgICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVxdWVzdCB0byBjcmVhdGUgYSBzZXQgb2YgRU9UUyBub25jZXMgZm9yIGEgc3BlY2lmaWVkIGNoYWluLWlkLCBzdGFydGluZ1xuICAgICAqIGF0IGEgc3BlY2lmaWVkIGJsb2NrIGhlaWdodC5cbiAgICAgKi9cbiAgICBFb3RzQ3JlYXRlTm9uY2VSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBleHBsYWluaW5nXG4gICAgICAgKiB0aGUgb3V0Y29tZSAoaS5lLiwgcGVybWl0dGVkIHZzLiBkZW5pZWQgdnMuIE1GQSByZXF1aXJlZCkgb2YgdGhlIHNpZ24gcmVxdWVzdC5cbiAgICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBleHBsYWluPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIE1GQSBpcyByZXF1aXJlZCwgZmFpbCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIHJldHVybmluZyAyMDIgYW5kIGNyZWF0aW5nXG4gICAgICAgKiBwZW5kaW5nIE1GQSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZmFpbF9vbl9tZmE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuIFBhc3NpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBtYWtlIHJldmlld2luZ1xuICAgICAgICogb2YgcGVuZGluZyBNRkEgcmVxdWVzdHMgYW5kL29yIGhpc3RvcmljYWwga2V5IHRyYW5zYWN0aW9ucyBtb3JlIHRyYW5zcGFyZW50LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGUuZy4sIHRvIGNhcnJ5IGFkZGl0aW9uYWwgZGF0YSB0byBXZWJIb29rIHBvbGljaWVzLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBjaGFpbiBpZCBmb3Igd2hpY2ggdGhlIG5vbmNlcyB3aWxsIGJlIHVzZWQsIGFzIGEgaGV4IHN0cmluZ1xuICAgICAgICogQGV4YW1wbGUgMHgxMTIyMzM0NFxuICAgICAgICovXG4gICAgICBjaGFpbl9pZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG51bWJlciBvZiBub25jZXMgdG8gZ2VuZXJhdGVcbiAgICAgICAqIEBleGFtcGxlIDE2XG4gICAgICAgKi9cbiAgICAgIG51bTogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0aW5nIGJsb2NrIGhlaWdodCBvZiB0aGUgZ2VuZXJhdGVkIG5vbmNlcyAocXVvdGVkIGRlY2ltYWwgdTY0KVxuICAgICAgICogQGV4YW1wbGUgMzEzMzdcbiAgICAgICAqL1xuICAgICAgc3RhcnRfaGVpZ2h0OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIGdlbmVyYXRlZCB3aGVuIGNyZWF0aW5nIEVPVFMgbm9uY2VzICovXG4gICAgRW90c0NyZWF0ZU5vbmNlUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWN5IGV2YWx1YXRpb24gdHJlZS4gKi9cbiAgICAgIHBvbGljeV9ldmFsX3RyZWU/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZ2VuZXJhdGVkIG5vbmNlcyBhcyBhbiBhcnJheSBvZiAweC1wcmVmaXhlZCBoZXggc3RyaW5nc1xuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICBcIjB4YjM5M2JmMzllNzFhMTZkNzg0ODUzZDU4MjU1YTI5NjIyMmE5OWZkM2M4N2FhN2NhMjA2YzUyMzBjMTg4ZjFjN1wiLFxuICAgICAgICogICBcIjB4ZTAxOTM2NTg0YjRmMGMwZTk3ZjBkMzAxOGM0ZjlkYjJiZjdkZTQxMzk1YzY0MDNhNDhmZDBkZmYwZWY3YjQwZFwiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIG5vbmNlczogc3RyaW5nW107XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlcXVlc3QgZm9yIGFuIEVPVFMgc2lnbmF0dXJlIG9uIGEgc3BlY2lmaWVkIG1lc3NhZ2UsIGNoYWluLWlkLCBibG9jay1oZWlnaHQgdHJpcGxlICovXG4gICAgRW90c1NpZ25SZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBleHBsYWluaW5nXG4gICAgICAgKiB0aGUgb3V0Y29tZSAoaS5lLiwgcGVybWl0dGVkIHZzLiBkZW5pZWQgdnMuIE1GQSByZXF1aXJlZCkgb2YgdGhlIHNpZ24gcmVxdWVzdC5cbiAgICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBleHBsYWluPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIE1GQSBpcyByZXF1aXJlZCwgZmFpbCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIHJldHVybmluZyAyMDIgYW5kIGNyZWF0aW5nXG4gICAgICAgKiBwZW5kaW5nIE1GQSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZmFpbF9vbl9tZmE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuIFBhc3NpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBtYWtlIHJldmlld2luZ1xuICAgICAgICogb2YgcGVuZGluZyBNRkEgcmVxdWVzdHMgYW5kL29yIGhpc3RvcmljYWwga2V5IHRyYW5zYWN0aW9ucyBtb3JlIHRyYW5zcGFyZW50LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGUuZy4sIHRvIGNhcnJ5IGFkZGl0aW9uYWwgZGF0YSB0byBXZWJIb29rIHBvbGljaWVzLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBibG9jayBoZWlnaHQgZm9yIHRoZSBzaWduYXR1cmUgKHF1b3RlZCBkZWNpbWFsIHU2NClcbiAgICAgICAqIEBleGFtcGxlIDEyMzQ1NlxuICAgICAgICovXG4gICAgICBibG9ja19oZWlnaHQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBjaGFpbiBpZCBmb3IgdGhlIHNpZ25hdHVyZVxuICAgICAgICogQGV4YW1wbGUgMHgxMTIyMzM0NFxuICAgICAgICovXG4gICAgICBjaGFpbl9pZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG1lc3NhZ2UgdG8gc2lnblxuICAgICAgICogQGV4YW1wbGUgMHg1YTI2ODhmYWVhMDlkNDJiOTI3MGZkYjhkZTZmZmY2ZjE5MjI0M2E5MTBiYTY2MzI5MDczZTEyZTBkMDA0NmEyXG4gICAgICAgKi9cbiAgICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBFcG9jaCBpcyBhIHF1b3RlZCBgdWludDY0YC5cbiAgICAgKiBAZXhhbXBsZSAyNTZcbiAgICAgKi9cbiAgICBFcG9jaDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgKiBAZGVzY3JpcHRpb24gRGF0ZVRpbWUgbWVhc3VyZWQgaW4gc2Vjb25kcyBzaW5jZSB1bml4IGVwb2NoLlxuICAgICAqIEEgd3JhcHBlciB0eXBlIGZvciBzZXJpYWxpemF0aW9uIHRoYXQgZW5jb2RlcyBhIFtgU3lzdGVtVGltZWBdIGFzIGEgW2B1NjRgXVxuICAgICAqIHJlcHJlc2VudGluZyB0aGUgbnVtYmVyIG9mIHNlY29uZHMgc2luY2UgW2BTeXN0ZW1UaW1lOjpVTklYX0VQT0NIYF0uXG4gICAgICovXG4gICAgRXBvY2hEYXRlVGltZTogbnVtYmVyO1xuICAgIEVycm9yT2JqOiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDb2RlXG4gICAgICAgKi9cbiAgICAgIGNvZGU6IG51bWJlcjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgZGF0YSAqL1xuICAgICAgZGF0YT86IHVua25vd247XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE1lc3NhZ2UgKi9cbiAgICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHN0cnVjdHVyZSBvZiBFcnJvclJlc3BvbnNlIG11c3QgbWF0Y2ggdGhlIHJlc3BvbnNlIHRlbXBsYXRlIHRoYXQgQVdTIHVzZXMgKi9cbiAgICBFcnJvclJlc3BvbnNlOiB7XG4gICAgICBhY2NlcHRlZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRWYWx1ZVwiXSB8IG51bGw7XG4gICAgICBlcnJvcl9jb2RlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNpZ25lckVycm9yQ29kZVwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRXJyb3IgbWVzc2FnZSAqL1xuICAgICAgbWVzc2FnZTogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY3kgZXZhbHVhdGlvbiB0cmVlIChpbmNsdWRlZCBpbiBzaWduZXIgcmVzcG9uc2VzLCB3aGVuIHJlcXVlc3RlZCkgKi9cbiAgICAgIHBvbGljeV9ldmFsX3RyZWU/OiB1bmtub3duO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCByZXF1ZXN0IGlkZW50aWZpZXIgKi9cbiAgICAgIHJlcXVlc3RfaWQ/OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVzcGxvcmEgcmVxdWVzdCAqL1xuICAgIEVzcGxvcmFSZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEhUVFAgYm9keSAqL1xuICAgICAgYm9keT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEhUVFAgbWV0aG9kICovXG4gICAgICBtZXRob2Q6IHN0cmluZztcbiAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgbmV0d29yazogXCJtYWlubmV0XCIgfCBcInRlc3RuZXRcIiB8IFwic2lnbmV0XCI7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEhUVFAgcmVsYXRpdmUgcGF0aCAod2hpY2ggY29tZXMgYWZ0ZXIgJy97bmV0d29ya30vYXBpLycpICovXG4gICAgICBwYXRoOiBzdHJpbmc7XG4gICAgfTtcbiAgICBFc3Bsb3JhUmVzcG9uc2U6IHVua25vd247XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEVWTSB0cmFuc2FjdGlvbiBzaWduaW5nIHJlcXVlc3QuXG4gICAgICogQGV4YW1wbGUge1xuICAgICAqICAgXCJjaGFpbl9pZFwiOiA0MzExMyxcbiAgICAgKiAgIFwidHhcIjoge1xuICAgICAqICAgICBcImNoYWluX2lkXCI6IFwiMHhhODY5XCIsXG4gICAgICogICAgIFwiZ2FzXCI6IFwiMHg2MWE4MFwiLFxuICAgICAqICAgICBcIm1heEZlZVBlckdhc1wiOiBcIjB4OTUwMkY5MDBcIixcbiAgICAgKiAgICAgXCJtYXhQcmlvcml0eUZlZVBlckdhc1wiOiBcIjB4NTBcIixcbiAgICAgKiAgICAgXCJub25jZVwiOiBcIjB4YlwiLFxuICAgICAqICAgICBcInRvXCI6IFwiMHhmMDBiYTEyZjAwMDAwMDAwYjQxMjEyMDAwMDBmMDBjMGZmZWVmMDBkXCIsXG4gICAgICogICAgIFwidHlwZVwiOiBcIjB4MlwiLFxuICAgICAqICAgICBcInZhbHVlXCI6IFwiMHgxMDAwMDAwMDAwMFwiXG4gICAgICogICB9XG4gICAgICogfVxuICAgICAqL1xuICAgIEV0aDFTaWduUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGJlIGluY2x1ZGVkIGluIHRoZSByZXNwb25zZSwgZXhwbGFpbmluZ1xuICAgICAgICogdGhlIG91dGNvbWUgKGkuZS4sIHBlcm1pdHRlZCB2cy4gZGVuaWVkIHZzLiBNRkEgcmVxdWlyZWQpIG9mIHRoZSBzaWduIHJlcXVlc3QuXG4gICAgICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZXhwbGFpbj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBNRkEgaXMgcmVxdWlyZWQsIGZhaWwgdGhlIHJlcXVlc3QgaW5zdGVhZCBvZiByZXR1cm5pbmcgMjAyIGFuZCBjcmVhdGluZ1xuICAgICAgICogcGVuZGluZyBNRkEgcmVxdWVzdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGZhaWxfb25fbWZhPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG1ldGFkYXRhLiBQYXNzaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYXMgbWV0YWRhdGEgY2FuIGJlIHVzZWQgdG8gbWFrZSByZXZpZXdpbmdcbiAgICAgICAqIG9mIHBlbmRpbmcgTUZBIHJlcXVlc3RzIGFuZC9vciBoaXN0b3JpY2FsIGtleSB0cmFuc2FjdGlvbnMgbW9yZSB0cmFuc3BhcmVudC4gSXQgY2FuIGFsc28gYmUgdXNlZCBlLmcuLCB0byBjYXJyeSBhZGRpdGlvbmFsIGRhdGEgdG8gV2ViSG9vayBwb2xpY2llcy5cbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgY2hhaW4gaWQgdG8gc2V0IGluIHRoZSBnaXZlbiB0cmFuc2FjdGlvbi5cbiAgICAgICAqL1xuICAgICAgY2hhaW5faWQ6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFuIG9wdGlvbmFsIHR3ZWFrIHZhbHVlIHRoYXQgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBzZWNyZXQga2V5IGJlZm9yZSBzaWduaW5nLlxuICAgICAgICogVGhpcyBmaWVsZCBtdXN0IGNvbnRhaW4gYSBiYXNlLTY0IHN0cmluZyBlbmNvZGluZyBhIHZlY3RvciBvZiBleGFjdGx5IDMyIGJ5dGVzLlxuICAgICAgICogU2VlIHRoZSBDdWJlU2lnbmVyIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIHR3ZWFraW5nIHByb2NlZHVyZS5cbiAgICAgICAqIEBleGFtcGxlIEY0MUhBeTJxNUduOGxhRjJDdU1zWmJSQVFUbUQrNE9iM1ZVTVo3VEJHSzQ9XG4gICAgICAgKi9cbiAgICAgIHR3ZWFrPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIHR4OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRyYW5zYWN0aW9uXCJdO1xuICAgIH07XG4gICAgRXRoMVNpZ25SZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY3kgZXZhbHVhdGlvbiB0cmVlLiAqL1xuICAgICAgcG9saWN5X2V2YWxfdHJlZT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIFJMUCBlbmNvZGluZyBvZiB0aGUgdHJhbnNhY3Rpb24gYW5kIGl0cyBzaWduYXR1cmVcbiAgICAgICAqIEBleGFtcGxlIDB4MjI4OTUxMTgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMjAxZDU4NjU2YjBlMjJhYWE2OGZkYzY5MmRiNDE5NzkwOThjMzg4NmVkMzMwMTVkNzQ2N2RlOTIxMTYwOWNkYWMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzMDhiMGMyOTAwMzI0ZDNmZjlhZGZiYTdmZGZlNWFmM2Y5YjJjZGJlZWY3YjI4MDQzN2JiZjFiMWM1OWEwOTNkNjE1YWZlM2U1ZGZlZDk2MjJiNTQwY2RkOWI0OWIzYzVhZDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQ5MDExYWRiY2MzYmM5YzAzMDdiYjA3ZjM3ZGRhMWExYTljNjlkMmUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYwOTAzZGI4NTI1Njc0YjhlNzkwNGY5YjdkN2Q5ZWM1NWEwYTQyZDMzY2Y1OGJlMjU0NjliMGMyMWJiYjZkMDYxNzJiYzViYjVmZDFhZWQ4ZTRmMzU5MzY5Njg5NTgxMTZiMDYxOTU1M2MyY2IxYzUyZTczMjMwNzRjNmY4ZWIzZDVhNzA3NGZjNjU4MDE0OGRmOTA3ODM3ZmEzYjE2NGFkN2ZiYzIyODhkYWQxZThhNWIwMjEwOTViNTdjOGEzNmQ0XG4gICAgICAgKi9cbiAgICAgIHJscF9zaWduZWRfdHg6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBleGFtcGxlIHtcbiAgICAgKiAgIFwiZXRoMl9zaWduX3JlcXVlc3RcIjoge1xuICAgICAqICAgICBcImFnZ3JlZ2F0aW9uX3Nsb3RcIjoge1xuICAgICAqICAgICAgIFwic2xvdFwiOiBcIjM2XCJcbiAgICAgKiAgICAgfSxcbiAgICAgKiAgICAgXCJmb3JrX2luZm9cIjoge1xuICAgICAqICAgICAgIFwiZm9ya1wiOiB7XG4gICAgICogICAgICAgICBcImN1cnJlbnRfdmVyc2lvblwiOiBcIjB4NDI0MjQyNDJcIixcbiAgICAgKiAgICAgICAgIFwiZXBvY2hcIjogXCIwXCIsXG4gICAgICogICAgICAgICBcInByZXZpb3VzX3ZlcnNpb25cIjogXCIweDQyNDI0MjQyXCJcbiAgICAgKiAgICAgICB9LFxuICAgICAqICAgICAgIFwiZ2VuZXNpc192YWxpZGF0b3JzX3Jvb3RcIjogXCIweDlkMTNkNjEyMTJjMDY3ZTAyY2U4ZTYwOGE3MDA3ZTJjM2IwMjU3MWU5ZTZmMjdmZjQ1ZGZhOTFiZjI3Yzg3MGJcIlxuICAgICAqICAgICB9LFxuICAgICAqICAgICBcInNpZ25pbmdSb290XCI6IFwiMHg5YzU3ZTc3YzQ5NjU3Mjc1NDJiOTMzN2RmNjc1NmY5NDg0NjRiY2EzODU5YmVhNmVkM2MwZWM2NjAwZDg5ODJhXCIsXG4gICAgICogICAgIFwidHlwZVwiOiBcIkFHR1JFR0FUSU9OX1NMT1RcIlxuICAgICAqICAgfSxcbiAgICAgKiAgIFwibmV0d29ya1wiOiBcIm1haW5uZXRcIlxuICAgICAqIH1cbiAgICAgKi9cbiAgICBFdGgyU2lnblJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFJlcXVlc3QgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcmVzcG9uc2UsIGV4cGxhaW5pbmdcbiAgICAgICAqIHRoZSBvdXRjb21lIChpLmUuLCBwZXJtaXR0ZWQgdnMuIGRlbmllZCB2cy4gTUZBIHJlcXVpcmVkKSBvZiB0aGUgc2lnbiByZXF1ZXN0LlxuICAgICAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGV4cGxhaW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgTUZBIGlzIHJlcXVpcmVkLCBmYWlsIHRoZSByZXF1ZXN0IGluc3RlYWQgb2YgcmV0dXJuaW5nIDIwMiBhbmQgY3JlYXRpbmdcbiAgICAgICAqIHBlbmRpbmcgTUZBIHJlcXVlc3QuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBmYWlsX29uX21mYT86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBtZXRhZGF0YS4gUGFzc2luZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFzIG1ldGFkYXRhIGNhbiBiZSB1c2VkIHRvIG1ha2UgcmV2aWV3aW5nXG4gICAgICAgKiBvZiBwZW5kaW5nIE1GQSByZXF1ZXN0cyBhbmQvb3IgaGlzdG9yaWNhbCBrZXkgdHJhbnNhY3Rpb25zIG1vcmUgdHJhbnNwYXJlbnQuIEl0IGNhbiBhbHNvIGJlIHVzZWQgZS5nLiwgdG8gY2FycnkgYWRkaXRpb25hbCBkYXRhIHRvIFdlYkhvb2sgcG9saWNpZXMuXG4gICAgICAgKi9cbiAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gU3Vic2V0IG9mIHRoZSBXZWIzU2lnbmVyIEV0aDIgQkxTIHNpZ25pbmcgcmVxdWVzdCB3aG9zZSBzY2hlbWEgaXMgZGVmaW5lZFxuICAgICAgICogW2hlcmVdKGh0dHBzOi8vY29uc2Vuc3lzLmdpdGh1Yi5pby93ZWIzc2lnbmVyL3dlYjNzaWduZXItZXRoMi5odG1sI3RhZy9TaWduaW5nL29wZXJhdGlvbi9FVEgyX1NJR04pLlxuICAgICAgICogV2UgaGFuZGxlIGRlcG9zaXRzIGFuZCB2b2x1bnRhcnkgZXhpdHMgc2VwYXJhdGVseS5cbiAgICAgICAqL1xuICAgICAgZXRoMl9zaWduX3JlcXVlc3Q6IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICAgIG5ldHdvcms6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTmV0d29ya1wiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXByZXNlbnRhdGlvbiBvZiBhbiBldmVudC4gVGhpcyB0eXBlIGlzIHVzZWQgdG8gc2VyaWFsaXplIGV2ZW50cyB0byBDbG91ZFdhdGNoIExvZ3MgYW5kIHRvXG4gICAgICogZGVzZXJpYWxpemUgdGhlbSB3aGVuIGFuYWx5emluZyB0aGUgbG9ncy5cbiAgICAgKi9cbiAgICBFdmVudDoge1xuICAgICAgZXZlbnQ6IFwiRXZlbnRcIjtcbiAgICB9ICYgT21pdDxjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkV2ZW50RGF0YVwiXSwgXCJldmVudFwiPiAmIHtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBVbmlxdWUgaWRlbnRpZmllciBvZiBhbiBldmVudC4gKi9cbiAgICAgICAgZXZlbnRfaWQ/OiBzdHJpbmc7XG4gICAgICAgIG9yZzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXTtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgb3JpZ2luIGhlYWRlciBvZiB0aGUgcmVxdWVzdCB0aGF0IHRyaWdnZXJlZCB0aGlzIGV2ZW50ICovXG4gICAgICAgIG9yaWdpbj86IHN0cmluZztcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIHJlcXVlc3QgdGhhdCB0cmlnZ2VyZWQgdGhpcyBldmVudCAqL1xuICAgICAgICByZXF1ZXN0X2lkPzogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHRpbWVzdGFtcCBvZiB0aGUgZXZlbnQgKGluIG1pbGxpc2Vjb25kcyBzaW5jZSB0aGUgVW5peCBFcG9jaClcbiAgICAgICAgICovXG4gICAgICAgIHV0Y190aW1lc3RhbXA6IG51bWJlcjtcbiAgICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIERhdGEgYXNzb2NpYXRlZCB3aXRoIGFuIGV2ZW50LiBEZXBlbmRpbmcgb24gdGhlIGV2ZW50IHR5cGUgKGkuZS4sIGJpbGxpbmcgb3Igb3JnIGV2ZW50KSxcbiAgICAgKiBkaWZmZXJlbnQgZmllbGRzIGFyZSB1c2VkLlxuICAgICAqL1xuICAgIEV2ZW50RGF0YTpcbiAgICAgIHwgKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmlsbGluZ0FyZ3NcIl0gJiB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgZXZlbnQ6IFwiY3ViaXN0OjpiaWxsaW5nXCI7XG4gICAgICAgIH0pXG4gICAgICB8IChjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9yZ0V2ZW50QXJnc1wiXSAmIHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBldmVudDogXCJjdWJpc3Q6Om9yZ19ldmVudFwiO1xuICAgICAgICB9KTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEFuIEVWTSBhZGRyZXNzIGFuZCBpdHMgY2hhaW4uICovXG4gICAgRXZtQWRkcmVzc0luZm86IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBFVk0gYWRkcmVzcy5cbiAgICAgICAqIEBleGFtcGxlIDB4NTJmNmMwYjMwNmU2Njg5M2MwNDE0YWJiNzA5NTFjNGRhYzE1YTk2OVxuICAgICAgICovXG4gICAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgRVZNIGNoYWluIHRoaXMgYWRkcmVzcyBiZWxvbmdzIHRvICoqYXMgYSBoZXggc3RyaW5nKiouIFRoZSBzdHJpbmdcbiAgICAgICAqIG11c3Qgc3RhcnQgd2l0aCBcIjB4XCIgYW5kIGhhdmUgYW4gZXZlbiBsZW5ndGguIElmIHRoZSBjaGFpbiBpcyBvbWl0dGVkLFxuICAgICAgICogdGhlIGFkZHJlc3MgaXMgYWxsb3dlZCB0byBiZSB1c2VkIG9uIGFueSBFVk0gY2hhaW4sIGFuZCBpcyByZWZlcnJlZCB0b1xuICAgICAgICogYXMgYSBnbG9iYWwgRVZNIGFkZHJlc3MuXG4gICAgICAgKiBAZXhhbXBsZSAweDAxXG4gICAgICAgKi9cbiAgICAgIGNoYWluPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gYWJvdXQgYSBjdXJyZW5jeSB1c2VkIG9uIGFuIEVWTSBjaGFpbi4gKi9cbiAgICBFdm1DdXJyZW5jeUluZm86IHtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdGhpcyBjdXJyZW5jeSB1c2VzLlxuICAgICAgICogQGV4YW1wbGUgMThcbiAgICAgICAqL1xuICAgICAgZGVjaW1hbHM6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBmdWxsIG5hbWUgb2YgdGhlIGN1cnJlbmN5LlxuICAgICAgICogQGV4YW1wbGUgRXRoZXJcbiAgICAgICAqL1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN5bWJvbCBmb3IgdGhlIGN1cnJlbmN5LCB0eXBpY2FsbHkgYSB0aHJlZSBsZXR0ZXIgc3RyaW5nLlxuICAgICAgICogQGV4YW1wbGUgRVRIXG4gICAgICAgKi9cbiAgICAgIHN5bWJvbDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIGN1c3RvbSBFVk0gY2hhaW4uICovXG4gICAgRXZtQ3VzdG9tQ2hhaW46IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBjaGFpbiBpZC4gRW5mb3JjZWQgdG8gYmUgdW5pcXVlIGFtb25nIGFsbCBjdXN0b20gRVZNIGNoYWlucyBpbiB0aGUgb3JnYW5pemF0aW9uLiBJdCBtdXN0IGJlIGEgaGV4IHN0cmluZyAoc3RhcnRpbmcgd2l0aCBcIjB4XCIpIHdpdGggZXZlbiBsZW5ndGguXG4gICAgICAgKiBAZXhhbXBsZSAweDAxXG4gICAgICAgKi9cbiAgICAgIGNoYWluX2lkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmFtZSBvZiB0aGUgY2hhaW4uXG4gICAgICAgKiBAZXhhbXBsZSBFdGhlcmV1bSBNYWlubmV0XG4gICAgICAgKi9cbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgIG5hdGl2ZV9jdXJyZW5jeTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFdm1DdXJyZW5jeUluZm9cIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgVVJMIG9mIHRoZSBSUEMgcHJvdmlkZXIgZm9yIHRoaXMgY2hhaW4uXG4gICAgICAgKiBAZXhhbXBsZSBodHRwczovL2V0aGVyZXVtLXJwYy5wdWJsaWNub2RlLmNvbVxuICAgICAgICovXG4gICAgICBycGNfdXJsOiBzdHJpbmc7XG4gICAgfTtcbiAgICBFdm1UeENtcDoge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVG8gcHJldmVudCByZXBsYXkgYXR0YWNrcywgYW55IGdpdmVuIE1GQSByZWNlaXB0IGlzIG5vcm1hbGx5IGFsbG93ZWQgdG8gYmUgdXNlZCBvbmx5IG9uY2UuXG4gICAgICAgKlxuICAgICAgICogSW4gdGhpcyBjYXNlLCBob3dldmVyLCBiZWNhdXNlIEVWTSB0cmFuc2FjdGlvbnMgYWxyZWFkeSBoYXZlIGEgcmVwbGF5IHByZXZlbnRpb24gbWVjaGFuaXNtXG4gICAgICAgKiAobmFtZWx5IHRoZSAnbm9uY2UnIHByb3BlcnR5KSwgd2UgYWxsb3cgdGhlIHVzZXIgdG8gc3BlY2lmeSBhIGdyYWNlIHBlcmlvZCAoaW4gc2Vjb25kcykgdG9cbiAgICAgICAqIGluZGljYXRlIGhvdyBsb25nIGFuIE1GQSByZWNlaXB0IHNob3VsZCByZW1haW4gdmFsaWQgYWZ0ZXIgaXRzIGZpcnN0IHVzZS5cbiAgICAgICAqXG4gICAgICAgKiBOb3RlIHRoYXQgd2UgYWxsb3cgYm90aCAnZ3JhY2UnIGFuZCAnaWdub3JlX25vbmNlJyB0byBiZSBzZXQgYmVjYXVzZSBvbmNlIGFuIE1GQSByZXF1ZXN0XG4gICAgICAgKiBlbnRlcnMgaXRzIGdyYWNlIHBlcmlvZCB3ZSB1bmNvbmRpdGlvbmFsbHkgc2V0IGl0cyAnaWdub3JlX25vbmNlJyBwcm9wZXJ0eSB0byAnZmFsc2UnIHRvXG4gICAgICAgKiBlbnN1cmUgdGhhdCBhbnkgc3Vic2VxdWVudCByZXF1ZXN0cyB0aGF0IGNsYWltIHRoZSBzYW1lIHJlY2VpcHQgbXVzdCBzaWduIGZvciB0aGUgc2FtZVxuICAgICAgICogbm9uY2UgYXMgdGhlIHJlcXVlc3Qgd2Ugc2lnbmVkIG9yaWdpbmFsbHkgd2l0aCB0aGF0IHJlY2VpcHQuXG4gICAgICAgKlxuICAgICAgICogQWxzbyBub3RlIHRoYXQgdGhlIGdyYWNlIHBlcmlvZCBjYW5ub3QgZXh0ZW5kIHRoZSBsaWZldGltZSBvZiBhbiBNRkEgcmVxdWVzdCBiZXlvbmQgaXRzXG4gICAgICAgKiBvcmlnaW5hbCBleHBpcmF0aW9uIGRhdGUuXG4gICAgICAgKlxuICAgICAgICogVGhlIGdyYWNlIHBlcmlvZCBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gMzAgZGF5cy5cbiAgICAgICAqL1xuICAgICAgZ3JhY2U/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRoZSAnZ2FzJyBwcm9wZXJ0eSBvZiB0aGUgRVZNIHRyYW5zYWN0aW9uIGlzIGFsbG93ZWQgdG8gYmUgZGlmZmVyZW50LiAqL1xuICAgICAgaWdub3JlX2dhcz86IGJvb2xlYW47XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlICdub25jZScgcHJvcGVydHkgb2YgdGhlIEVWTSB0cmFuc2FjdGlvbiBpcyBhbGxvd2VkIHRvIGJlIGRpZmZlcmVudC4gKi9cbiAgICAgIGlnbm9yZV9ub25jZT86IGJvb2xlYW47XG4gICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBFdm1UeERlcG9zaXRFcnJvckNvZGU6XG4gICAgICB8IFwiRXZtVHhEZXBvc2l0UmVjZWl2ZXJNaXNtYXRjaFwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0RW1wdHlEYXRhXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRFbXB0eUNoYWluSWRcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdEVtcHR5UmVjZWl2ZXJcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdFVuZXhwZWN0ZWRWYWx1ZVwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0VW5leHBlY3RlZERhdGFMZW5ndGhcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdE5vQWJpXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXROb0RlcG9zaXRGdW5jdGlvblwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0VW5leHBlY3RlZEZ1bmN0aW9uTmFtZVwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0VW5leHBlY3RlZFZhbGlkYXRvcktleVwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0SW52YWxpZFZhbGlkYXRvcktleVwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0TWlzc2luZ0RlcG9zaXRBcmdcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdFdyb25nRGVwb3NpdEFyZ1R5cGVcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdFZhbGlkYXRvcktleU5vdEluUm9sZVwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0VW5leHBlY3RlZFdpdGhkcmF3YWxDcmVkZW50aWFsc1wiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0VW5yZXNvbHZlZFJvbGVcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdEludmFsaWREZXBvc2l0RW5jb2RpbmdcIjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHNvdXJjZSBvZiBhIHBvbGljeSBleGVjdXRpb24sIGkuZS4gdGhlIHJlYXNvbiBpdCB3YXMgZXhlY3V0ZWQuXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBFeGVjdXRpb25Tb3VyY2U6IFwiU2lnblJlcXVlc3RcIiB8IFwiVXNlckludm9jYXRpb25cIjtcbiAgICAvKipcbiAgICAgKiBFeHBsaWNpdFNjb3BlXG4gICAgICogQGRlc2NyaXB0aW9uIEV4cGxpY2l0bHkgbmFtZWQgc2NvcGVzIGZvciBhY2Nlc3NpbmcgQ3ViZVNpZ25lciBBUElzXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBFeHBsaWNpdFNjb3BlOlxuICAgICAgfCBcInNpZ246KlwiXG4gICAgICB8IFwic2lnbjphdmFcIlxuICAgICAgfCBcInNpZ246YmxvYlwiXG4gICAgICB8IFwic2lnbjpkaWZmaWVIZWxsbWFuXCJcbiAgICAgIHwgXCJzaWduOmJ0YzoqXCJcbiAgICAgIHwgXCJzaWduOmJ0YzpzZWd3aXRcIlxuICAgICAgfCBcInNpZ246YnRjOnRhcHJvb3RcIlxuICAgICAgfCBcInNpZ246YnRjOnBzYnQ6KlwiXG4gICAgICB8IFwic2lnbjpidGM6cHNidDpkb2dlXCJcbiAgICAgIHwgXCJzaWduOmJ0Yzpwc2J0OmxlZ2FjeVwiXG4gICAgICB8IFwic2lnbjpidGM6cHNidDpzZWd3aXRcIlxuICAgICAgfCBcInNpZ246YnRjOnBzYnQ6dGFwcm9vdFwiXG4gICAgICB8IFwic2lnbjpidGM6cHNidDpsdGNTZWd3aXRcIlxuICAgICAgfCBcInNpZ246YnRjOm1lc3NhZ2U6KlwiXG4gICAgICB8IFwic2lnbjpidGM6bWVzc2FnZTpzZWd3aXRcIlxuICAgICAgfCBcInNpZ246YnRjOm1lc3NhZ2U6bGVnYWN5XCJcbiAgICAgIHwgXCJzaWduOmJhYnlsb246KlwiXG4gICAgICB8IFwic2lnbjpiYWJ5bG9uOmVvdHM6KlwiXG4gICAgICB8IFwic2lnbjpiYWJ5bG9uOmVvdHM6bm9uY2VzXCJcbiAgICAgIHwgXCJzaWduOmJhYnlsb246ZW90czpzaWduXCJcbiAgICAgIHwgXCJzaWduOmJhYnlsb246c3Rha2luZzoqXCJcbiAgICAgIHwgXCJzaWduOmJhYnlsb246c3Rha2luZzpkZXBvc2l0XCJcbiAgICAgIHwgXCJzaWduOmJhYnlsb246c3Rha2luZzp1bmJvbmRcIlxuICAgICAgfCBcInNpZ246YmFieWxvbjpzdGFraW5nOndpdGhkcmF3XCJcbiAgICAgIHwgXCJzaWduOmJhYnlsb246c3Rha2luZzpzbGFzaFwiXG4gICAgICB8IFwic2lnbjpiYWJ5bG9uOnJlZ2lzdHJhdGlvblwiXG4gICAgICB8IFwic2lnbjpiYWJ5bG9uOmNvdmVuYW50XCJcbiAgICAgIHwgXCJzaWduOmV2bToqXCJcbiAgICAgIHwgXCJzaWduOmV2bTp0eFwiXG4gICAgICB8IFwic2lnbjpldm06ZWlwMTkxXCJcbiAgICAgIHwgXCJzaWduOmV2bTplaXA3MTJcIlxuICAgICAgfCBcInNpZ246ZXRoMjoqXCJcbiAgICAgIHwgXCJzaWduOmV0aDI6dmFsaWRhdGVcIlxuICAgICAgfCBcInNpZ246ZXRoMjpzdGFrZVwiXG4gICAgICB8IFwic2lnbjpldGgyOnVuc3Rha2VcIlxuICAgICAgfCBcInNpZ246c29sYW5hXCJcbiAgICAgIHwgXCJzaWduOnN1aVwiXG4gICAgICB8IFwic2lnbjp0ZW5kZXJtaW50XCJcbiAgICAgIHwgXCJzaWduOm1taVwiXG4gICAgICB8IFwibWFuYWdlOipcIlxuICAgICAgfCBcIm1hbmFnZTpyZWFkb25seVwiXG4gICAgICB8IFwibWFuYWdlOmVtYWlsXCJcbiAgICAgIHwgXCJtYW5hZ2U6bWZhOipcIlxuICAgICAgfCBcIm1hbmFnZTptZmE6cmVhZG9ubHlcIlxuICAgICAgfCBcIm1hbmFnZTptZmE6bGlzdFwiXG4gICAgICB8IFwibWFuYWdlOm1mYTp2b3RlOipcIlxuICAgICAgfCBcIm1hbmFnZTptZmE6dm90ZTpjc1wiXG4gICAgICB8IFwibWFuYWdlOm1mYTp2b3RlOmVtYWlsXCJcbiAgICAgIHwgXCJtYW5hZ2U6bWZhOnZvdGU6Zmlkb1wiXG4gICAgICB8IFwibWFuYWdlOm1mYTp2b3RlOnRvdHBcIlxuICAgICAgfCBcIm1hbmFnZTptZmE6cmVnaXN0ZXI6KlwiXG4gICAgICB8IFwibWFuYWdlOm1mYTpyZWdpc3RlcjpmaWRvXCJcbiAgICAgIHwgXCJtYW5hZ2U6bWZhOnJlZ2lzdGVyOnRvdHBcIlxuICAgICAgfCBcIm1hbmFnZTptZmE6cmVnaXN0ZXI6ZW1haWxcIlxuICAgICAgfCBcIm1hbmFnZTptZmE6dW5yZWdpc3RlcjoqXCJcbiAgICAgIHwgXCJtYW5hZ2U6bWZhOnVucmVnaXN0ZXI6Zmlkb1wiXG4gICAgICB8IFwibWFuYWdlOm1mYTp1bnJlZ2lzdGVyOnRvdHBcIlxuICAgICAgfCBcIm1hbmFnZTptZmE6dmVyaWZ5OipcIlxuICAgICAgfCBcIm1hbmFnZTptZmE6dmVyaWZ5OnRvdHBcIlxuICAgICAgfCBcIm1hbmFnZTprZXk6KlwiXG4gICAgICB8IFwibWFuYWdlOmtleTpyZWFkb25seVwiXG4gICAgICB8IFwibWFuYWdlOmtleTpnZXRcIlxuICAgICAgfCBcIm1hbmFnZTprZXk6YXR0ZXN0XCJcbiAgICAgIHwgXCJtYW5hZ2U6a2V5Omxpc3RSb2xlc1wiXG4gICAgICB8IFwibWFuYWdlOmtleTpsaXN0XCJcbiAgICAgIHwgXCJtYW5hZ2U6a2V5Omhpc3Rvcnk6dHg6bGlzdFwiXG4gICAgICB8IFwibWFuYWdlOmtleTpjcmVhdGVcIlxuICAgICAgfCBcIm1hbmFnZTprZXk6aW1wb3J0XCJcbiAgICAgIHwgXCJtYW5hZ2U6a2V5OnVwZGF0ZToqXCJcbiAgICAgIHwgXCJtYW5hZ2U6a2V5OnVwZGF0ZTpvd25lclwiXG4gICAgICB8IFwibWFuYWdlOmtleTp1cGRhdGU6cG9saWN5XCJcbiAgICAgIHwgXCJtYW5hZ2U6a2V5OnVwZGF0ZTplbmFibGVkXCJcbiAgICAgIHwgXCJtYW5hZ2U6a2V5OnVwZGF0ZTptZXRhZGF0YVwiXG4gICAgICB8IFwibWFuYWdlOmtleTp1cGRhdGU6ZWRpdFBvbGljeVwiXG4gICAgICB8IFwibWFuYWdlOmtleTpkZWxldGVcIlxuICAgICAgfCBcIm1hbmFnZTpwb2xpY3k6KlwiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTpyZWFkb25seVwiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTpjcmVhdGVcIlxuICAgICAgfCBcIm1hbmFnZTpwb2xpY3k6Z2V0XCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5Omxpc3RcIlxuICAgICAgfCBcIm1hbmFnZTpwb2xpY3k6ZGVsZXRlXCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5OnVwZGF0ZToqXCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5OnVwZGF0ZTpvd25lclwiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTp1cGRhdGU6bmFtZVwiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTp1cGRhdGU6YWNsXCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5OnVwZGF0ZTplZGl0UG9saWN5XCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5OnVwZGF0ZTptZXRhZGF0YVwiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTp1cGRhdGU6cnVsZVwiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTppbnZva2VcIlxuICAgICAgfCBcIm1hbmFnZTpwb2xpY3k6d2FzbToqXCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5Ondhc206dXBsb2FkXCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5OnNlY3JldHM6KlwiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTpzZWNyZXRzOmdldFwiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTpzZWNyZXRzOnVwZGF0ZToqXCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5OnNlY3JldHM6dXBkYXRlOnZhbHVlc1wiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTpzZWNyZXRzOnVwZGF0ZTphY2xcIlxuICAgICAgfCBcIm1hbmFnZTpwb2xpY3k6c2VjcmV0czp1cGRhdGU6ZWRpdFBvbGljeVwiXG4gICAgICB8IFwibWFuYWdlOmNvbnRhY3Q6KlwiXG4gICAgICB8IFwibWFuYWdlOmNvbnRhY3Q6cmVhZG9ubHlcIlxuICAgICAgfCBcIm1hbmFnZTpjb250YWN0OmNyZWF0ZVwiXG4gICAgICB8IFwibWFuYWdlOmNvbnRhY3Q6Z2V0XCJcbiAgICAgIHwgXCJtYW5hZ2U6Y29udGFjdDpsaXN0XCJcbiAgICAgIHwgXCJtYW5hZ2U6Y29udGFjdDpkZWxldGVcIlxuICAgICAgfCBcIm1hbmFnZTpjb250YWN0OnVwZGF0ZToqXCJcbiAgICAgIHwgXCJtYW5hZ2U6Y29udGFjdDp1cGRhdGU6bmFtZVwiXG4gICAgICB8IFwibWFuYWdlOmNvbnRhY3Q6dXBkYXRlOmFkZHJlc3Nlc1wiXG4gICAgICB8IFwibWFuYWdlOmNvbnRhY3Q6dXBkYXRlOm93bmVyXCJcbiAgICAgIHwgXCJtYW5hZ2U6Y29udGFjdDp1cGRhdGU6bGFiZWxzXCJcbiAgICAgIHwgXCJtYW5hZ2U6Y29udGFjdDp1cGRhdGU6bWV0YWRhdGFcIlxuICAgICAgfCBcIm1hbmFnZTpjb250YWN0OnVwZGF0ZTplZGl0UG9saWN5XCJcbiAgICAgIHwgXCJtYW5hZ2U6Y29udGFjdDpsb29rdXA6KlwiXG4gICAgICB8IFwibWFuYWdlOmNvbnRhY3Q6bG9va3VwOmFkZHJlc3NcIlxuICAgICAgfCBcIm1hbmFnZTpwb2xpY3k6Y3JlYXRlSW1wb3J0S2V5XCJcbiAgICAgIHwgXCJtYW5hZ2U6cm9sZToqXCJcbiAgICAgIHwgXCJtYW5hZ2U6cm9sZTpyZWFkb25seVwiXG4gICAgICB8IFwibWFuYWdlOnJvbGU6Y3JlYXRlXCJcbiAgICAgIHwgXCJtYW5hZ2U6cm9sZTpkZWxldGVcIlxuICAgICAgfCBcIm1hbmFnZTpyb2xlOmdldDoqXCJcbiAgICAgIHwgXCJtYW5hZ2U6cm9sZTpnZXQ6a2V5c1wiXG4gICAgICB8IFwibWFuYWdlOnJvbGU6Z2V0OmtleXM6bGlzdFwiXG4gICAgICB8IFwibWFuYWdlOnJvbGU6Z2V0OmtleXM6Z2V0XCJcbiAgICAgIHwgXCJtYW5hZ2U6cm9sZTpnZXQ6dXNlcnNcIlxuICAgICAgfCBcIm1hbmFnZTpyb2xlOmxpc3RcIlxuICAgICAgfCBcIm1hbmFnZTpyb2xlOnVwZGF0ZToqXCJcbiAgICAgIHwgXCJtYW5hZ2U6cm9sZTp1cGRhdGU6ZW5hYmxlZFwiXG4gICAgICB8IFwibWFuYWdlOnJvbGU6dXBkYXRlOnBvbGljeVwiXG4gICAgICB8IFwibWFuYWdlOnJvbGU6dXBkYXRlOmVkaXRQb2xpY3lcIlxuICAgICAgfCBcIm1hbmFnZTpyb2xlOnVwZGF0ZTprZXk6KlwiXG4gICAgICB8IFwibWFuYWdlOnJvbGU6dXBkYXRlOmtleTphZGRcIlxuICAgICAgfCBcIm1hbmFnZTpyb2xlOnVwZGF0ZTprZXk6cmVtb3ZlXCJcbiAgICAgIHwgXCJtYW5hZ2U6cm9sZTp1cGRhdGU6dXNlcjoqXCJcbiAgICAgIHwgXCJtYW5hZ2U6cm9sZTp1cGRhdGU6dXNlcjphZGRcIlxuICAgICAgfCBcIm1hbmFnZTpyb2xlOnVwZGF0ZTp1c2VyOnJlbW92ZVwiXG4gICAgICB8IFwibWFuYWdlOnJvbGU6aGlzdG9yeTp0eDpsaXN0XCJcbiAgICAgIHwgXCJtYW5hZ2U6aWRlbnRpdHk6KlwiXG4gICAgICB8IFwibWFuYWdlOmlkZW50aXR5OnJlYWRvbmx5XCJcbiAgICAgIHwgXCJtYW5hZ2U6aWRlbnRpdHk6dmVyaWZ5XCJcbiAgICAgIHwgXCJtYW5hZ2U6aWRlbnRpdHk6YWRkXCJcbiAgICAgIHwgXCJtYW5hZ2U6aWRlbnRpdHk6cmVtb3ZlXCJcbiAgICAgIHwgXCJtYW5hZ2U6aWRlbnRpdHk6bGlzdFwiXG4gICAgICB8IFwibWFuYWdlOm9yZzoqXCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOmNyZWF0ZVwiXG4gICAgICB8IFwibWFuYWdlOm9yZzptZXRyaWNzOnF1ZXJ5XCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOmF1ZGl0OnF1ZXJ5XCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOnJlYWRvbmx5XCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOmFkZFVzZXJcIlxuICAgICAgfCBcIm1hbmFnZTpvcmc6aW52aXRlVXNlclwiXG4gICAgICB8IFwibWFuYWdlOm9yZzppbnZpdGVBbGllblwiXG4gICAgICB8IFwibWFuYWdlOm9yZzp1cGRhdGVNZW1iZXJzaGlwXCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOmxpc3RVc2Vyc1wiXG4gICAgICB8IFwibWFuYWdlOm9yZzp1c2VyOmdldFwiXG4gICAgICB8IFwibWFuYWdlOm9yZzpkZWxldGVVc2VyXCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOmdldFwiXG4gICAgICB8IFwibWFuYWdlOm9yZzp1c2VyOnJlc2V0TWZhXCJcbiAgICAgIHwgXCJtYW5hZ2U6c2Vzc2lvbjoqXCJcbiAgICAgIHwgXCJtYW5hZ2U6c2Vzc2lvbjpyZWFkb25seVwiXG4gICAgICB8IFwibWFuYWdlOnNlc3Npb246Z2V0XCJcbiAgICAgIHwgXCJtYW5hZ2U6c2Vzc2lvbjpsaXN0XCJcbiAgICAgIHwgXCJtYW5hZ2U6c2Vzc2lvbjpjcmVhdGVcIlxuICAgICAgfCBcIm1hbmFnZTpzZXNzaW9uOmV4dGVuZFwiXG4gICAgICB8IFwibWFuYWdlOnNlc3Npb246cmV2b2tlXCJcbiAgICAgIHwgXCJtYW5hZ2U6ZXhwb3J0OipcIlxuICAgICAgfCBcIm1hbmFnZTpleHBvcnQ6cmVhZG9ubHlcIlxuICAgICAgfCBcIm1hbmFnZTpleHBvcnQ6b3JnOipcIlxuICAgICAgfCBcIm1hbmFnZTpleHBvcnQ6b3JnOmdldFwiXG4gICAgICB8IFwibWFuYWdlOmV4cG9ydDp1c2VyOipcIlxuICAgICAgfCBcIm1hbmFnZTpleHBvcnQ6dXNlcjpkZWxldGVcIlxuICAgICAgfCBcIm1hbmFnZTpleHBvcnQ6dXNlcjpsaXN0XCJcbiAgICAgIHwgXCJtYW5hZ2U6YXV0aE1pZ3JhdGlvbjoqXCJcbiAgICAgIHwgXCJtYW5hZ2U6YXV0aE1pZ3JhdGlvbjppZGVudGl0eTphZGRcIlxuICAgICAgfCBcIm1hbmFnZTphdXRoTWlncmF0aW9uOmlkZW50aXR5OnJlbW92ZVwiXG4gICAgICB8IFwibWFuYWdlOmF1dGhNaWdyYXRpb246dXNlcjp1cGRhdGVcIlxuICAgICAgfCBcIm1hbmFnZTptbWk6KlwiXG4gICAgICB8IFwibWFuYWdlOm1taTpyZWFkb25seVwiXG4gICAgICB8IFwibWFuYWdlOm1taTpnZXRcIlxuICAgICAgfCBcIm1hbmFnZTptbWk6bGlzdFwiXG4gICAgICB8IFwibWFuYWdlOm1taTpyZWplY3RcIlxuICAgICAgfCBcIm1hbmFnZTptbWk6ZGVsZXRlXCJcbiAgICAgIHwgXCJleHBvcnQ6KlwiXG4gICAgICB8IFwiZXhwb3J0OnVzZXI6KlwiXG4gICAgICB8IFwiZXhwb3J0OnVzZXI6aW5pdFwiXG4gICAgICB8IFwiZXhwb3J0OnVzZXI6Y29tcGxldGVcIlxuICAgICAgfCBcIm1taToqXCJcbiAgICAgIHwgXCJvcmdBY2Nlc3M6KlwiXG4gICAgICB8IFwib3JnQWNjZXNzOmNoaWxkOipcIjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyB0eXBlIHNwZWNpZmllcyB0aGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlIGBmZWVgIGZpZWxkIGluIEJhYnlsb25cbiAgICAgKiBzdGFraW5nIHJlcXVlc3RzLiBJZiBgc2F0c2AsIHRoZSBmaWVsZCBpcyBpbnRwcmV0ZWQgYXMgYSBmaXhlZCB2YWx1ZVxuICAgICAqIGluIHNhdHMuIElmIGBzYXRzX3ByX3ZiYCwgdGhlIGZpZWxkIGlzIGludGVycHJldGVkIGFzIGEgcmF0ZSBhbmQgdGhlXG4gICAgICogZmVlIGlzIGNvbXB1dGVkIGJ5IGVzdGltYXRpbmcgdGhlIHdlaWdodCBvZiB0aGUgb3V0cHV0IHRyYW5zYWN0aW9uLlxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgRmVlVHlwZTogXCJzYXRzXCIgfCBcInNhdHNfcGVyX2t3dVwiIHwgXCJzYXRzX3Blcl92YlwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gU2VudCBmcm9tIHRoZSBjbGllbnQgdG8gdGhlIHNlcnZlciB0byBhbnN3ZXIgYSBmaWRvIGNoYWxsZW5nZSAqL1xuICAgIEZpZG9Bc3NlcnRBbnN3ZXI6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBjaGFsbGVuZ2UgdGhhdCB3YXMgcmV0dXJuZWQgZnJvbSB0aGUgUE9TVCBlbmRwb2ludCAqL1xuICAgICAgY2hhbGxlbmdlX2lkOiBzdHJpbmc7XG4gICAgICBjcmVkZW50aWFsOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxcIl07XG4gICAgfTtcbiAgICBGaWRvQXNzZXJ0Q2hhbGxlbmdlOiAoY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDaGFsbGVuZ2VQaWVjZXNcIl0gJiB7XG4gICAgICBvcHRpb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uc1wiXTtcbiAgICB9KSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBjaGFsbGVuZ2UuIE11c3QgYmUgc3VwcGxpZWQgd2hlbiBhbnN3ZXJpbmcgdGhlIGNoYWxsZW5nZS4gKi9cbiAgICAgIGNoYWxsZW5nZV9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBTZW50IGZyb20gdGhlIGNsaWVudCB0byB0aGUgc2VydmVyIHRvIGFuc3dlciBhIGZpZG8gY2hhbGxlbmdlICovXG4gICAgRmlkb0NyZWF0ZUNoYWxsZW5nZUFuc3dlcjoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIGNoYWxsZW5nZSB0aGF0IHdhcyByZXR1cm5lZCBmcm9tIHRoZSBQT1NUIGVuZHBvaW50ICovXG4gICAgICBjaGFsbGVuZ2VfaWQ6IHN0cmluZztcbiAgICAgIGNyZWRlbnRpYWw6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTZW50IGJ5IHRoZSBzZXJ2ZXIgdG8gdGhlIGNsaWVudC4gQ29udGFpbnMgdGhlIGNoYWxsZW5nZSBkYXRhIHRoYXQgbXVzdCBiZVxuICAgICAqIHVzZWQgdG8gZ2VuZXJhdGUgYSBuZXcgY3JlZGVudGlhbFxuICAgICAqL1xuICAgIEZpZG9DcmVhdGVDaGFsbGVuZ2VSZXNwb25zZTogKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2hhbGxlbmdlUGllY2VzXCJdICYge1xuICAgICAgb3B0aW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zXCJdO1xuICAgIH0pICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGNoYWxsZW5nZS4gTXVzdCBiZSBzdXBwbGllZCB3aGVuIGFuc3dlcmluZyB0aGUgY2hhbGxlbmdlLiAqL1xuICAgICAgY2hhbGxlbmdlX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIERlY2xhcmVzIGludGVudCB0byByZWdpc3RlciBhIG5ldyBGSURPIGtleSAqL1xuICAgIEZpZG9DcmVhdGVSZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhpcyBrZXkgY2FuIGJlIHVzZWQgZm9yIHBhc3N3b3JkbGVzcyBsb2dpbiAqL1xuICAgICAgZGlzY292ZXJhYmxlPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIG5ldyBmaWRvIGNyZWRlbnRpYWxcbiAgICAgICAqIEBleGFtcGxlIFdvcmsgWXViaWtleVxuICAgICAgICovXG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRvIHJlcXVlc3QgdGhlIHVuaXF1ZSBhdXRoZW50aWNhdG9yIGRldmljZSBtYW51ZmFjdHVyZXIgaWRlbnRpZmllci5cbiAgICAgICAqIFRoaXMgaW5mb3JtYXRpb24gY2FuIGJlIHVzZWQgdG8gcmVuZGVyIHRoZSBtYW51ZmFjdHVyZXIgbmFtZSAoZS5nLiwgXCJZdWJpS2V5XCIsXG4gICAgICAgKiBvciBcIkdvb2dsZSBQYXNzd29yZCBNYW5hZ2VyXCIsIG9yIFwiMVBhc3N3b3JkXCIsIGV0Yy4pLiBXaGVuIHJlcXVlc3RlZCwgc29tZSB1c2VyXG4gICAgICAgKiBhZ2VudHMgKGUuZy4sIEZpcmVmb3gpIHdpbGwgYXNrIHRoZSB1c2VyIHRvIGFncmVlIG9yIGRpc2FncmVlLCB3aGVyZWFzIHNvbWVcbiAgICAgICAqIChlLmcuLCBDaHJvbWUpIHdpbGwgc2lsZW50bHkgYWdyZWUuXG4gICAgICAgKi9cbiAgICAgIHJlcXVlc3RfZGV2aWNlX2lkZW50aWZpZXI/OiBib29sZWFuO1xuICAgIH07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgRm9yYmlkZGVuRXJyb3JDb2RlOlxuICAgICAgfCBcIkFsaWVuS2V5Q3JlYXRlXCJcbiAgICAgIHwgXCJDYW5ub3RBc3N1bWVJZGVudGl0eVwiXG4gICAgICB8IFwiU2VudHJ5RGlzYWxsb3dlZFwiXG4gICAgICB8IFwiUGFzc2tleUxvZ2luRGlzYWJsZWRcIlxuICAgICAgfCBcIlBhc3NrZXlOb3RSZWdpc3RlcmVkXCJcbiAgICAgIHwgXCJDYW5ub3RDcmVhdGVPcmdcIlxuICAgICAgfCBcIldyb25nTWZhRW1haWxPdHBKd3RcIlxuICAgICAgfCBcIk9yZ0ZsYWdOb3RTZXRcIlxuICAgICAgfCBcIkZpZG9SZXF1aXJlZFRvUmVtb3ZlVG90cFwiXG4gICAgICB8IFwiT2lkY0lkZW50aXR5TGltaXRSZWFjaGVkXCJcbiAgICAgIHwgXCJPaWRjU2NvcGVDZWlsaW5nTWlzc2luZ1wiXG4gICAgICB8IFwiT2lkY0lzc3Vlck5vdEFsbG93ZWRGb3JNZW1iZXJSb2xlXCJcbiAgICAgIHwgXCJPaWRjTm9NZW1iZXJSb2xlc0FsbG93ZWRcIlxuICAgICAgfCBcIkVtYWlsT3RwTm90Q29uZmlndXJlZFwiXG4gICAgICB8IFwiTWZhQ2hhbGxlbmdlRXhwaXJlZFwiXG4gICAgICB8IFwiQ2hhaW5JZE5vdEFsbG93ZWRcIlxuICAgICAgfCBcIkludmFsaWRPcmdcIlxuICAgICAgfCBcIk9yZ0lkTWlzbWF0Y2hcIlxuICAgICAgfCBcIlNlc3Npb25Gb3JXcm9uZ09yZ1wiXG4gICAgICB8IFwiU2VsZkRlbGV0ZVwiXG4gICAgICB8IFwiU2VsZkRpc2FibGVcIlxuICAgICAgfCBcIkludmFsaWRPcmdNZW1iZXJzaGlwUm9sZUNoYW5nZVwiXG4gICAgICB8IFwiVXNlckRpc2FibGVkXCJcbiAgICAgIHwgXCJPcmdEaXNhYmxlZFwiXG4gICAgICB8IFwiT3JnTm90Rm91bmRcIlxuICAgICAgfCBcIk9yZ1dpdGhvdXRPd25lclwiXG4gICAgICB8IFwiT3JwaGFuZWRVc2VyXCJcbiAgICAgIHwgXCJPaWRjVXNlck5vdEZvdW5kXCJcbiAgICAgIHwgXCJVc2VyTm90SW5PcmdcIlxuICAgICAgfCBcIlVzZXJOb3RPcmdPd25lclwiXG4gICAgICB8IFwiVXNlck5vdEtleU93bmVyXCJcbiAgICAgIHwgXCJJbnZhbGlkUm9sZVwiXG4gICAgICB8IFwiRGlzYWJsZWRSb2xlXCJcbiAgICAgIHwgXCJLZXlEaXNhYmxlZFwiXG4gICAgICB8IFwiS2V5Tm90SW5Sb2xlXCJcbiAgICAgIHwgXCJDb250YWN0Tm90SW5PcmdcIlxuICAgICAgfCBcIlVzZXJFeHBvcnRSZXF1ZXN0Tm90SW5PcmdcIlxuICAgICAgfCBcIlVzZXJFeHBvcnRSZXF1ZXN0SW52YWxpZFwiXG4gICAgICB8IFwiVXNlckV4cG9ydERpc2FibGVkXCJcbiAgICAgIHwgXCJVc2VyTm90T3JpZ2luYWxLZXlPd25lclwiXG4gICAgICB8IFwiVXNlck5vdEluUm9sZVwiXG4gICAgICB8IFwiTXVzdEJlRnVsbE1lbWJlclwiXG4gICAgICB8IFwiU2Vzc2lvbkV4cGlyZWRcIlxuICAgICAgfCBcIlNlc3Npb25DaGFuZ2VkXCJcbiAgICAgIHwgXCJTZXNzaW9uUmV2b2tlZFwiXG4gICAgICB8IFwiRXhwZWN0ZWRVc2VyU2Vzc2lvblwiXG4gICAgICB8IFwiU2Vzc2lvblJvbGVDaGFuZ2VkXCJcbiAgICAgIHwgXCJTY29wZWROYW1lTm90Rm91bmRcIlxuICAgICAgfCBcIlNlc3Npb25JbnZhbGlkRXBvY2hUb2tlblwiXG4gICAgICB8IFwiU2Vzc2lvbkludmFsaWRSZWZyZXNoVG9rZW5cIlxuICAgICAgfCBcIlNlc3Npb25SZWZyZXNoVG9rZW5FeHBpcmVkXCJcbiAgICAgIHwgXCJJbnZhbGlkQXV0aEhlYWRlclwiXG4gICAgICB8IFwiU2Vzc2lvbk5vdEZvdW5kXCJcbiAgICAgIHwgXCJJbnZhbGlkQXJuXCJcbiAgICAgIHwgXCJTZXNzaW9uSW52YWxpZEF1dGhUb2tlblwiXG4gICAgICB8IFwiU2Vzc2lvbkF1dGhUb2tlbkV4cGlyZWRcIlxuICAgICAgfCBcIlNlc3Npb25Qb3NzaWJseVN0b2xlblRva2VuXCJcbiAgICAgIHwgXCJNZmFEaXNhbGxvd2VkSWRlbnRpdHlcIlxuICAgICAgfCBcIk1mYURpc2FsbG93ZWRBcHByb3ZlclwiXG4gICAgICB8IFwiTWZhVHlwZU5vdEFsbG93ZWRcIlxuICAgICAgfCBcIk1mYU5vdEFwcHJvdmVkWWV0XCJcbiAgICAgIHwgXCJNZmFDb25maXJtYXRpb25Db2RlTWlzbWF0Y2hcIlxuICAgICAgfCBcIk1mYUh0dHBSZXF1ZXN0TWlzbWF0Y2hcIlxuICAgICAgfCBcIk1mYVJlbW92ZUJlbG93TWluXCJcbiAgICAgIHwgXCJNZmFPcmdSZXF1aXJlbWVudE5vdE1ldFwiXG4gICAgICB8IFwiTWZhUmVnaXN0cmF0aW9uRGlzYWxsb3dlZFwiXG4gICAgICB8IFwiVG90cEFscmVhZHlDb25maWd1cmVkXCJcbiAgICAgIHwgXCJUb3RwQ29uZmlndXJhdGlvbkNoYW5nZWRcIlxuICAgICAgfCBcIk1mYVRvdHBCYWRDb25maWd1cmF0aW9uXCJcbiAgICAgIHwgXCJNZmFUb3RwQmFkQ29kZVwiXG4gICAgICB8IFwiTWZhVG90cFJhdGVMaW1pdFwiXG4gICAgICB8IFwiSW1wcm9wZXJTZXNzaW9uU2NvcGVcIlxuICAgICAgfCBcIkZ1bGxTZXNzaW9uUmVxdWlyZWRcIlxuICAgICAgfCBcIlNlc3Npb25XaXRob3V0QW55U2NvcGVVbmRlclwiXG4gICAgICB8IFwiVXNlclJvbGVVbnByaXZpbGVnZWRcIlxuICAgICAgfCBcIk1lbWJlclJvbGVGb3JiaWRkZW5cIlxuICAgICAgfCBcIk1mYU5vdENvbmZpZ3VyZWRcIlxuICAgICAgfCBcIlJlbW92ZUxhc3RPaWRjSWRlbnRpdHlcIlxuICAgICAgfCBcIk9wZXJhdGlvbk5vdEFsbG93ZWRcIlxuICAgICAgfCBcIk9yZ0V4cG9ydFJldHJpZXZhbERpc2FibGVkXCJcbiAgICAgIHwgXCJDaGFuZ2luZ0tleUV4cG9ydFJlcXVpcmVtZW50SXNEaXNhYmxlZFwiXG4gICAgICB8IFwiQXV0b0FkZEJsc0tleVRvUHJvdGVjdGVkUm9sZVwiXG4gICAgICB8IFwiVXNlck5vdFBvbGljeU93bmVyXCJcbiAgICAgIHwgXCJVc2VyTm90Q29udGFjdE93bmVyXCJcbiAgICAgIHwgXCJMZWdhY3lTZXNzaW9uQ2Fubm90SGF2ZVNjb3BlQ2VpbGluZ1wiXG4gICAgICB8IFwiUm9sZUluUGFyZW50T3JnTm90QWxsb3dlZFwiXG4gICAgICB8IFwiUmVtb3ZlS2V5RnJvbVJvbGVVc2VyTm90QWxsb3dlZFwiXG4gICAgICB8IFwiU2l3ZUNoYWxsZW5nZUV4cGlyZWRcIlxuICAgICAgfCBcIlNpd2VNZXNzYWdlTm90VmFsaWRcIlxuICAgICAgfCBcIlNpd2VNZXNzYWdlSW52YWxpZFNpZ25hdHVyZVwiXG4gICAgICB8IFwiQWNsXCI7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFNwZWNpZmllcyBhIGZvcmsgb2YgdGhlIGBCZWFjb25DaGFpbmAsIHRvIHByZXZlbnQgcmVwbGF5IGF0dGFja3MuXG4gICAgICogVGhlIHNjaGVtYSBvZiBgRm9ya2AgaXMgZGVmaW5lZCBpbiB0aGUgW0JlYWNvbiBjaGFpblxuICAgICAqIHNwZWNdKGh0dHBzOi8vZ2l0aHViLmNvbS9ldGhlcmV1bS9jb25zZW5zdXMtc3BlY3MvYmxvYi92MS4wLjEvc3BlY3MvcGhhc2UwL2JlYWNvbi1jaGFpbi5tZCNmb3JrKS5cbiAgICAgKiBAZXhhbXBsZSB7XG4gICAgICogICBcImN1cnJlbnRfdmVyc2lvblwiOiBcIjB4MDAwMDEwMjBcIixcbiAgICAgKiAgIFwiZXBvY2hcIjogXCIwXCIsXG4gICAgICogICBcInByZXZpb3VzX3ZlcnNpb25cIjogXCIweDAwMDAxMDIwXCJcbiAgICAgKiB9XG4gICAgICovXG4gICAgRm9yazoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ3VycmVudCBmb3JrIHZlcnNpb24uXG4gICAgICAgKiBAZXhhbXBsZSAweDQzNDM0MzQzXG4gICAgICAgKi9cbiAgICAgIGN1cnJlbnRfdmVyc2lvbjogc3RyaW5nO1xuICAgICAgZXBvY2g6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBQcmV2aW91cyBmb3JrIHZlcnNpb24uXG4gICAgICAgKiBAZXhhbXBsZSAweDQyNDI0MjQyXG4gICAgICAgKi9cbiAgICAgIHByZXZpb3VzX3ZlcnNpb246IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBHZW5lc2lzIGRhdGEgYXMgZGVmaW5lZCBpbiB0aGUgW0JlYWNvbiBBUElcbiAgICAgKiBzcGVjXShodHRwczovL2V0aGVyZXVtLmdpdGh1Yi5pby9iZWFjb24tQVBJcy8jL0JlYWNvbi9nZXRHZW5lc2lzKS5cbiAgICAgKiBZb3UgY2FuIGdldCB0aGUgZ2VuZXNpcyBkYXRhIGZyb20gdGhlIEJlYWNvbiBub2RlJ3MgYC9ldGgvdjEvYmVhY29uL2dlbmVzaXNgIGVuZC1wb2ludC5cbiAgICAgKiBUaGlzIHN0cnVjdCBkZWZpbml0aW9uIGlzIG9yaWdpbmFsbHkgZnJvbSBsaWdodGhvdXNlJ3MgZXRoMi5cbiAgICAgKi9cbiAgICBHZW5lc2lzRGF0YToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gR2VuZXNpcyBmb3JrIHZlcnNpb24uXG4gICAgICAgKiBAZXhhbXBsZSAweDQyNDI0MjQyXG4gICAgICAgKi9cbiAgICAgIGdlbmVzaXNfZm9ya192ZXJzaW9uOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBHZW5lc2lzIHRpbWVcbiAgICAgICAqIEBleGFtcGxlIDE2NzkzMjY0NDlcbiAgICAgICAqL1xuICAgICAgZ2VuZXNpc190aW1lOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBHZW5lc2lzIHZhbGlkYXRvcnMgcm9vdC5cbiAgICAgICAqIEBleGFtcGxlIDB4MjcwZDQzZTc0Y2UzNDBkZTRiY2EyYjE5MzZiZWNhMGY0ZjU0MDhkOWU3OGFlYzQ4NTA5MjBiYWY2NTlkNWI2OVxuICAgICAgICovXG4gICAgICBnZW5lc2lzX3ZhbGlkYXRvcnNfcm9vdDogc3RyaW5nO1xuICAgIH07XG4gICAgR2V0S2V5c0luT3JnUmVxdWVzdDoge1xuICAgICAga2V5X3R5cGU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleVR5cGVcIl0gfCBudWxsO1xuICAgIH07XG4gICAgR2V0VXNlckJ5RW1haWxSZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVHlwaWNhbGx5LCB0aGlzIGFycmF5IGlzIGVpdGhlciBlbXB0eSAoaWYgbm8gdXNlciB3aXRoIGEgZ2l2ZW4gZW1haWwgd2FzIGZvdW5kKVxuICAgICAgICogb3IgY29udGFpbnMgYSBzaW5nbGUgZWxlbWVudCwgaS5lLiwgdGhlIHVzZXIgd2l0aCBhIGdpdmVuIGVtYWlsLlxuICAgICAgICovXG4gICAgICB1c2VyczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VySW5PcmdJbmZvV2l0aElkZW50aXR5XCJdW107XG4gICAgfTtcbiAgICBHZXRVc2VyQnlPaWRjUmVzcG9uc2U6IHtcbiAgICAgIHVzZXI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJJbk9yZ0luZm9XaXRoSWRlbnRpdHlcIl0gfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBTdGF0cyBwZXJ0YWluaW5nIHRoZSB0aGUgc2VuZGVyIGBjdWJlM3NpZ25lcmAgaW5zdGFuY2UgKi9cbiAgICBIZWFydGJlYXRSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBOdW1iZXIgb2YgcmVxdWVzdHMgY3VycmVudGx5IGFjdGl2ZSAocmVjZWl2ZWQgYnV0IG5vdCBuZWNlc3NhcmlseSBiZWluZyBwcm9jZXNzZWQgeWV0KVxuICAgICAgICovXG4gICAgICBjdXJyZW50X251bV9yZXF1ZXN0c19hY3RpdmU6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE51bWJlciBvZiByZXF1ZXN0cyBjdXJyZW50bHkgYmVpbmcgcHJvY2Vzc2VkIGJ5IGN1YmUzc2lnbmVyXG4gICAgICAgKi9cbiAgICAgIGN1cnJlbnRfbnVtX3JlcXVlc3RzX3Byb2Nlc3Npbmc6IG51bWJlcjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRG8gbm90IHJlY29yZCBtZXRyaWMgZGF0YSBmcm9tIHRoaXMgaGVhcnRiZWF0ICovXG4gICAgICBpZ25vcmU/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gTnVtYmVyIG9mIG5ldyByZXF1ZXN0cyBkdXJpbmcgdGhpcyBoZWFydGJlYXQgcGVyaW9kXG4gICAgICAgKi9cbiAgICAgIG51bV9yZXF1ZXN0czogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gTnVtYmVyIG9mIHJlcXVlc3RzIHRoYXQgZmFpbGVkIGR1cmluZyB0aGlzIGhlYXJ0YmVhdCBwZXJpb2RcbiAgICAgICAqL1xuICAgICAgbnVtX3JlcXVlc3RzX2ZhaWxlZDogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gTnVtYmVyIG9mIHJlcXVlc3RzIHdlcmUgcmV0cmllZCBkdXJpbmcgdGhpcyBoZWFydGJlYXQgcGVyaW9kXG4gICAgICAgKi9cbiAgICAgIG51bV9yZXF1ZXN0c19yZXRyaWVkOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBOdW1iZXIgb2YgcmV0cmllcyBkdXJpbmcgdGhpcyBoZWFydGJlYXQgcGVyaW9kXG4gICAgICAgKi9cbiAgICAgIG51bV9yZXRyaWVzOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBOdW1iZXIgb2YgdGltZXMgYXV0aCB0b2tlbiB3YXMgcmVmcmVzaGVkIGR1cmluZyB0aGlzIGhlYXJ0YmVhdCBwZXJpb2RcbiAgICAgICAqL1xuICAgICAgbnVtX3Rva2VuX3JlZnJlc2hlcz86IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE51bWJlciBvZiB0aW1lcyBhdXRoIHRva2VuIHJlZnJlc2ggZmFpbGVkIGR1cmluZyB0aGlzIGhlYXJ0YmVhdCBwZXJpb2RcbiAgICAgICAqL1xuICAgICAgbnVtX3Rva2VuX3JlZnJlc2hlc19mYWlsZWQ/OiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBWZXJzaW9uIG9mIHRoZSBwcm94eSBzZW5kaW5nIHRoZSBoZWFydCBiZWF0IHJlcXVlc3RcbiAgICAgICAqXG4gICAgICAgKiBUT0RPOiBNYWtlIG5vbi1vcHRpb25hbCBvbmNlIHdlIGRvIG5vdCBzdXBwb3J0IHByb3hpZXMgd2l0aG91dCB2ZXJzaW9uIGluZm9ybWF0aW9uXG4gICAgICAgKi9cbiAgICAgIHByb3h5X3ZlcnNpb24/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGdvdmVybmluZyB3aGV0aGVyIGFuZCBob3cgdG8gc2F2ZSBoaXN0b3JpY2FsIGRhdGEuICovXG4gICAgSGlzdG9yaWNhbERhdGFDb25maWd1cmF0aW9uOiB7XG4gICAgICB0eDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJIaXN0b3JpY2FsVHhDb25maWd1cmF0aW9uXCJdO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHJlY2VudGx5IHNpZ25lZCB0cmFuc2FjdGlvbiB0aGF0IHdlIHN0b3JlIGluIHRoZSBEQi4gKi9cbiAgICBIaXN0b3JpY2FsVHg6IHtcbiAgICAgIGRhdGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgIGV4cF9lcG9jaDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgaGlzdG9yaWNhbF90eF9vcmdfaWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICBrZXlfaWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICBtZmFfc3RhdHVzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTdGF0dXNcIl0gfCBudWxsO1xuICAgICAgb3BlcmF0aW9uOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9wZXJhdGlvbktpbmRcIl07XG4gICAgICByZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkh0dHBSZXF1ZXN0XCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcmlnaW5hbCByZXF1ZXN0IGlkICovXG4gICAgICByZXF1ZXN0X2lkPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3BlcmF0aW9uLXNwZWNpZmljIHJlc3VsdCAqL1xuICAgICAgcmVzdWx0OiB1bmtub3duO1xuICAgICAgcm9sZV9pZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl0gfCBudWxsO1xuICAgICAgdXNlcl9pZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl0gfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGdvdmVybmluZyB3aGV0aGVyIGFuZCBob3cgdG8gc2F2ZSBoaXN0b3JpY2FsIHRyYW5zYWN0aW9ucy4gKi9cbiAgICBIaXN0b3JpY2FsVHhDb25maWd1cmF0aW9uOiB7XG4gICAgICBsaWZldGltZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kc1wiXSB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlcXVlc3QuXG4gICAgICpcbiAgICAgKiBDYXB0dXJlcyBhbGwgdGhlIHJlbGV2YW50IGluZm8gKGluY2x1ZGluZyB0aGUgcmVxdWVzdCBib2R5KSBhYm91dCByZXF1ZXN0cyB0aGF0IHJlcXVpcmUgTUZBLlxuICAgICAqIFdlIHVzZSB0aGlzIHRvIHZlcmlmeSB0aGF0IHdoZW4gYSByZXF1ZXN0IGlzIHJlc3VtZWQgKGFmdGVyIG9idGFpbmluZyBuZWNlc3NhcnkgTUZBIGFwcHJvdmFscylcbiAgICAgKiBpdCBpcyBleGFjdGx5IHRoZSBzYW1lIGFzIGl0IG9yaWdpbmFsbHkgd2FzLlxuICAgICAqL1xuICAgIEh0dHBSZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEhUVFAgcmVxdWVzdCBib2R5ICovXG4gICAgICBib2R5PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBIVFRQIG1ldGhvZCBvZiB0aGUgcmVxdWVzdCAqL1xuICAgICAgbWV0aG9kOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEhUVFAgcGF0aCBvZiB0aGUgcmVxdWVzdCwgZXhjbHVkaW5nIHRoZSBob3N0ICovXG4gICAgICBwYXRoOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEhvdyB0byBjb21wYXJlIEhUVFAgcmVxdWVzdHMgd2hlbiB2ZXJpZnlpbmcgTUZBIHJlY2VpcHQgKHNlZSBbTWZhUmVxdWVzdDo6dmVyaWZ5X3JlcXVlc3RdKSAqL1xuICAgIEh0dHBSZXF1ZXN0Q21wOiBPbmVPZjxcbiAgICAgIFtcbiAgICAgICAgXCJFcVwiLFxuICAgICAgICB7XG4gICAgICAgICAgRXZtVHg6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXZtVHhDbXBcIl07XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBTb2xhbmFUeDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTb2xhbmFUeENtcFwiXTtcbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICA+O1xuICAgIElkOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIGFib3V0IGEgbGlua2VkIE9JREMgaWRlbnRpdHkgaW5jbHVkaW5nIHVuaXF1ZSBpZGVudGlmaWVycyBhbmQgdXNlciBpbmZvXG4gICAgICogKGUuZy4sIGVtYWlsKVxuICAgICAqL1xuICAgIElkZW50aXR5SW5mbzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPaWRjSWRlbnRpdHlcIl0gJlxuICAgICAgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPaWRjVXNlckluZm9cIl0gJlxuICAgICAgUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBQcm9vZiB0aGF0IGFuIGVuZC11c2VyIHByb3ZpZGVkIEN1YmVTaWduZXIgd2l0aCBhIHZhbGlkIGF1dGggdG9rZW5cbiAgICAgKiAoZWl0aGVyIGFuIE9JREMgdG9rZW4gb3IgYSBDdWJlU2lnbmVyIHNlc3Npb24gdG9rZW4pXG4gICAgICovXG4gICAgSWRlbnRpdHlQcm9vZjoge1xuICAgICAgYXVkPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBdWRcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGVtYWlsIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXNlclxuICAgICAgICogQGV4YW1wbGUgdXNlckBlbWFpbC5jb21cbiAgICAgICAqL1xuICAgICAgZW1haWw/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgZXhwX2Vwb2NoOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICBpZGVudGl0eT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT2lkY0lkZW50aXR5XCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1c2VybmFtZSAoaWYgYW55KSBhc3NvY2lhdGVkIHdpdGggdGhlIHVzZXJcbiAgICAgICAqIEBleGFtcGxlIGN1YmlzdGRldlxuICAgICAgICovXG4gICAgICBwcmVmZXJyZWRfdXNlcm5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgdXNlcl9pbmZvPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDdWJlU2lnbmVyVXNlckluZm9cIl0gfCBudWxsO1xuICAgIH0gJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFuIG9wYXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcHJvb2YgKi9cbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIElEUCBjb25maWd1cmF0aW9uICovXG4gICAgSWRwQ29uZmlnOiB7XG4gICAgICB0aHJvdHRsZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVGhyb3R0bGVDb25maWdcIl0gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBFbmFibGUgZm9yIGNlcnRhaW4gdXNlciByb2xlcyAqL1xuICAgICAgdXNlcnM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1lbWJlclJvbGVcIl1bXSB8IG51bGw7XG4gICAgfTtcbiAgICBJbXBvcnRLZXlSZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUltcG9ydEtleVwiXSAmXG4gICAgICBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNyZWF0ZUFuZFVwZGF0ZUtleVByb3BlcnRpZXNcIl0gJiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gV2hlbiBmYWxzZSAodGhlIGRlZmF1bHQpLCBub3RoaW5nIGlzIHJldHVybmVkIHdoZW4gYW4gaW1wb3J0ZWQga2V5IGFscmVhZHlcbiAgICAgICAgICogZXhpc3RzLiBXaGVuIHRydWUsIHJldHVybnMgdGhlIEtleUluZm8gc3RydWN0IGZvciBrZXlzIHRoYXQgYWxyZWFkeSBleGlzdFxuICAgICAgICAgKiBpZiBjYWxsZXIgaXMgYWxsb3dlZCB0byBsaXN0IHRoYXQga2V5LlxuICAgICAgICAgKi9cbiAgICAgICAgaWRlbXBvdGVudD86IGJvb2xlYW47XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQSBzZXQgb2YgZW5jcnlwdGVkIGtleXMgdG8gYmUgaW1wb3J0ZWQgKi9cbiAgICAgICAga2V5X21hdGVyaWFsOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkltcG9ydEtleVJlcXVlc3RNYXRlcmlhbFwiXVtdO1xuICAgICAgICBrZXlfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlUeXBlXCJdO1xuICAgICAgfTtcbiAgICBJbXBvcnRLZXlSZXF1ZXN0TWF0ZXJpYWw6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBjbGllbnQncyBlcGhlbWVyYWwgcHVibGljIGtleSB1c2VkIHRvIGRlcml2ZSBhIHNoYXJlZCBrZXkuXG4gICAgICAgKiBUaGlzIGlzIGEgYmFzZTY0LWVuY29kZWQsIFNFQzEtZW5jb2RlZCBQMzg0IHB1YmxpYyBrZXkuXG4gICAgICAgKi9cbiAgICAgIGNsaWVudF9wdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZW5jcnlwdGVkIGtleWluZyBtYXRlcmlhbCB0byBiZSBpbXBvcnRlZC5cbiAgICAgICAqIFRoaXMgaXMgYSBiYXNlNjQtZW5jb2RlZCBjaXBoZXJ0ZXh0LlxuICAgICAgICovXG4gICAgICBpa21fZW5jOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIHNhbHQgdmFsdWUgdXNlZCB0byBkZXJpdmUgYSBzaGFyZWQga2V5LlxuICAgICAgICogVGhpcyBpcyBhIGJhc2U2NC1lbmNvZGVkIGJ5dGUgc3RyaW5nLlxuICAgICAgICovXG4gICAgICBzYWx0OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBJbnRlcm5hbEVycm9yQ29kZTpcbiAgICAgIHwgXCJOb01hdGVyaWFsSWRcIlxuICAgICAgfCBcIkludmFsaWRBdWRpdExvZ0VudHJ5XCJcbiAgICAgIHwgXCJVbmV4cGVjdGVkQ2hlY2tlclJ1bGVcIlxuICAgICAgfCBcIlVucmVzb2x2ZWRQb2xpY3lSZWZlcmVuY2VcIlxuICAgICAgfCBcIlVuZXhwZWN0ZWRBY2xBY3Rpb25cIlxuICAgICAgfCBcIkZpZG9LZXlBc3NvY2lhdGVkV2l0aE11bHRpcGxlVXNlcnNcIlxuICAgICAgfCBcIkNsYWltc1BhcnNlRXJyb3JcIlxuICAgICAgfCBcIkludmFsaWRUaHJvdHRsZUlkXCJcbiAgICAgIHwgXCJJbnZhbGlkRW1haWxBZGRyZXNzXCJcbiAgICAgIHwgXCJFbWFpbFRlbXBsYXRlUmVuZGVyXCJcbiAgICAgIHwgXCJPaWRjSWRlbnRpdHlIZWFkZXJNaXNzaW5nXCJcbiAgICAgIHwgXCJPaWRjSWRlbnRpdHlQYXJzZUVycm9yXCJcbiAgICAgIHwgXCJTeXN0ZW1UaW1lRXJyb3JcIlxuICAgICAgfCBcIlBhc3N3b3JkSGFzaFBhcnNlRXJyb3JcIlxuICAgICAgfCBcIlNlbmRNYWlsRXJyb3JcIlxuICAgICAgfCBcIlJlcXdlc3RFcnJvclwiXG4gICAgICB8IFwiRW1haWxDb25zdHJ1Y3Rpb25FcnJvclwiXG4gICAgICB8IFwiVHNXcml0ZUVycm9yXCJcbiAgICAgIHwgXCJUc1F1ZXJ5RXJyb3JcIlxuICAgICAgfCBcIkRiUXVlcnlFcnJvclwiXG4gICAgICB8IFwiRGJHZXRFcnJvclwiXG4gICAgICB8IFwiRGJEZWxldGVFcnJvclwiXG4gICAgICB8IFwiRGJQdXRFcnJvclwiXG4gICAgICB8IFwiRGJVcGRhdGVFcnJvclwiXG4gICAgICB8IFwiU2VyZGVFcnJvclwiXG4gICAgICB8IFwiVGVzdEFuZFNldEVycm9yXCJcbiAgICAgIHwgXCJEYkdldEl0ZW1zRXJyb3JcIlxuICAgICAgfCBcIkRiV3JpdGVFcnJvclwiXG4gICAgICB8IFwiQ3ViaXN0U2lnbmVyRXJyb3JcIlxuICAgICAgfCBcIkN3TGlzdE1ldHJpY3NFcnJvclwiXG4gICAgICB8IFwiQ3dQdXRNZXRyaWNEYXRhRXJyb3JcIlxuICAgICAgfCBcIkdldEF3c1NlY3JldEVycm9yXCJcbiAgICAgIHwgXCJTZWNyZXROb3RGb3VuZFwiXG4gICAgICB8IFwiS21zR2VuZXJhdGVSYW5kb21FcnJvclwiXG4gICAgICB8IFwiTWFsZm9ybWVkVG90cEJ5dGVzXCJcbiAgICAgIHwgXCJLbXNHZW5lcmF0ZVJhbmRvbU5vUmVzcG9uc2VFcnJvclwiXG4gICAgICB8IFwiQ3JlYXRlS2V5RXJyb3JcIlxuICAgICAgfCBcIlBhcnNlRGVyaXZhdGlvblBhdGhFcnJvclwiXG4gICAgICB8IFwiU3BsaXRTaWduZXJFcnJvclwiXG4gICAgICB8IFwiQ3JlYXRlSW1wb3J0S2V5RXJyb3JcIlxuICAgICAgfCBcIkNyZWF0ZUVvdHNOb25jZXNFcnJvclwiXG4gICAgICB8IFwiRW90c1NpZ25FcnJvclwiXG4gICAgICB8IFwiQmFieWxvbkNvdlNpZ25FcnJvclwiXG4gICAgICB8IFwiQ29nbml0b0RlbGV0ZVVzZXJFcnJvclwiXG4gICAgICB8IFwiQ29nbml0b0xpc3RVc2Vyc0Vycm9yXCJcbiAgICAgIHwgXCJDb2duaXRvR2V0VXNlckVycm9yXCJcbiAgICAgIHwgXCJNaXNzaW5nVXNlckVtYWlsXCJcbiAgICAgIHwgXCJDb2duaXRvUmVzZW5kVXNlckludml0YXRpb25cIlxuICAgICAgfCBcIkNvZ25pdG9TZXRVc2VyUGFzc3dvcmRFcnJvclwiXG4gICAgICB8IFwiR2VuZXJpY0ludGVybmFsRXJyb3JcIlxuICAgICAgfCBcIkFzc3VtZVJvbGVXaXRob3V0RXZpZGVuY2VcIlxuICAgICAgfCBcIk9pZGNBdXRoV2l0aG91dE9yZ1wiXG4gICAgICB8IFwiTWlzc2luZ0tleU1ldGFkYXRhXCJcbiAgICAgIHwgXCJLbXNFbmFibGVLZXlFcnJvclwiXG4gICAgICB8IFwiS21zRGlzYWJsZUtleUVycm9yXCJcbiAgICAgIHwgXCJMYW1iZGFJbnZva2VFcnJvclwiXG4gICAgICB8IFwiTGFtYmRhTm9SZXNwb25zZUVycm9yXCJcbiAgICAgIHwgXCJMYW1iZGFGYWlsdXJlXCJcbiAgICAgIHwgXCJMYW1iZGFVbnBhcnNhYmxlUmVzcG9uc2VcIlxuICAgICAgfCBcIlNlcmlhbGl6ZUVuY3J5cHRlZEV4cG9ydEtleUVycm9yXCJcbiAgICAgIHwgXCJEZXNlcmlhbGl6ZUVuY3J5cHRlZEV4cG9ydEtleUVycm9yXCJcbiAgICAgIHwgXCJSZUVuY3J5cHRVc2VyRXhwb3J0XCJcbiAgICAgIHwgXCJTM1VwbG9hZEVycm9yXCJcbiAgICAgIHwgXCJTM0Rvd25sb2FkRXJyb3JcIlxuICAgICAgfCBcIlMzQ29weUVycm9yXCJcbiAgICAgIHwgXCJTM0xpc3RPYmplY3RzRXJyb3JcIlxuICAgICAgfCBcIlMzRGVsZXRlT2JqZWN0c0Vycm9yXCJcbiAgICAgIHwgXCJTM0J1aWxkRXJyb3JcIlxuICAgICAgfCBcIlMzUHJlc2lnbmVkVXJsRXJyb3JcIlxuICAgICAgfCBcIk1hbmFnZWRTdGF0ZU1pc3NpbmdcIlxuICAgICAgfCBcIkludGVybmFsSGVhZGVyTWlzc2luZ1wiXG4gICAgICB8IFwiSW52YWxpZEludGVybmFsSGVhZGVyVmFsdWVcIlxuICAgICAgfCBcIlJlcXVlc3RMb2NhbFN0YXRlQWxyZWFkeVNldFwiXG4gICAgICB8IFwiT2lkY09yZ01pc21hdGNoXCJcbiAgICAgIHwgXCJPaWRjSXNzdWVySW52YWxpZEp3a1wiXG4gICAgICB8IFwiSW52YWxpZFBrRm9yTWF0ZXJpYWxJZFwiXG4gICAgICB8IFwiU2Vnd2l0VHdlYWtGYWlsZWRcIlxuICAgICAgfCBcIlVuY2hlY2tlZE9yZ1wiXG4gICAgICB8IFwiU2Vzc2lvbk9yZ0lkTWlzc2luZ1wiXG4gICAgICB8IFwiQXZhU2lnbkNyZWRzTWlzc2luZ1wiXG4gICAgICB8IFwiQXZhU2lnblNpZ25hdHVyZU1pc3NpbmdcIlxuICAgICAgfCBcIkV4cGVjdGVkUm9sZVNlc3Npb25cIlxuICAgICAgfCBcIkludmFsaWRUaGlyZFBhcnR5SWRlbnRpdHlcIlxuICAgICAgfCBcIkNvZ25pdG9HZXRVc2VyXCJcbiAgICAgIHwgXCJTbnNTdWJzY3JpYmVFcnJvclwiXG4gICAgICB8IFwiU25zVW5zdWJzY3JpYmVFcnJvclwiXG4gICAgICB8IFwiU25zR2V0U3Vic2NyaXB0aW9uQXR0cmlidXRlc0Vycm9yXCJcbiAgICAgIHwgXCJTbnNTdWJzY3JpcHRpb25BdHRyaWJ1dGVzTWlzc2luZ1wiXG4gICAgICB8IFwiU25zU2V0U3Vic2NyaXB0aW9uQXR0cmlidXRlc0Vycm9yXCJcbiAgICAgIHwgXCJTbnNQdWJsaXNoQmF0Y2hFcnJvclwiXG4gICAgICB8IFwiSW5jb25zaXN0ZW50TXVsdGlWYWx1ZVRlc3RBbmRTZXRcIlxuICAgICAgfCBcIk1hdGVyaWFsSWRFcnJvclwiXG4gICAgICB8IFwiSW52YWxpZEJ0Y0FkZHJlc3NcIlxuICAgICAgfCBcIkhpc3RvcmljYWxUeEJvZHlNaXNzaW5nXCJcbiAgICAgIHwgXCJJbnZhbGlkT3BlcmF0aW9uXCJcbiAgICAgIHwgXCJQYXJlbnRPcmdOb3RGb3VuZFwiXG4gICAgICB8IFwiT3JnUGFyZW50TG9vcFwiXG4gICAgICB8IFwiUmVzb2x2ZWRQYXJlbnRPcmdXaXRoTm9TY29wZUNlaWxpbmdcIlxuICAgICAgfCBcIkludmFsaWRVcGxvYWRPYmplY3RJZFwiXG4gICAgICB8IFwiUG9saWN5RW5naW5lTm90Rm91bmRcIlxuICAgICAgfCBcIlBvbGljeUVuZ2luZUVycm9yXCJcbiAgICAgIHwgXCJQb2xpY3lTZWNyZXRzRW5jcnlwdGlvbkVycm9yXCJcbiAgICAgIHwgXCJDcmVhdGVQb2xpY3lJbXBvcnRLZXlFcnJvclwiXG4gICAgICB8IFwiSW52YWxpZEFsaWFzXCJcbiAgICAgIHwgXCJFbXB0eVVwZGF0ZU1vZGlmaWVkT2JqZWN0XCJcbiAgICAgIHwgXCJFbXB0eVVwZGF0ZU1vZGlmaWVkQWN0aW9uc1wiXG4gICAgICB8IFwiRGJDb250YWN0QWRkcmVzc2VzSW52YWxpZFwiO1xuICAgIEludml0YXRpb25BY2NlcHRSZXF1ZXN0OiB7XG4gICAgICBhdXRoOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF1dGhTb3VyY2VcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEludml0YXRpb24gdG9rZW4gKi9cbiAgICAgIHRva2VuOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5kaWNhdGVzIHRoZSBhdXRoIHNvdXJjZXMgYWxsb3dlZCB0byBhbiBpbnZpdGVkIHVzZXJcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIEludml0ZUtpbmQ6IFwiQ29nbml0b1wiIHwgXCJJZHBBbmRTc29cIiB8IFwiU3NvXCI7XG4gICAgSW52aXRlUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHVzZXIncyBlbWFpbCBhZGRyZXNzXG4gICAgICAgKiBAZXhhbXBsZSBhbGljZUBhY21lLmNvbVxuICAgICAgICovXG4gICAgICBlbWFpbDogc3RyaW5nO1xuICAgICAgaW52aXRlX2tpbmQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkludml0ZUtpbmRcIl0gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBsb2dpbiBNRkEgcG9saWN5ICovXG4gICAgICBtZmFfcG9saWN5PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHVzZXIncyBmdWxsIG5hbWVcbiAgICAgICAqIEBleGFtcGxlIEFsaWNlIFdvbmRlcmxhbmRcbiAgICAgICAqL1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgcm9sZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyUm9sZVwiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBTa2lwIHNlbmRpbmcgYW4gaW52aXRhdGlvbiBlbWFpbCB0byB0aGlzIHVzZXIgaWYgdHJ1ZS5cbiAgICAgICAqXG4gICAgICAgKiBOT1RFOiB0aGlzIGZpZWxkIGlzIGZvciBpbnRlcm5hbCB0ZXN0aW5nIHVzZSBPTkxZLiBJZiB5b3UgZG8gbm90XG4gICAgICAgKiBzZW5kIGFuIGludml0YXRpb24gZW1haWwgKGFuZCB0aGUgaW52aXRlIGtpbmQgaXMgbm90IFNTTyksIHRoZSB1c2VyIHdpbGwgbmV2ZXIgYmUgYWJsZSB0byBsb2cgaW4uXG4gICAgICAgKiBAZXhhbXBsZSBmYWxzZVxuICAgICAgICovXG4gICAgICBza2lwX2VtYWlsPzogYm9vbGVhbjtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSByZXF1ZXN0IGNvbnRhaW5pbmcgdGhlIGRhdGEgdGhhdCBhIFdhc20gcG9saWN5IHNob3VsZCBiZSBpbnZva2VkIHdpdGguICovXG4gICAgSW52b2tlUG9saWN5UmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQW4gb3B0aW9uYWwgS2V5IElELiBJZiBkZWZpbmVkLCB0aGUgcG9saWN5IHdpbGwgYmUgaW52b2tlZCBhcyBpZiBpdCBpcyBzaWduaW5nXG4gICAgICAgKiB0aGUgbWVzc2FnZSB3aXRoIHRoaXMga2V5LlxuICAgICAgICovXG4gICAgICBrZXlfaWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgXCJyZXF1ZXN0IGJvZHlcIiB0aGF0IHNob3VsZCBiZSBzZW50IHRvIHRoZSBwb2xpY3kuICovXG4gICAgICByZXF1ZXN0PzogdW5rbm93bjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gb3B0aW9uYWwgUm9sZSBJRC4gSWYgYE5vbmVgLCB0aGUgcG9saWN5IHdpbGwgYmUgaW52b2tlZCBmcm9tIHRoZSBjdXJyZW50IHVzZXIgc2Vzc2lvbi4gKi9cbiAgICAgIHJvbGVfaWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVzdWx0IG9mIGludm9raW5nIGEgV2FzbSBwb2xpY3kuICovXG4gICAgSW52b2tlUG9saWN5UmVzcG9uc2U6IHtcbiAgICAgIHJlc3BvbnNlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIldhc21Qb2xpY3lSZXNwb25zZVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBieXRlcyB3cml0dGVuIHRvIGBzdGRlcnJgLCBlbmNvZGVkIGFzIGEgaGV4LXN0cmluZy5cbiAgICAgICAqIEluIG1vc3QgY2FzZXMsIHRoZXNlIGJ5dGVzIGNvcnJlc3BvbmQgdG8gYSBVVEYtOC1lbmNvZGVkIGBTdHJpbmdgLlxuICAgICAgICovXG4gICAgICBzdGRlcnI6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBieXRlcyB3cml0dGVuIHRvIGBzdGRvdXRgLCBlbmNvZGVkIGFzIGEgaGV4LXN0cmluZy5cbiAgICAgICAqIEluIG1vc3QgY2FzZXMsIHRoZXNlIGJ5dGVzIGNvcnJlc3BvbmQgdG8gYSBVVEYtOC1lbmNvZGVkIGBTdHJpbmdgLlxuICAgICAgICovXG4gICAgICBzdGRvdXQ6IHN0cmluZztcbiAgICB9O1xuICAgIEpycGNSZXNwb25zZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSZXNwb25zZVwiXSAmIFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQSBbYEtleVBhY2thZ2VgXSBzZXJpYWxpemVkIGludG8gYSBmb3JtYXQgdGhhdCBnaXZlcyBhIHRpZGllciBKU09OXG4gICAgICogcmVwcmVzZW50YXRpb24gc3VpdGFibGUgZm9yIGVuY3J5cHRpb24gaW4gdGhlIHVzZXItZXhwb3J0IGZsb3cuXG4gICAgICpcbiAgICAgKiBXZSBjb25zdHJ1Y3QgdmFsdWVzIG9mIHRoaXMgdHlwZSByYXRoZXIgdGhhbiBjb25zdHJ1Y3RpbmcgYHNlcmRlX2pzb246OlZhbHVlYHNcbiAgICAgKiBkaXJlY3RseSB3aXRoIGBqc29uISgpYCBiZWNhdXNlIHRoaXMgYWxsb3dzIHVzIHRvIHplcm9pemUgdmFsdWVzIG9uIGRyb3AsIHdoaWNoXG4gICAgICogZG9lc24ndCB3b3JrIHdpdGggYHNlcmRlX2pzb246OlZhbHVlYC5cbiAgICAgKlxuICAgICAqIEV4YW1wbGVzIG9mIHNlcmlhbGl6ZWQgbWF0ZXJpYWw6XG4gICAgICpcbiAgICAgKiAtIGBKc29uS2V5TWF0ZXJpYWw6OkVuZ2xpc2hNbmVtb25pY2A6XG4gICAgICpcbiAgICAgKiBgYGBcbiAgICAgKiB1c2UgY3ViaXN0X3NpZ25lcl91dGlsczo6e1xuICAgICAqIERlcml2YXRpb25QYXRoLCBLZXlQYWNrYWdlLCBNbmVtb25pYywgTW5lbW9uaWNQYWNrYWdlLCBTZWNwMjU2azFQa2csXG4gICAgICogfTtcbiAgICAgKiB1c2Ugc2VyZGVfanNvbjo6anNvbjtcbiAgICAgKlxuICAgICAqIGNvbnN0IE1ORU1PTklDOiAmc3RyID0gXCJkZXBvc2l0IGZpc2NhbCBicmFpbiBzd2FybSBzdXJyb3VuZCBjb3VzaW4gaG9ybiBnbGFyZSBmaXggbG92ZSByZW5kZXIgYmVsaWV2ZSBndWlkZSBzaHVmZmxlIHN0ZW0gY3JhbSBicm9jY29saSByZXNlbWJsZSBiZWFjaCBhcnRlZmFjdCBsYW5ndWFnZSBnaWZ0IGphciBwZXJtaXRcIjtcbiAgICAgKiBjb25zdCBERVJfUEFUSDogJnN0ciA9IFwibS80NCcvNjAnLzAnLzAvMFwiO1xuICAgICAqIGNvbnN0IEtFWV9UWVBFOiAmc3RyID0gXCJlY2RzYTpzZWNwMjU2azFcIjtcbiAgICAgKlxuICAgICAqIGxldCBtbmUgPSBNbmVtb25pYzo6dHJ5X2Zyb20oTU5FTU9OSUMpLmV4cGVjdChcImdvb2QgbW5lbW9uaWNcIik7XG4gICAgICogbGV0IGRlcnAgPSBEZXJpdmF0aW9uUGF0aDo6dHJ5X2Zyb20oREVSX1BBVEgpLmV4cGVjdChcImdvb2QgZGVyIHBhdGhcIik7XG4gICAgICogbGV0IG1uZV9wa2cgPSBNbmVtb25pY1BhY2thZ2U6Om5ldyhtbmUsIFwiXCIsIGRlcnApO1xuICAgICAqIGxldCBrZXlfcGtnID0gS2V5UGFja2FnZTo6PFNlY3AyNTZrMVBrZz46OkVuZ2xpc2hNbmVtb25pYyhtbmVfcGtnKTtcbiAgICAgKiBsZXQganNvbl9wa2cgPSBrZXlfcGtnLmludG9fanNvbihLRVlfVFlQRSk7XG4gICAgICpcbiAgICAgKiBsZXQganNvbl9leHBlY3QgPSBqc29uISh7XG4gICAgICogXCJrZXlfdHlwZVwiOiBLRVlfVFlQRSxcbiAgICAgKiBcIm1hdGVyaWFsX3R5cGVcIjogXCJlbmdsaXNoX21uZW1vbmljXCIsXG4gICAgICogXCJtbmVtb25pY1wiOiBNTkVNT05JQyxcbiAgICAgKiBcInBhc3N3b3JkXCI6IFwiXCIsXG4gICAgICogXCJkZXJpdmF0aW9uX3BhdGhcIjogREVSX1BBVEgsXG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBhc3NlcnRfZXEhKFxuICAgICAqIHNlcmRlX2pzb246OnRvX3ZhbHVlKCZqc29uX3BrZykuZXhwZWN0KFwianNvbiBzZXJpYWxpemF0aW9uXCIpLFxuICAgICAqIGpzb25fZXhwZWN0LFxuICAgICAqICk7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiAtIGBKc29uS2V5TWF0ZXJpYWw6OlJhd1NlY3JldGA6XG4gICAgICpcbiAgICAgKiBgYGBcbiAgICAgKiB1c2UgY3ViaXN0X3NpZ25lcl91dGlsczo6e1xuICAgICAqIGdldF9yYW5kb21fYnl0ZV9hcnJheSwgaGV4X2VuY29kZSwgS2V5UGFja2FnZSwgUm5nQ29yZSwgU2VjcDI1NmsxUGtnLFxuICAgICAqIH07XG4gICAgICogdXNlIHNlcmRlX2pzb246Ompzb247XG4gICAgICpcbiAgICAgKiBjb25zdCBLRVlfVFlQRTogJnN0ciA9IFwiZWNkc2E6c2VjcDI1NmsxXCI7XG4gICAgICpcbiAgICAgKiAvLyByYW5kb20gMzItYnl0ZSBzZWNyZXRcbiAgICAgKiBsZXQgc2s6IFt1ODsgMzJdID0gKmdldF9yYW5kb21fYnl0ZV9hcnJheSgpO1xuICAgICAqXG4gICAgICogbGV0IGtleV9wa2cgPSBLZXlQYWNrYWdlOjo8U2VjcDI1NmsxUGtnPjo6U2VjcmV0KHNrKTtcbiAgICAgKiBsZXQganNvbl9wa2cgPSBrZXlfcGtnLmludG9fanNvbihLRVlfVFlQRSk7XG4gICAgICpcbiAgICAgKiBsZXQganNvbl9leHBlY3QgPSBqc29uISh7XG4gICAgICogXCJrZXlfdHlwZVwiOiBLRVlfVFlQRSxcbiAgICAgKiBcIm1hdGVyaWFsX3R5cGVcIjogXCJyYXdfc2VjcmV0XCIsXG4gICAgICogXCJzZWNyZXRcIjogaGV4X2VuY29kZSgmc2spLFxuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogYXNzZXJ0X2VxIShcbiAgICAgKiBzZXJkZV9qc29uOjp0b192YWx1ZSgmanNvbl9wa2cpLmV4cGVjdChcImpzb24gc2VyaWFsaXphdGlvblwiKSxcbiAgICAgKiBqc29uX2V4cGVjdCxcbiAgICAgKiApO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEpzb25LZXlQYWNrYWdlOiAoXG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBtYXRlcmlhbF90eXBlOiBcInJhd19zZWNyZXRcIjtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB2YWx1ZSBvZiB0aGUgcmF3IHNlY3JldCAqL1xuICAgICAgICAgIHNlY3JldDogc3RyaW5nO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBkZXJpdmF0aW9uIHBhdGggKi9cbiAgICAgICAgICBkZXJpdmF0aW9uX3BhdGg6IHN0cmluZztcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBtYXRlcmlhbF90eXBlOiBcImVuZ2xpc2hfbW5lbW9uaWNcIjtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBtbmVtb25pYyAqL1xuICAgICAgICAgIG1uZW1vbmljOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcGFzc3dvcmQgKHdoaWNoIG1heSBiZSBlbXB0eSkgKi9cbiAgICAgICAgICBwYXNzd29yZDogc3RyaW5nO1xuICAgICAgICB9XG4gICAgKSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHR5cGUgb2Yga2V5IHRoaXMgcGFja2FnZSByZXByZXNlbnRzICovXG4gICAgICBrZXlfdHlwZTogc3RyaW5nO1xuICAgIH07XG4gICAgSndrU2V0UmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGtleXMgaW5jbHVkZWQgaW4gdGhpcyBzZXQgKi9cbiAgICAgIGtleXM6IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdO1xuICAgIH07XG4gICAgS2V5Q291bnREaW1lbnNpb25zOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBrZXkgdHlwZSAqL1xuICAgICAga2V5X3R5cGU6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIG1ldHJpY3MgbXVzdCBpbmNsdWRlICdvcmdfaWQnIGFzIGEgZGltZW5zaW9uLiAqL1xuICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIERlcml2YXRpb24tcmVsYXRlZCBtZXRhZGF0YSBmb3Iga2V5cyBkZXJpdmVkIGZyb20gYSBsb25nLWxpdmVkIG1uZW1vbmljICovXG4gICAgS2V5RGVyaXZhdGlvbkluZm86IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGRlcml2YXRpb24gcGF0aCB1c2VkIHRvIGRlcml2ZSB0aGlzIGtleSAqL1xuICAgICAgZGVyaXZhdGlvbl9wYXRoOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBtbmVtb25pYy1pZCBvZiB0aGUga2V5J3MgcGFyZW50IG1uZW1vbmljICovXG4gICAgICBtbmVtb25pY19pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHdyYXBwZWQga2V5LWltcG9ydCBrZXkgKi9cbiAgICBLZXlJbXBvcnRLZXk6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQmFzZTY0LWVuY29kZWQsIGVuY3J5cHRlZCBkYXRhIGtleS4gKi9cbiAgICAgIGRrX2VuYzogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gRXhwaXJhdGlvbiB0aW1lc3RhbXAgZXhwcmVzc2VkIGFzIHNlY29uZHMgc2luY2UgdGhlIFVOSVggZXBvY2guXG4gICAgICAgKi9cbiAgICAgIGV4cGlyZXM6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBlcGhlbWVyYWwgcHVibGljIGtleSB0byB3aGljaCBhbiBpbXBvcnRlZCBrZXkgc2hvdWxkIGJlIGVuY3J5cHRlZC5cbiAgICAgICAqIFRoaXMgaXMgYSBQMzg0IHB1YmxpYyBrZXkgaW4gYmFzZTY0LWVuY29kZWQgdW5jb21wcmVzc2VkIFNFQ0cgZm9ybWF0LlxuICAgICAgICovXG4gICAgICBwdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEJhc2U2NC1lbmNvZGVkLCBlbmNyeXB0ZWQgc2VjcmV0IGtleS4gKi9cbiAgICAgIHNrX2VuYzogc3RyaW5nO1xuICAgIH07XG4gICAgS2V5SW5Sb2xlSW5mbzoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gS2V5IElEXG4gICAgICAgKiBAZXhhbXBsZSBLZXkjMHg4ZTM0ODQ2ODdlNjZjZGQyNmNmMDRjMzY0NzYzM2FiNGYzNTcwMTQ4XG4gICAgICAgKi9cbiAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAga2V5X2luZm8/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluZm9cIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUG9saWNpZXMgdGhhdCBhcmUgY2hlY2tlZCBiZWZvcmUgdGhpcyBrZXkgaXMgdXNlZCBvbiBiZWhhbGYgb2YgdGhpcyByb2xlXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlR4UmVjZWl2ZXJcIjogXCIweDhjNTk0NjkxYzBlNTkyZmZhMjFmMTUzYTE2YWU0MWRiNWJlZmNhYWFcIlxuICAgICAgICogICB9LFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJUeERlcG9zaXRcIjoge1xuICAgICAgICogICAgICAgXCJraW5kXCI6IFwiQ2Fub25pY2FsXCJcbiAgICAgICAqICAgICB9XG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W107XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSb2xlIElEXG4gICAgICAgKiBAZXhhbXBsZSBSb2xlI2U0MjdjMjhhLTljNWItNDljYy1hMjU3LTg3OGFlYTU4YTIyY1xuICAgICAgICovXG4gICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICBLZXlJbmZvOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbW1vbkZpZWxkc1wiXSAmIHtcbiAgICAgIGRlcml2YXRpb25faW5mbz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5RGVyaXZhdGlvbkluZm9cIl0gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRoZSBrZXkgaXMgZW5hYmxlZCAob25seSBlbmFibGVkIGtleXMgbWF5IGJlIHVzZWQgZm9yIHNpZ25pbmcpICovXG4gICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBrZXk6IFwiS2V5I1wiIGZvbGxvd2VkIGJ5IGEgdW5pcXVlIGlkZW50aWZpZXIgc3BlY2lmaWMgdG9cbiAgICAgICAqIHRoZSB0eXBlIG9mIGtleSAoc3VjaCBhcyBhIHB1YmxpYyBrZXkgZm9yIEJMUyBvciBhbiBldGhlcmV1bSBhZGRyZXNzIGZvciBTZWNwKVxuICAgICAgICogQGV4YW1wbGUgS2V5IzB4OGUzNDg0Njg3ZTY2Y2RkMjZjZjA0YzM2NDc2MzNhYjRmMzU3MDE0OFxuICAgICAgICovXG4gICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIGtleV90eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleVR5cGVcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIHVuaXF1ZSBpZGVudGlmaWVyIHNwZWNpZmljIHRvIHRoZSB0eXBlIG9mIGtleSwgc3VjaCBhcyBhIHB1YmxpYyBrZXkgb3IgYW4gZXRoZXJldW0gYWRkcmVzc1xuICAgICAgICogQGV4YW1wbGUgMHg4ZTM0ODQ2ODdlNjZjZGQyNmNmMDRjMzY0NzYzM2FiNGYzNTcwMTQ4XG4gICAgICAgKi9cbiAgICAgIG1hdGVyaWFsX2lkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPd25lciBvZiB0aGUga2V5XG4gICAgICAgKiBAZXhhbXBsZSBVc2VyI2MzYjkzNzljLTRlOGMtNDIxNi1iZDBhLTY1YWNlNTNjZjk4ZlxuICAgICAgICovXG4gICAgICBvd25lcjogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gS2V5IHBvbGljeVxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICBcIkFsbG93UmF3QmxvYlNpZ25pbmdcIixcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiUmVxdWlyZU1mYVwiOiB7XG4gICAgICAgKiAgICAgICBcImNvdW50XCI6IDFcbiAgICAgICAqICAgICB9XG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgcG9saWN5OiB1bmtub3duW107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBrZXkgcHJvdmVuYW5jZS4gKi9cbiAgICAgIHByb3ZlbmFuY2U/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQsIHNlcmlhbGl6ZWQgcHVibGljIGtleS4gVGhlIGZvcm1hdCB1c2VkIGRlcGVuZHMgb24gdGhlIGtleSB0eXBlOlxuICAgICAgICogLSBTZWNwMjU2azEga2V5cyB1c2UgNjUtYnl0ZSB1bmNvbXByZXNzZWQgU0VDRyBmb3JtYXQ7XG4gICAgICAgKiAtIFN0YXJrIGtleXMgdXNlIDMzLWJ5dGUgY29tcHJlc3NlZCBTRUNHIGZvcm1hdDtcbiAgICAgICAqIC0gQkxTIGtleXMgdXNlIDQ4LWJ5dGUgY29tcHJlc3NlZCBCTFMxMi0zODEgKFpDYXNoKSBmb3JtYXQ7XG4gICAgICAgKiAtIEVkMjU1MTkga2V5cyB1c2UgdGhlIGNhbm9uaWNhbCAzMi1ieXRlIGVuY29kaW5nIHNwZWNpZmllZCBpbiBSRkMgODAzMi5cbiAgICAgICAqIEBleGFtcGxlIDB4MDRkMjY4OGI2YmMyY2U3Zjk4NzliOWU3NDVmM2M0ZGMxNzc5MDhjNWNlZjBjMWI2NGNmZjE5YWU3ZmYyN2RlZTYyM2M2NGZlOWQ5YzMyNWM3ZmJiYzc0OGJiZDVmNjA3Y2UxNGRkODNlMjhlYmJiYjdkM2U3ZjJmZmI3MGE3OTQzMVxuICAgICAgICovXG4gICAgICBwdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcHVycG9zZSBmb3Igd2hpY2ggdGhlIGtleSBjYW4gYmUgdXNlZCAoZS5nLiwgY2hhaW4gaWQgZm9yIHdoaWNoIHRoZSBrZXkgaXMgYWxsb3dlZCB0byBzaWduIG1lc3NhZ2VzKVxuICAgICAgICogQGV4YW1wbGUgRXRoMlZhbGlkYXRvcigxKVxuICAgICAgICovXG4gICAgICBwdXJwb3NlOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZWdpb24gYWZmaW5pdHkgZm9yIHRoaXMga2V5ICovXG4gICAgICByZWdpb24/OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHJldHVybmVkIHdoZW4gcmVxdWVzdGluZyBhIGtleSBhdHRlc3RhdGlvbi4gKi9cbiAgICBLZXlJbmZvSnd0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEEgSlNPTiBXZWIgVG9rZW4gd2hvc2UgY2xhaW1zIGNvbnRhaW4gdGhlIGBLZXlJbmZvYCBzdHJ1Y3R1cmUuICovXG4gICAgICBqd3Q6IHN0cmluZztcbiAgICB9O1xuICAgIEtleUluZm9zOiB7XG4gICAgICBrZXlzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluZm9cIl1bXTtcbiAgICB9O1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIEtleVR5cGU6XG4gICAgICB8IFwiU2VjcEV0aEFkZHJcIlxuICAgICAgfCBcIlNlY3BCdGNcIlxuICAgICAgfCBcIlNlY3BCdGNUZXN0XCJcbiAgICAgIHwgXCJTZWNwQnRjTGVnYWN5XCJcbiAgICAgIHwgXCJTZWNwQnRjTGVnYWN5VGVzdFwiXG4gICAgICB8IFwiU2VjcEF2YUFkZHJcIlxuICAgICAgfCBcIlNlY3BBdmFUZXN0QWRkclwiXG4gICAgICB8IFwiQmxzUHViXCJcbiAgICAgIHwgXCJCbHNJbmFjdGl2ZVwiXG4gICAgICB8IFwiQmxzQXZhSWNtXCJcbiAgICAgIHwgXCJFZDI1NTE5U29sYW5hQWRkclwiXG4gICAgICB8IFwiRWQyNTUxOVN1aUFkZHJcIlxuICAgICAgfCBcIkVkMjU1MTlBcHRvc0FkZHJcIlxuICAgICAgfCBcIkVkMjU1MTlDYXJkYW5vQWRkclZrXCJcbiAgICAgIHwgXCJFZDI1NTE5U3RlbGxhckFkZHJcIlxuICAgICAgfCBcIkVkMjU1MTlTdWJzdHJhdGVBZGRyXCJcbiAgICAgIHwgXCJFZDI1NTE5Q2FudG9uQWRkclwiXG4gICAgICB8IFwiTW5lbW9uaWNcIlxuICAgICAgfCBcIlN0YXJrXCJcbiAgICAgIHwgXCJCYWJ5bG9uRW90c1wiXG4gICAgICB8IFwiQmFieWxvbkNvdlwiXG4gICAgICB8IFwiVGFwcm9vdEJ0Y1wiXG4gICAgICB8IFwiVGFwcm9vdEJ0Y1Rlc3RcIlxuICAgICAgfCBcIlNlY3BDb3Ntb3NBZGRyXCJcbiAgICAgIHwgXCJQMjU2Q29zbW9zQWRkclwiXG4gICAgICB8IFwiUDI1Nk9udG9sb2d5QWRkclwiXG4gICAgICB8IFwiUDI1Nk5lbzNBZGRyXCJcbiAgICAgIHwgXCJFZDI1NTE5VGVuZGVybWludEFkZHJcIlxuICAgICAgfCBcIlNlY3BUcm9uQWRkclwiXG4gICAgICB8IFwiRWQyNTUxOVRvbkFkZHJcIlxuICAgICAgfCBcIlNlY3BEb2dlQWRkclwiXG4gICAgICB8IFwiU2VjcERvZ2VUZXN0QWRkclwiXG4gICAgICB8IFwiU2VjcEthc3BhQWRkclwiXG4gICAgICB8IFwiU2VjcEthc3BhVGVzdEFkZHJcIlxuICAgICAgfCBcIlNjaG5vcnJLYXNwYUFkZHJcIlxuICAgICAgfCBcIlNjaG5vcnJLYXNwYVRlc3RBZGRyXCJcbiAgICAgIHwgXCJTZWNwTHRjXCJcbiAgICAgIHwgXCJTZWNwTHRjVGVzdFwiXG4gICAgICB8IFwiU2VjcFhycEFkZHJcIlxuICAgICAgfCBcIkVkMjU1MTlYcnBBZGRyXCJcbiAgICAgIHwgXCJCYWJ5SnVianViXCI7XG4gICAgS2V5VHlwZUFuZERlcml2YXRpb25QYXRoOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IG9mIGRlcml2YXRpb24gcGF0aHMgZm9yIHdoaWNoIHRvIGRlcml2ZS5cbiAgICAgICAqIEBleGFtcGxlIG0vNDQnLzYwJy8wJy8wLzBcbiAgICAgICAqL1xuICAgICAgZGVyaXZhdGlvbl9wYXRoOiBzdHJpbmc7XG4gICAgICBrZXlfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlUeXBlXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUG9saWNpZXMgdG8gYXBwbHkgdG8gdGhpcyBrZXkuIEl0IGlzIGFuIGVycm9yIHRvIHNwZWNpZnkgYSBwb2xpY3lcbiAgICAgICAqIHRoYXQgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBga2V5X3R5cGVgLlxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICBcIkFsbG93UmF3QmxvYlNpZ25pbmdcIixcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiUmVxdWlyZU1mYVwiOiB7XG4gICAgICAgKiAgICAgICBcImNvdW50XCI6IDFcbiAgICAgICAqICAgICB9XG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgcG9saWN5PzogdW5rbm93bltdIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBXcmFwcGVyIGFyb3VuZCBlbmNyeXB0ZWQgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIGJ5dGVzLlxuICAgICAqXG4gICAgICogV2Ugc2VyaWFsaXplIHRoaXMgaW50byBhIGJhc2U2NHVybC1lbmNvZGVkIHN0cmluZyBhbmQgcmV0dXJuIHRvIHRoZSB1c2VyXG4gICAgICogc28gdGhhdCB0aGV5IGNhbiBwYXNzIHRoaXMgYmFjayB0byB1cyBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICovXG4gICAgTGFzdEV2YWxLZXk6IHN0cmluZztcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoaXJkLXBhcnR5IGlkZW50aXRpZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSB1c2VyJ3MgYWNjb3VudCAqL1xuICAgIExpc3RJZGVudGl0aWVzUmVzcG9uc2U6IHtcbiAgICAgIGlkZW50aXRpZXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRlbnRpdHlJbmZvXCJdW107XG4gICAgfTtcbiAgICBMaXN0TWZhUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIHBlbmRpbmcgTUZBIHJlcXVlc3RzICovXG4gICAgICBtZmFfcmVxdWVzdHM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhUmVxdWVzdEluZm9cIl1bXTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIHBlbmRpbmcgTU1JIHJlcXVlc3RzIGNyZWF0ZWQgYnkgdGhlIGN1cnJlbnQgdXNlci4gKi9cbiAgICBMaXN0UGVuZGluZ01lc3NhZ2VzUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIHBlbmRpbmcgbWVzc2FnZXMgZm9yIGEgdXNlci4gKi9cbiAgICAgIHBlbmRpbmdfbWVzc2FnZXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUGVuZGluZ01lc3NhZ2VJbmZvXCJdW107XG4gICAgfTtcbiAgICBMb2dpblJlcXVlc3Q6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT2lkY0xvZ2luUmVxdWVzdFwiXTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVzY3JpYmVzIHdoZXRoZXIgYSB1c2VyIGluIGFuIG9yZyBpcyBhbiBPd25lciBvciBqdXN0IGEgcmVndWxhciBtZW1iZXJcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIE1lbWJlclJvbGU6IFwiQWxpZW5cIiB8IFwiTWVtYmVyXCIgfCBcIk93bmVyXCI7XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgTWVtYmVyc2hpcFN0YXR1czogXCJlbmFibGVkXCIgfCBcImRpc2FibGVkXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmFtZSBvZiB0aGUgbWV0cmljIHRvIGNvbXB1dGUgKi9cbiAgICBNZXRyaWNOYW1lOlxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9yZ01ldHJpY0Rpc2NyaW1pbmFudHNcIl1cbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUc1F1ZXJ5TmFtZVwiXTtcbiAgICAvKipcbiAgICAgKiBAZXhhbXBsZSB7XG4gICAgICogICBcImFsbG93ZWRfYXBwcm92ZXJzXCI6IFtcbiAgICAgKiAgICAgXCJVc2VyI2ZhYmMzZjg4LTA0ZTAtNDcxYi05NjU3LTBhZTEyYTNjZDczZVwiLFxuICAgICAqICAgICBcIlVzZXIjZDc5NmMzNjktOTk3NC00NzNiLWFiOWUtZTRhMjQxOGQyZDA3XCJcbiAgICAgKiAgIF0sXG4gICAgICogICBcImNvdW50XCI6IDIsXG4gICAgICogICBcImxpZmV0aW1lXCI6IDkwMFxuICAgICAqIH1cbiAgICAgKi9cbiAgICBNZmFQb2xpY3k6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVXNlcnMgd2hvIGFyZSBhbGxvd2VkIHRvIGFwcHJvdmUuIElmIGVtcHR5IGF0IGNyZWF0aW9uIHRpbWUsIGRlZmF1bHQgdG8gdGhlIGN1cnJlbnQgdXNlci4gKi9cbiAgICAgIGFsbG93ZWRfYXBwcm92ZXJzPzogc3RyaW5nW107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbG93ZWQgYXBwcm92YWwgdHlwZXMuIFdoZW4gb21pdHRlZCwgZGVmYXVsdHMgdG8gYW55LiAqL1xuICAgICAgYWxsb3dlZF9tZmFfdHlwZXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVR5cGVcIl1bXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBIb3cgbWFueSB1c2VycyB0byByZXF1aXJlIHRvIGFwcHJvdmUgKGRlZmF1bHRzIHRvIDEpLlxuICAgICAgICovXG4gICAgICBjb3VudD86IG51bWJlcjtcbiAgICAgIGxpZmV0aW1lPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNvbmRzXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSG93IG1hbnkgYXV0aCBmYWN0b3JzIHRvIHJlcXVpcmUgcGVyIHVzZXIgKGRlZmF1bHRzIHRvIDEpLlxuICAgICAgICovXG4gICAgICBudW1fYXV0aF9mYWN0b3JzPzogbnVtYmVyO1xuICAgICAgcmVxdWVzdF9jb21wYXJlcj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSHR0cFJlcXVlc3RDbXBcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDdWJlU2lnbmVyIG9wZXJhdGlvbnMgdG8gd2hpY2ggdGhpcyBwb2xpY3kgc2hvdWxkIGFwcGx5LlxuICAgICAgICogV2hlbiBvbWl0dGVkLCBhcHBsaWVzIHRvIGFsbCBvcGVyYXRpb25zLlxuICAgICAgICovXG4gICAgICByZXN0cmljdGVkX29wZXJhdGlvbnM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9wZXJhdGlvbktpbmRcIl1bXSB8IG51bGw7XG4gICAgICB0aW1lX2RlbGF5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNvbmRzXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIE1GQS1wcm90ZWN0ZWQgYWN0aW9ucyB3aG9zZSBNRkEgcmVxdWlyZW1lbnRzIGFyZSBjb25maWd1cmFibGUgYnkgb3JnIG93bmVycy5cbiAgICAgKlxuICAgICAqIFNwZWNpZnlpbmcgdGhlICdDdWJlU2lnbmVyJyBNRkEgdHlwZSBpcyBuZXZlciBhbGxvd2VkIGZvciBhbnkgb2YgdGhlc2UgYWN0aW9ucy5cbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIE1mYVByb3RlY3RlZEFjdGlvbjpcbiAgICAgIHwgXCJEZWZhdWx0XCJcbiAgICAgIHwgXCJSZWdpc3Rlck1mYVwiXG4gICAgICB8IFwiTG9naW5cIlxuICAgICAgfCBcIkV4dGVuZFNlc3Npb25cIlxuICAgICAgfCBcIkFkZElkZW50aXR5XCJcbiAgICAgIHwgXCJLZXlFeHBvcnRcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJldHVybmVkIGFzIGEgcmVzcG9uc2UgZnJvbSBtdWx0aXBsZSByb3V0ZXMgKGUuZy4sICdnZXQgbWZhJywgJ2FwcHJvdmUgbWZhJywgJ2FwcHJvdmUgdG90cCcpLiAqL1xuICAgIE1mYVJlcXVlc3RJbmZvOiB7XG4gICAgICBjcmVhdGVkX2F0PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgc2Vzc2lvbiBpZGVudGl0eSAodXNlciBvciByb2xlKSB0aGF0IGNyZWF0ZWQgdGhpcyByZXF1ZXN0LiAqL1xuICAgICAgY3JlYXRlZF9ieTogc3RyaW5nO1xuICAgICAgZXhwaXJlc19hdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBcHByb3ZhbCByZXF1ZXN0IElELiAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIG5vdF92YWxpZF91bnRpbD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE1GQSBwb2xpY3kgcHJvdmVuYW5jZVxuICAgICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgICAqL1xuICAgICAgcHJvdmVuYW5jZTogXCJLZXlcIiB8IFwiS2V5SW5Sb2xlXCIgfCBcIlJvbGVcIiB8IFwiVXNlclwiIHwgXCJFZGl0UG9saWN5XCI7XG4gICAgICByZWNlaXB0PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSZWNlaXB0XCJdIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlZ2lvbiB0aGlzIE1GQSByZXF1ZXN0IHdhcyBjcmVhdGVkIGluLiAgSXQgY2FuIG9ubHkgYmUgcmVkZWVtZWQgZnJvbSB0aGUgc2FtZSByZWdpb24uICovXG4gICAgICByZWdpb24/OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIGNvbnRhaW5zIHRoZSBJRHMgb2YgYWxsIE1GQSByZXF1ZXN0cyAoaW5jbHVkaW5nIHRoaXMgb25lISkgdGhhdFxuICAgICAgICogd2VyZSBnZW5lcmF0ZWQgYXQgb25jZSBmb3IgdGhlIHNhbWUgQ3ViZVNpZ25lciBvcGVyYXRpb24uXG4gICAgICAgKlxuICAgICAgICogSWYgbm90IHNldCwgaXQgbWVhbnMgdGhhdCB0aGlzIHdhcyB0aGUgbG9uZSBNRkEgcmVxdWVzdCBnZW5lcmF0ZWQgZm9yIGByZXF1ZXN0YC5cbiAgICAgICAqXG4gICAgICAgKiBUaGlzIGlzIHVzZWZ1bCBzbyB0aGF0IGEgY2xpZW50IGNhbiBkaXNjb3ZlciBhbGwgdGhlIE1GQXMgd2hvc2UgcmVjZWlwdHMgbXVzdFxuICAgICAgICogYmUgc3VibWl0dGVkIHRvZ2V0aGVyIHRvIGNhcnJ5IG91dCB0aGUgb3JpZ2luYWwgQ3ViZVNpZ25lciBvcGVyYXRpb24uXG4gICAgICAgKi9cbiAgICAgIHJlbGF0ZWRfaWRzPzogc3RyaW5nW107XG4gICAgICByZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkh0dHBSZXF1ZXN0XCJdO1xuICAgICAgc3RhdHVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlN0YXR1c1wiXTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gT3JnLXdpZGUgTUZBIHJlcXVpcmVtZW50cy4gKi9cbiAgICBNZmFSZXF1aXJlbWVudHM6IHtcbiAgICAgIGFsaWVuX2xvZ2luX3JlcXVpcmVtZW50PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNvbmRGYWN0b3JSZXF1aXJlbWVudFwiXTtcbiAgICAgIGFsbG93ZWRfbWZhX3R5cGVzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBbGxvd2VkTWZhTWFwXCJdO1xuICAgICAga2V5X2V4cG9ydF9yZXF1aXJlbWVudD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kRmFjdG9yUmVxdWlyZW1lbnRcIl07XG4gICAgICBtZW1iZXJfbG9naW5fcmVxdWlyZW1lbnQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlY29uZEZhY3RvclJlcXVpcmVtZW50XCJdO1xuICAgIH07XG4gICAgTWZhUmVzZXRSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIHVzZXIgeW91IHdhbnQgdG8gcmVzZXQgTUZBIGZvclxuICAgICAgICogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGZcbiAgICAgICAqL1xuICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogRm9ybWF0OiAnQ3ViZVNpZ25lcicgfCAnRmlkbycgfCBgRmlkb0tleSMke3N0cmluZ31gIHwgJ1RvdHAnIHwgJ0VtYWlsT3RwJyB8IGBFbWFpbE90cCMke251bWJlcn1gXG4gICAgICogQGRlc2NyaXB0aW9uIERpZmZlcmVudCB0eXBlcyB0aGF0IGNhbiBiZSB1c2VkIHRvIGFwcHJvdmUgYW4gTUZBIHJlcXVlc3RcbiAgICAgKi9cbiAgICBNZmFUeXBlOiBzdHJpbmc7XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgTWZhVm90ZTogXCJhcHByb3ZlXCIgfCBcInJlamVjdFwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gaW5kaXZpZHVhbCBpdGVtIGluIGEgTWlncmF0ZUlkZW50aXR5UmVxdWVzdCAqL1xuICAgIE1pZ3JhdGVJZGVudGl0eUl0ZW06IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT2lkY0lkZW50aXR5XCJdICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIHVzZXIgeW91IHdhbnQgdG8gb3BlcmF0ZSBvbiAqL1xuICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHJlcXVlc3QgdG8gYWRkIG9yIHJlbW92ZSBhbiBPSURDIGlkZW50aXRpZXMgZm9yIGFuIGV4aXN0aW5nIHVzZXIgKi9cbiAgICBNaWdyYXRlSWRlbnRpdHlSZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1pZ3JhdGVJZGVudGl0eUl0ZW1cIl1bXTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgcmVxdWVzdCB0byB1cGRhdGUgYW4gZXhpc3RpbmcgdXNlci4gKi9cbiAgICBNaWdyYXRlVXBkYXRlVXNlckl0ZW06IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSB1c2VyIHlvdSB3YW50IHRvIG9wZXJhdGUgb24gKi9cbiAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE92ZXJyaWRlIHVzZXIncyB2ZXJpZmllZCBlbWFpbCBpbiB0aGlzIG9yZy4gVXNlIGFuIGVtcHR5IHN0cmluZyB0byBpbmRpY2F0ZSB0aGF0IHRoaXMgdXNlcidzXG4gICAgICAgKiB2ZXJpZmllZCBlbWFpbCBzaG91bGQgYmUgY2xlYXJlZCAoYW5kIGZhbGxiYWNrIHRvIHRoZWlyIGRpc3BsYXkgZW1haWwpLlxuICAgICAgICovXG4gICAgICB2ZXJpZmllZF9lbWFpbD86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICBNaWdyYXRlVXBkYXRlVXNlcnNSZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1pZ3JhdGVVcGRhdGVVc2VySXRlbVwiXVtdO1xuICAgIE1taU1ldGFkYXRhOiAoY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNbWlNZXRhZGF0YUV4dFwiXSB8IG51bGwpICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBDaGFpbiBJRCAobm90IHJlcXVpcmVkIHdoZW4gc2lnbmluZyBhIHBlcnNvbmFsIG1lc3NhZ2UgKEVJUC0xOTEpKSAqL1xuICAgICAgY2hhaW5JZD86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIElmIHRoZSBjdXN0b2RpYW4gc2hvdWxkIHB1Ymxpc2ggdGhlIHRyYW5zYWN0aW9uICovXG4gICAgICBjdXN0b2RpYW5QdWJsaXNoZXNUcmFuc2FjdGlvbj86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIG5vdGUgdG8gYmUgYXR0YWNoZWQgdG8gdGhlIHRyYW5zYWN0aW9uIHdoaWNoIGNhbiBiZSBzcGVjaWZpZWQgYnkgdGhlIHVzZXIgKi9cbiAgICAgIG5vdGU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgd2ViIHBhZ2UvZGFwcCB3aGVyZSB0aGUgdHJhbnNhY3Rpb24gb3JpZ2luYXRlZCAqL1xuICAgICAgb3JpZ2luVXJsPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVXNlcidzIHByZWZlcnJlZCBSUEMgVVJMLCBhbmQgaXQgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBSUEMgVVJMIGZvciB0aGUgbmV0d29yayBjb3JyZXNwb25kaW5nIHRvIHRoZSBDaGFpbiBJRCAqL1xuICAgICAgcnBjVXJsPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGNhdGVnb3J5IG9mIHRyYW5zYWN0aW9uLCBhcyBiZXN0IGNhbiBiZSBkZXRlcm1pbmVkIGJ5IHRoZSB3YWxsZXQgKi9cbiAgICAgIHRyYW5zYWN0aW9uQ2F0ZWdvcnk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgTW1pTWV0YWRhdGFFeHQ6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFsbCBhY2NvdW50cyB0aGUgdXNlciBjYW4gYWNjZXNzLlxuICAgICAgICogT25seSBzZXQgd2hlbiByZXF1ZXN0ZWQgZXhwbGljaXRseSwgaS5lLiwgdmlhICdjdXN0b21lcl9saXN0QWNjb3VudHNTaWduZWQnLlxuICAgICAgICovXG4gICAgICBhY2NvdW50cz86XG4gICAgICAgIHwge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gQW4gRXRoZXJldW0gYWRkcmVzcywgaGV4LWVuY29kZWQsIHdpdGggbGVhZGluZyAnMHgnXG4gICAgICAgICAgICAgKiBAZXhhbXBsZSAweDAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYWRkcmVzczogc3RyaW5nO1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBY2NvdW50IG1ldGFkYXRhICovXG4gICAgICAgICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFjY291bnQgbmFtZSAqL1xuICAgICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcmRlcmVkIGxpc3Qgb2YgbmFtZS12YWx1ZSBwYWlycyAqL1xuICAgICAgICAgICAgdGFncz86IHtcbiAgICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUYWcgbmFtZSAqL1xuICAgICAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGFnIHZhbHVlICovXG4gICAgICAgICAgICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgICAgICAgICB9W107XG4gICAgICAgICAgfVtdXG4gICAgICAgIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGN1c3RvbWVyIElEIG9mIHRoZSB1c2VyLCBpLmUuLCB0aGUgY3VzdG9tZXIncyBvcmdhbml6YXRpb24gSUQuICovXG4gICAgICBjdXN0b21lcklkOiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIGh1bWFuIHJlYWRhYmxlIG5hbWUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgb3JnYW5pemF0aW9uLCBpZiBhbnkuICovXG4gICAgICBjdXN0b21lck5hbWU6IHN0cmluZyB8IG51bGw7XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgbXVzdCBtYXRjaCB0aGUgYHN1YmAgY2xhaW0gb2YgdGhlIGN1c3RvbWVyIHByb29mIG9mXG4gICAgICAgKiB0aGUgdXNlciBvciByb2xlIHNlc3Npb24gd2hpY2ggY3JlYXRlZCB0aGUgdHJhbnNhY3Rpb24uXG4gICAgICAgKi9cbiAgICAgIHVzZXJJZDogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIE1taVJlamVjdFJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcmVhc29uIGZvciByZWplY3RpbmcuICovXG4gICAgICByZWFzb24/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgTW1pU3RhdHVzOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFNob3J0IHRleHQgdG8gZGlzcGxheSB0byB0aGUgdXNlciAqL1xuICAgICAgZGlzcGxheVRleHQ6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGUgc2lnbmVkIG1lc3NhZ2UgaGFzIGZpbmlzaGVkLCBlLmcuIGl0IGlzIGNvbXBsZXRlZCwgZmFpbGVkIG9yIGNhbmNlbGxlZCAqL1xuICAgICAgZmluaXNoZWQ6IGJvb2xlYW47XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZWFzb24gZm9yIHRoZSBzaWduZWQgbWVzc2FnZSBzdGF0dXMgKi9cbiAgICAgIHJlYXNvbj86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlIG1lc3NhZ2Ugd2FzIHNpZ25lZCAqL1xuICAgICAgc2lnbmVkOiBib29sZWFuO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRoZSB0cmFuc2FjdGlvbiB3YXMgc3VibWl0dGVkIHRvIHRoZSBibG9ja2NoYWluICovXG4gICAgICBzdWJtaXR0ZWQ/OiBib29sZWFuO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRoZSB0cmFuc2FjdGlvbiB3YXMgc3VjY2Vzc2Z1bCwgaS5lLiBpdCB3YXMgaW5jbHVkZWQgaW4gYSBibG9jayBhbmQgbm90IHJldmVydGVkICovXG4gICAgICBzdWNjZXNzOiBib29sZWFuO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBJbmZvcm1hdGlvbiBhYm91dCBhIHNpZ25lZCBtZXNzYWdlICovXG4gICAgTXNnU2lnbmF0dXJlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBzaWduYXR1cmUgKi9cbiAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHN0cnVjdCByZXByZXNlbnRpbmcgdGhlIHBlbmRpbmcgbWVzc2FnZSBzdGF0dXMgKi9cbiAgICBNc2dTdGF0dXM6XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBzdGF0dXM6IFwiUGVuZGluZ1wiO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIGFib3V0IGEgc2lnbmVkIG1lc3NhZ2UgKi9cbiAgICAgICAgICBzaWc6IHtcbiAgICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHNpZ25hdHVyZSAqL1xuICAgICAgICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgICAgICAgfTtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBzdGF0dXM6IFwiU2lnbmVkXCI7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIHJlYXNvbjogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIHN0YXR1czogXCJSZWplY3RlZFwiO1xuICAgICAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBOZXR3b3JrIG5hbWUgKCdtYWlubmV0JywgJ2hvbGVza3knKVxuICAgICAqIEBleGFtcGxlIGhvbGVza3lcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIE5ldHdvcms6IFwibWFpbm5ldFwiIHwgXCJob2xlc2t5XCIgfCBcImhvb2RpXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBJbmZvcm1hdGlvbiBhYm91dCBhIG5ldyBzZXNzaW9uLCByZXR1cm5lZCBmcm9tIG11bHRpcGxlIGVuZHBvaW50cyAoZS5nLiwgbG9naW4sIHJlZnJlc2gsIGV0Yy4pLiAqL1xuICAgIE5ld1Nlc3Npb25SZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gU2Vzc2lvbiBleHBpcmF0aW9uIChpbiBzZWNvbmRzIHNpbmNlIFVOSVggZXBvY2gpLCBiZXlvbmQgd2hpY2ggaXQgY2Fubm90IGJlIHJlZnJlc2hlZC5cbiAgICAgICAqIEBleGFtcGxlIDE3MDE4Nzk2NDBcbiAgICAgICAqL1xuICAgICAgZXhwaXJhdGlvbj86IG51bWJlcjtcbiAgICAgIG9yZ19pZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl0gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUb2tlbiB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlZnJlc2ggdGhpcyBzZXNzaW9uLiAqL1xuICAgICAgcmVmcmVzaF90b2tlbjogc3RyaW5nO1xuICAgICAgc2Vzc2lvbl9pbmZvOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNsaWVudFNlc3Npb25JbmZvXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTmV3IHRva2VuIHRvIGJlIHVzZWQgZm9yIGF1dGhlbnRpY2F0aW9uLiBSZXF1ZXN0cyB0byBzaWduaW5nIGVuZHBvaW50c1xuICAgICAgICogc2hvdWxkIGluY2x1ZGUgdGhpcyB2YWx1ZSBpbiB0aGUgYEF1dGhvcml6YXRpb25gIGhlYWRlci5cbiAgICAgICAqL1xuICAgICAgdG9rZW46IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBGb3JtYXQ6IGJpbmFyeSAqL1xuICAgIE5vbmNlVmFsdWU6IHN0cmluZztcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBOb3RGb3VuZEVycm9yQ29kZTpcbiAgICAgIHwgXCJVcmlTZWdtZW50TWlzc2luZ1wiXG4gICAgICB8IFwiVXJpU2VnbWVudEludmFsaWRcIlxuICAgICAgfCBcIlRvdHBOb3RDb25maWd1cmVkXCJcbiAgICAgIHwgXCJGaWRvS2V5Tm90Rm91bmRcIlxuICAgICAgfCBcIkZpZG9DaGFsbGVuZ2VOb3RGb3VuZFwiXG4gICAgICB8IFwiVG90cENoYWxsZW5nZU5vdEZvdW5kXCJcbiAgICAgIHwgXCJVc2VyRXhwb3J0UmVxdWVzdE5vdEZvdW5kXCJcbiAgICAgIHwgXCJVc2VyRXhwb3J0Q2lwaGVydGV4dE5vdEZvdW5kXCJcbiAgICAgIHwgXCJPcmdFeHBvcnRDaXBoZXJ0ZXh0Tm90Rm91bmRcIlxuICAgICAgfCBcIlVwbG9hZE9iamVjdE5vdEZvdW5kXCJcbiAgICAgIHwgXCJQb2xpY3lTZWNyZXROb3RGb3VuZFwiXG4gICAgICB8IFwiVGltZXN0cmVhbURpc2FibGVkXCJcbiAgICAgIHwgXCJDdXN0b21DaGFpbk5vdEZvdW5kXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgY29uZmlndXJhdGlvbiBhbmQgc3RhdHVzIG9mIGEgbm90aWZpY2F0aW9uIGVuZHBvaW50ICovXG4gICAgTm90aWZpY2F0aW9uRW5kcG9pbnQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTm90aWZpY2F0aW9uRW5kcG9pbnRTdWJzY3JpcHRpb25cIl0gJiB7XG4gICAgICBzdGF0dXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU3Vic2NyaXB0aW9uU3RhdHVzXCJdO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgY29uZmlndXJhdGlvbiBmb3IgYW4gb3JnIGV2ZW50IGVuZHBvaW50ICovXG4gICAgTm90aWZpY2F0aW9uRW5kcG9pbnRDb25maWd1cmF0aW9uOiB7XG4gICAgICBmaWx0ZXI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9yZ0V2ZW50RmlsdGVyXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBVUkwgb2YgdGhlIGVuZHBvaW50ICovXG4gICAgICB1cmw6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSBub3RpZmljYXRpb24gZW5kcG9pbnQgc3Vic2NyaXB0aW9uICovXG4gICAgTm90aWZpY2F0aW9uRW5kcG9pbnRTdWJzY3JpcHRpb246IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIEFSTiBvZiB0aGUgc3Vic2NyaXB0aW9uICovXG4gICAgICBhcm46IHN0cmluZztcbiAgICAgIGNvbmZpZzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJOb3RpZmljYXRpb25FbmRwb2ludENvbmZpZ3VyYXRpb25cIl07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgdGhlIGRhdGEgZXh0cmFjdGVkIGZyb20gdGhlIE9JREMgdG9rZW4gKi9cbiAgICBPaWRjQ2xhaW1zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9pZGNVc2VySW5mb1wiXSAmXG4gICAgICBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9pZGNJZGVudGl0eVwiXSAmIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBBdWRpZW5jZShzKSB0aGF0IHRoaXMgSUQgVG9rZW4gaXMgaW50ZW5kZWQgZm9yLiBJdCBNVVNUIGNvbnRhaW4gdGhlXG4gICAgICAgICAqIE9BdXRoIDIuMCBjbGllbnRfaWQgb2YgdGhlIFJlbHlpbmcgUGFydHkgYXMgYW4gYXVkaWVuY2UgdmFsdWUuIEl0IE1BWVxuICAgICAgICAgKiBhbHNvIGNvbnRhaW4gaWRlbnRpZmllcnMgZm9yIG90aGVyIGF1ZGllbmNlcy5cbiAgICAgICAgICogVGhpcyB2YWx1ZSBpcyBvcGFxdWUgYWNjb3JkaW5nIHRvIHRoZSBPSURDIHNwZWMsIGJ1dCBmb3IgZXhhbXBsZSBHb29nbGVcbiAgICAgICAgICogYXVkaWVuY2VzIGxvb2sgbGlrZSBgMTIzNDk4NzgxOTIwMC5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbWBcbiAgICAgICAgICogQGV4YW1wbGUgMTIzNDk4NzgxOTIwMC5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbVxuICAgICAgICAgKi9cbiAgICAgICAgYXVkOiBzdHJpbmc7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gb3B0aW9uYWwgcmVzdHJpY3Rpb24gb24gdGhlIHNldCBvZiBzY29wZXMgYWxsb3dlZCB3aXRoIHRoaXMgdG9rZW4gKi9cbiAgICAgICAgY3ViZXNpZ25lcl9zY29wZV9jZWlsaW5nPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTY29wZVwiXVtdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgYSBnbG9iYWxseSB1bmlxdWUgT0lEQy1hdXRob3JpemVkIHVzZXIgYnkgZXhwcmVzc2luZyB0aGUgZnVsbCBcInBhdGhcIiB0byBhIHVzZXIuIFRoYXQgaXM6XG4gICAgICpcbiAgICAgKiAoaXNzKSAgICAgICAoc3ViKVxuICAgICAqIElzc3VlciAtPiBTdWJyZXNvdXJjZVxuICAgICAqL1xuICAgIE9pZGNJZGVudGl0eToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHJvb3QtbGV2ZWwgaXNzdWVyIHdobyBhZG1pbmlzdHJhdGVzIHRoaXMgdXNlci4gRnJvbSB0aGUgT0lEQyBzcGVjOlxuICAgICAgICogSXNzdWVyIElkZW50aWZpZXIgZm9yIHRoZSBJc3N1ZXIgb2YgdGhlIHJlc3BvbnNlLiBUaGUgaXNzXG4gICAgICAgKiB2YWx1ZSBpcyBhIGNhc2Ugc2Vuc2l0aXZlIFVSTCB1c2luZyB0aGUgaHR0cHMgc2NoZW1lIHRoYXQgY29udGFpbnNcbiAgICAgICAqIHNjaGVtZSwgaG9zdCwgYW5kIG9wdGlvbmFsbHksIHBvcnQgbnVtYmVyIGFuZCBwYXRoIGNvbXBvbmVudHMgYW5kXG4gICAgICAgKiBubyBxdWVyeSBvciBmcmFnbWVudCBjb21wb25lbnRzLlxuICAgICAgICogQGV4YW1wbGUgaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tXG4gICAgICAgKi9cbiAgICAgIGlzczogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gRnJvbSB0aGUgT0lEQyBzcGVjOlxuICAgICAgICpcbiAgICAgICAqIEEgbG9jYWxseSB1bmlxdWUgYW5kIG5ldmVyIHJlYXNzaWduZWQgaWRlbnRpZmllciB3aXRoaW4gdGhlIElzc3VlciBmb3JcbiAgICAgICAqIHRoZSBFbmQtVXNlciwgd2hpY2ggaXMgaW50ZW5kZWQgdG8gYmUgY29uc3VtZWQgYnkgdGhlIENsaWVudCwgZS5nLixcbiAgICAgICAqIDI0NDAwMzIwIG9yIEFJdE9hd213dFd3Y1QwazUxQmF5ZXdOdnV0ckpVcXN2bDZxczdBNC4gSXQgTVVTVCBOT1QgZXhjZWVkXG4gICAgICAgKiAyNTUgQVNDSUkgY2hhcmFjdGVycyBpbiBsZW5ndGguIFRoZSBzdWIgdmFsdWUgaXMgYSBjYXNlIHNlbnNpdGl2ZVxuICAgICAgICogc3RyaW5nLlxuICAgICAgICogQGV4YW1wbGUgMTA3NjkxNTAzNTAwMDYxNTA3MTUxMTMwODIzNjdcbiAgICAgICAqL1xuICAgICAgc3ViOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIGFib3V0IGFuIGV4cGxpY2l0bHkgY29uZmlndXJlZCAoYWxsb3dsaXN0ZWQpIE9wZW5JRCBwcm92aWRlciBmb3IgYW4gb3JnICovXG4gICAgT2lkY0lzc3VlckluZm86IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSW50ZW5kZWQgYXVkaWVuY2VzIChjbGllbnQgSURzKSAqL1xuICAgICAgYXVkaWVuY2VzOiBzdHJpbmdbXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSXNzdWVyIFVSTCAqL1xuICAgICAgaXNzdWVyOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIGlzc3VlciBuaWNrbmFtZSAqL1xuICAgICAgbmlja25hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdXNlciByb2xlcyBhbGxvd2VkIHRvIHVzZSB0aGlzIElEUCAqL1xuICAgICAgdXNlcnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyUm9sZVwiXVtdO1xuICAgIH07XG4gICAgT2lkY0xvZ2luRGltZW5zaW9uczoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgT0lEQyBpc3N1ZXIgKHByb3ZpZGVyKSAqL1xuICAgICAgaXNzdWVyOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBtZXRyaWNzIG11c3QgaW5jbHVkZSAnb3JnX2lkJyBhcyBhIGRpbWVuc2lvbi4gKi9cbiAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBPSURDIGxvZ2luIHJlcXVlc3QgKi9cbiAgICBPaWRjTG9naW5SZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNsaWVudFNlc3Npb25NZXRhZGF0YVwiXSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQSBodW1hbiByZWFkYWJsZSBkZXNjcmlwdGlvbiBvZiB0aGUgcHVycG9zZSBvZiB0aGUgc2Vzc2lvbiAqL1xuICAgICAgcHVycG9zZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDb250cm9scyB3aGF0IGNhcGFiaWxpdGllcyB0aGlzIHNlc3Npb24gd2lsbCBoYXZlLlxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICBcInNpZ246KlwiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHNjb3BlczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTY29wZVwiXVtdO1xuICAgICAgdG9rZW5zPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSYXRjaGV0Q29uZmlnXCJdO1xuICAgIH07XG4gICAgT2lkY1VzZXJJbmZvOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZW1haWwgYXNzb2NpYXRlZCB3aXRoIHRoZSB1c2VyXG4gICAgICAgKiBAZXhhbXBsZSB1c2VyQGVtYWlsLmNvbVxuICAgICAgICovXG4gICAgICBlbWFpbD86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdXNlciBuYW1lIChpZiBhbnkpIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXNlclxuICAgICAgICogQGV4YW1wbGUgZHJpbFxuICAgICAgICovXG4gICAgICBwcmVmZXJyZWRfdXNlcm5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEFsbCBkaWZmZXJlbnQga2luZHMgb2Ygc2Vuc2l0aXZlIG9wZXJhdGlvbnNcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIE9wZXJhdGlvbktpbmQ6XG4gICAgICB8IFwiQXZhU2lnblwiXG4gICAgICB8IFwiQXZhQ2hhaW5UeFNpZ25cIlxuICAgICAgfCBcIkJhYnlsb25Db3ZTaWduXCJcbiAgICAgIHwgXCJCYWJ5bG9uUmVnaXN0cmF0aW9uXCJcbiAgICAgIHwgXCJCYWJ5bG9uU3Rha2luZ1wiXG4gICAgICB8IFwiQmxvYlNpZ25cIlxuICAgICAgfCBcIkJ0Y01lc3NhZ2VTaWduXCJcbiAgICAgIHwgXCJCdGNTaWduXCJcbiAgICAgIHwgXCJEaWZmaWVIZWxsbWFuXCJcbiAgICAgIHwgXCJQc2J0U2lnblwiXG4gICAgICB8IFwiVGFwcm9vdFNpZ25cIlxuICAgICAgfCBcIkVpcDE5MVNpZ25cIlxuICAgICAgfCBcIkVpcDcxMlNpZ25cIlxuICAgICAgfCBcIkVvdHNOb25jZXNcIlxuICAgICAgfCBcIkVvdHNTaWduXCJcbiAgICAgIHwgXCJFdGgxU2lnblwiXG4gICAgICB8IFwiRXRoMlNpZ25cIlxuICAgICAgfCBcIkV0aDJTdGFrZVwiXG4gICAgICB8IFwiRXRoMlVuc3Rha2VcIlxuICAgICAgfCBcIlNvbGFuYVNpZ25cIlxuICAgICAgfCBcIlN1aVNpZ25cIlxuICAgICAgfCBcIlRlbmRlcm1pbnRTaWduXCJcbiAgICAgIHwgXCJSb2xlVXBkYXRlXCI7XG4gICAgT3JnQWxlcnRzUHJlZnM6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gUmVjaXBpZW50IHVzZXJzIGZvciBvcmctbGV2ZWwgYWxlcnRzICovXG4gICAgICBhbGVydF9yZWNpcGllbnRzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXVtdIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3JnLWxldmVsIGFsZXJ0cyB0byBzZW5kIGVtYWlscyBmb3IgKi9cbiAgICAgIHN1YnNjcmliZWRfYWxlcnRzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBbGVydEtpbmRcIl1bXSB8IG51bGw7XG4gICAgfTtcbiAgICBPcmdEYXRhOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIG9yZ1xuICAgICAgICogQGV4YW1wbGUgT3JnIzEyMy4uLlxuICAgICAgICovXG4gICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgb3JnXG4gICAgICAgKiBAZXhhbXBsZSBteV9vcmdfbmFtZVxuICAgICAgICovXG4gICAgICBvcmdfbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICBPcmdFdmVudEFyZ3M6IHtcbiAgICAgIG9yZ19ldmVudDogXCJPcmdFdmVudEFyZ3NcIjtcbiAgICB9ICYgT21pdDxjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9yZ0V2ZW50RGF0YVwiXSwgXCJvcmdfZXZlbnRcIj4gJiB7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGlkZW50aXR5IHRoYXQgdHJpZ2dlcmVkIHRoZSBldmVudCAqL1xuICAgICAgICB0cmlnZ2VyZWRfYnk6IHN0cmluZztcbiAgICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBPcmctbGV2ZWwgZXZlbnRzIHRoYXQgd2Ugbm90aWZ5IG91ciBjdXN0b21lcnMgYWJvdXQgKi9cbiAgICBPcmdFdmVudERhdGE6XG4gICAgICB8IHtcbiAgICAgICAgICBiaWxsaW5nX2V2ZW50OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJpbGxpbmdFdmVudFwiXTtcbiAgICAgICAgICBrZXk/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdIHwgbnVsbDtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBvcmdfZXZlbnQ6IFwiQmlsbGluZ1wiO1xuICAgICAgICAgIHJvbGU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdIHwgbnVsbDtcbiAgICAgICAgICB1c2VyPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXSB8IG51bGw7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGR1cmF0aW9uIG9mIHRoZSByZXF1ZXN0IGluIG1pbGxpc2Vjb25kc1xuICAgICAgICAgICAqL1xuICAgICAgICAgIGR1cmF0aW9uX21zOiBudW1iZXI7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSFRUUCByZXF1ZXN0IG1ldGhvZCAqL1xuICAgICAgICAgIG1ldGhvZDogc3RyaW5nO1xuICAgICAgICAgIG9wZXJhdGlvbjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCaWxsaW5nRXZlbnRcIl07XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgb3JnX2V2ZW50OiBcIlJlc3BvbnNlXCI7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSFRUUCByZXNwb25zZSBzdGF0dXNcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBzdGF0dXM6IG51bWJlcjtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBIVFRQIHJlcXVlc3QgcGF0aCArIHF1ZXJ5IHBhcmFtZXRlcnMgKi9cbiAgICAgICAgICB1cmk6IHN0cmluZztcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgbWVtYmVyc2hpcDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZW1iZXJSb2xlXCJdO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG9yZ19ldmVudDogXCJPaWRjQXV0aFwiO1xuICAgICAgICAgIHB1cnBvc2U/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIHNjb3BlczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTY29wZVwiXVtdO1xuICAgICAgICAgIHVzZXJfaW5mbzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPaWRjQ2xhaW1zXCJdO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBtYXRlcmlhbCBpZCAoYWRkcmVzcykgb2YgdGhlIGtleSB1c2VkIGZvciBzaWduaW5nICovXG4gICAgICAgICAga2V5X21hdGVyaWFsX2lkOiBzdHJpbmc7XG4gICAgICAgICAga2V5X3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5VHlwZVwiXTtcbiAgICAgICAgICBvcGVyYXRpb246IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT3BlcmF0aW9uS2luZFwiXTtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBvcmdfZXZlbnQ6IFwiU2lnbmVkXCI7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIGNoYWluX2lkOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgICAgICAgIGtleV9pZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXTtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBvcmdfZXZlbnQ6IFwiQmFieWxvbkVvdHNDb25jdXJyZW50U2lnbmluZ1wiO1xuICAgICAgICAgIC8qKiBGb3JtYXQ6IGludDY0ICovXG4gICAgICAgICAgcHJldl9ibG9ja19oZWlnaHQ6IG51bWJlcjtcbiAgICAgICAgICBwcmV2X3NpZ25pbmdfaGFzaDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBGb3JtYXQ6IGludDY0ICovXG4gICAgICAgICAgcmVxX2Jsb2NrX2hlaWdodDogbnVtYmVyO1xuICAgICAgICAgIHJlcV9zaWduaW5nX2hhc2g6IHN0cmluZztcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgYXR0ZXN0YXRpb246IHtcbiAgICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGhhc2ggdGhhdCB3YXMgc2lnbmVkICovXG4gICAgICAgICAgICBzaWduaW5nX3Jvb3Q6IHN0cmluZztcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBhdHRlc3RhdGlvbi5kYXRhLnNvdXJjZS5lcG9jaCBvZiB0aGUgc2lnbmVkIGF0dGVzdGF0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNvdXJjZV9lcG9jaDogbnVtYmVyO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGF0dGVzdGF0aW9uLmRhdGEudGFyZ2V0LmVwb2NoIG9mIHRoZSBzaWduZWQgYXR0ZXN0YXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdGFyZ2V0X2Vwb2NoOiBudW1iZXI7XG4gICAgICAgICAgfTtcbiAgICAgICAgICBrZXk6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICAgICAgbWF0ZXJpYWxfaWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG9yZ19ldmVudDogXCJFdGgyQ29uY3VycmVudEF0dGVzdGF0aW9uU2lnbmluZ1wiO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICBibG9jazoge1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaGFzaCB0aGF0IHdhcyBzaWduZWQgKi9cbiAgICAgICAgICAgIHNpZ25pbmdfcm9vdDogc3RyaW5nO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHNsb3QgbnVtYmVyIG9mIHRoZSBibG9jayB0aGF0IHdhcyBzaWduZWRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2xvdDogbnVtYmVyO1xuICAgICAgICAgIH07XG4gICAgICAgICAga2V5OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgICAgICAgIG1hdGVyaWFsX2lkPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBvcmdfZXZlbnQ6IFwiRXRoMkNvbmN1cnJlbnRCbG9ja1NpZ25pbmdcIjtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgZW5mb3JjZWQ6IGJvb2xlYW47XG4gICAgICAgICAgbGFzdF9zaWduaW5nX3Jvb3Q6IHN0cmluZztcbiAgICAgICAgICAvKiogRm9ybWF0OiBpbnQ2NCAqL1xuICAgICAgICAgIGxhc3Rfc2xvdDogbnVtYmVyO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG9yZ19ldmVudDogXCJFdGgySW52YWxpZEJsb2NrUHJvcG9zZXJTbG90VG9vTG93XCI7XG4gICAgICAgICAgc2lnbmluZ19yb290OiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEZvcm1hdDogaW50NjQgKi9cbiAgICAgICAgICBzbG90OiBudW1iZXI7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIGVuZm9yY2VkOiBib29sZWFuO1xuICAgICAgICAgIGxhc3Rfc2lnbmluZ19yb290OiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEZvcm1hdDogaW50NjQgKi9cbiAgICAgICAgICBsYXN0X3RhcmdldF9lcG9jaDogbnVtYmVyO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG9yZ19ldmVudDogXCJFdGgySW52YWxpZEF0dGVzdGF0aW9uU291cmNlRXBvY2hUb29Mb3dcIjtcbiAgICAgICAgICBzaWduaW5nX3Jvb3Q6IHN0cmluZztcbiAgICAgICAgICAvKiogRm9ybWF0OiBpbnQ2NCAqL1xuICAgICAgICAgIHNvdXJjZV9lcG9jaDogbnVtYmVyO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICBlbmZvcmNlZDogYm9vbGVhbjtcbiAgICAgICAgICBsYXN0X3NpZ25pbmdfcm9vdDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBGb3JtYXQ6IGludDY0ICovXG4gICAgICAgICAgbGFzdF90YXJnZXRfZXBvY2g6IG51bWJlcjtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBvcmdfZXZlbnQ6IFwiRXRoMkludmFsaWRBdHRlc3RhdGlvblRhcmdldEVwb2NoVG9vTG93XCI7XG4gICAgICAgICAgc2lnbmluZ19yb290OiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEZvcm1hdDogaW50NjQgKi9cbiAgICAgICAgICB0YXJnZXRfZXBvY2g6IG51bWJlcjtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgLyoqIEZvcm1hdDogaW50MzIgKi9cbiAgICAgICAgICBkYWlseV91bnN0YWtlX2NvdW50OiBudW1iZXI7XG4gICAgICAgICAga2V5X2lkOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG9yZ19ldmVudDogXCJFdGgyVW5zdGFrZVwiO1xuICAgICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgICAgIC8qKiBGb3JtYXQ6IGludDY0ICovXG4gICAgICAgICAgdmFsaWRhdG9yX2luZGV4OiBudW1iZXI7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIGRhdGU6IHVua25vd247XG4gICAgICAgICAgLyoqIEZvcm1hdDogaW50MzIgKi9cbiAgICAgICAgICBtYXg6IG51bWJlcjtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBvcmdfZXZlbnQ6IFwiRXRoMkV4Y2VlZGVkTWF4VW5zdGFrZVwiO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEtleSBpZHMgKi9cbiAgICAgICAgICBrZXlfaWRzOiBzdHJpbmdbXTtcbiAgICAgICAgICBrZXlfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlUeXBlXCJdO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG9yZ19ldmVudDogXCJLZXlDcmVhdGVkXCI7XG4gICAgICAgICAgb3duZXJfaWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIGFwcHJvdmVkX3dpdGhfbWZhX3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhVHlwZVwiXTtcbiAgICAgICAgICBtZmFfcmVxdWVzdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFSZXF1ZXN0SW5mb1wiXTtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBvcmdfZXZlbnQ6IFwiTWZhQXBwcm92ZWRcIjtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgbWZhX3JlcXVlc3Q6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhUmVxdWVzdEluZm9cIl07XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgb3JnX2V2ZW50OiBcIk1mYVJlamVjdGVkXCI7XG4gICAgICAgICAgcmVqZWN0ZWRfYnk6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICAgICAgcmVqZWN0ZWRfbWZhX2lkPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXSB8IG51bGw7XG4gICAgICAgICAgcmVqZWN0ZWRfd2l0aF9tZmFfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFUeXBlXCJdO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICBjaGFuZ2VkX2J5OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG5ldyBwb2xpY3kgKi9cbiAgICAgICAgICBuZXdfcG9saWN5OiB1bmtub3duW107XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgb3JnX2V2ZW50OiBcIlBvbGljeUNoYW5nZWRcIjtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBDaGFpbiBpZCAqL1xuICAgICAgICAgIGNoYWluX2lkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgcmVxdWVzdCAqL1xuICAgICAgICAgIGN1cnJlbnRfc3RhdGU6IHVua25vd247XG4gICAgICAgICAga2V5X2lkOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHN0YXRlIG9mIHRoZSBsYXN0IHNpZ25lZCBtZXNzYWdlICovXG4gICAgICAgICAgbGFzdF9zdGF0ZTogdW5rbm93bjtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBvcmdfZXZlbnQ6IFwiVGVuZGVybWludENvbmN1cnJlbnRTaWduaW5nXCI7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIGtleV9pZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXTtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBvcmdfZXZlbnQ6IFwiVXNlckV4cG9ydEluaXRcIjtcbiAgICAgICAgICB2YWxpZF9lcG9jaDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICBrZXlfaWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgb3JnX2V2ZW50OiBcIlVzZXJFeHBvcnRDb21wbGV0ZVwiO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBlcnJvciBmcm9tIHRoZSBwb2xpY3kgZW5naW5lICh3aGVuIHJlc3BvbnNlIGlzIGVxdWFsIHRvICdFcnJvcicpICovXG4gICAgICAgICAgZXJyb3I/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIGtleV9pZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl0gfCBudWxsO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG9yZ19ldmVudDogXCJXYXNtUG9saWN5RXhlY3V0ZWRcIjtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFBvbGljeSBuYW1lIG9yIGlkICovXG4gICAgICAgICAgcG9saWN5OiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBQb2xpY3kgaGFzaCAqL1xuICAgICAgICAgIHBvbGljeV9oYXNoOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVhc29uIGZvciB0aGUgZGVuaWFsICh3aGVuIHJlc3BvbnNlIGlzIGVxdWFsIHRvICdEZW55JykgKi9cbiAgICAgICAgICByZWFzb24/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBdXRvLWdlbmVyYXRlZCBkaXNjcmltaW5hbnQgZW51bSB2YXJpYW50c1xuICAgICAgICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICAgICAgICovXG4gICAgICAgICAgcmVzcG9uc2U6IFwiQWxsb3dcIiB8IFwiRGVueVwiIHwgXCJFcnJvclwiO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc291cmNlIG9mIGEgcG9saWN5IGV4ZWN1dGlvbiwgaS5lLiB0aGUgcmVhc29uIGl0IHdhcyBleGVjdXRlZC5cbiAgICAgICAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHNvdXJjZTogXCJTaWduUmVxdWVzdFwiIHwgXCJVc2VySW52b2NhdGlvblwiO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gUG9saWN5IGVycm9yIG91dHB1dCAqL1xuICAgICAgICAgIHN0ZGVycjogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gUG9saWN5IHN0YW5kYXJkIG91dHB1dCAqL1xuICAgICAgICAgIHN0ZG91dDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBdXRvLWdlbmVyYXRlZCBkaXNjcmltaW5hbnQgZW51bSB2YXJpYW50c1xuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgT3JnRXZlbnREaXNjcmltaW5hbnRzOlxuICAgICAgfCBcIkJpbGxpbmdcIlxuICAgICAgfCBcIlJlc3BvbnNlXCJcbiAgICAgIHwgXCJPaWRjQXV0aFwiXG4gICAgICB8IFwiU2lnbmVkXCJcbiAgICAgIHwgXCJCYWJ5bG9uRW90c0NvbmN1cnJlbnRTaWduaW5nXCJcbiAgICAgIHwgXCJFdGgyQ29uY3VycmVudEF0dGVzdGF0aW9uU2lnbmluZ1wiXG4gICAgICB8IFwiRXRoMkNvbmN1cnJlbnRCbG9ja1NpZ25pbmdcIlxuICAgICAgfCBcIkV0aDJJbnZhbGlkQmxvY2tQcm9wb3NlclNsb3RUb29Mb3dcIlxuICAgICAgfCBcIkV0aDJJbnZhbGlkQXR0ZXN0YXRpb25Tb3VyY2VFcG9jaFRvb0xvd1wiXG4gICAgICB8IFwiRXRoMkludmFsaWRBdHRlc3RhdGlvblRhcmdldEVwb2NoVG9vTG93XCJcbiAgICAgIHwgXCJFdGgyVW5zdGFrZVwiXG4gICAgICB8IFwiRXRoMkV4Y2VlZGVkTWF4VW5zdGFrZVwiXG4gICAgICB8IFwiS2V5Q3JlYXRlZFwiXG4gICAgICB8IFwiTWZhQXBwcm92ZWRcIlxuICAgICAgfCBcIk1mYVJlamVjdGVkXCJcbiAgICAgIHwgXCJQb2xpY3lDaGFuZ2VkXCJcbiAgICAgIHwgXCJUZW5kZXJtaW50Q29uY3VycmVudFNpZ25pbmdcIlxuICAgICAgfCBcIlVzZXJFeHBvcnRJbml0XCJcbiAgICAgIHwgXCJVc2VyRXhwb3J0Q29tcGxldGVcIlxuICAgICAgfCBcIldhc21Qb2xpY3lFeGVjdXRlZFwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRmlsdGVyIGZvciBvcmcgZXZlbnRzICovXG4gICAgT3JnRXZlbnRGaWx0ZXI6IE9uZU9mPFxuICAgICAgW1xuICAgICAgICBcIkFsbFwiLFxuICAgICAgICB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBY2NlcHRzIGFsbCBvcmcgZXZlbnRzIG90aGVyIHRoYW4gdGhlIG9uZXMgbGlzdGVkICovXG4gICAgICAgICAgQWxsRXhjZXB0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9yZ0V2ZW50RGlzY3JpbWluYW50c1wiXVtdO1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPbmx5IGFjY2VwdHMgb3JnIGV2ZW50cyB0aGF0IGFyZSBvbmUgb2YgdGhlIGxpc3RlZCBldmVudHMgKi9cbiAgICAgICAgICBPbmVPZjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPcmdFdmVudERpc2NyaW1pbmFudHNcIl1bXTtcbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICA+O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gb3JnLWV4cG9ydCBjaXBoZXJ0ZXh0IHJldHJpZXZlZCB2aWEgdGhlIG9yZy1leHBvcnQgQVBJLiAqL1xuICAgIE9yZ0V4cG9ydFJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEEgYmFzZTY0LWVuY29kZWQgZXhwb3J0IGNpcGhlcnRleHQuICovXG4gICAgICBjaXBoZXJ0ZXh0OiBzdHJpbmc7XG4gICAgfTtcbiAgICBPcmdJbmZvOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVJlcXVpcmVtZW50c1wiXSAmIHtcbiAgICAgIGFjY2Vzc19tb2RlbDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2Nlc3NNb2RlbFwiXTtcbiAgICAgIGN1c3RvbV9jaGFpbnM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkN1c3RvbUNoYWluc0RhdGFcIl0gfCBudWxsO1xuICAgICAgZGVmYXVsdF9pbnZpdGVfa2luZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSW52aXRlS2luZFwiXTtcbiAgICAgIGVtYWlsX3ByZWZlcmVuY2VzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFbWFpbFByZWZlcmVuY2VzXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGVuIGZhbHNlLCBhbGwgY3J5cHRvZ3JhcGhpYyBvcGVyYXRpb25zIGludm9sdmluZyBrZXlzIGluIHRoaXMgb3JnIGFyZSBkaXNhYmxlZC4gKi9cbiAgICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICBleHRfZGF0YT86XG4gICAgICAgIHwgKHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIFBlciBhbGllbiB1c2VyIGtleSBjb3VudCB0aHJlc2hvbGQsIHdoaWNoLCBvbmNlIGV4Y2VlZGVkLCBkaXNhbGxvd3MgZnVydGhlciBrZXkgY3JlYXRpb24gYnkgYWxpZW4gdXNlcnMuXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogVGhpcyBzZXR0aW5nIGlzIGNoZWNrZWQgb25seSB3aGVuIGFuIGFsaWVuIHVzZXIgcmVxdWVzdHMgdG8gY3JlYXRlIG9yIGltcG9ydCBhIG5ldyBrZXkuXG4gICAgICAgICAgICAgKiBJbiBvdGhlciB3b3Jkcywgb3JnIGFkbWlucyBjYW4gc3RpbGwgYXNzaWduIHVubGltaXRlZCBudW1iZXIgb2Yga2V5cyB0byB0aGVpciBhbGllbiB1c2Vycy5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYWxpZW5fa2V5X2NvdW50X3RocmVzaG9sZD86IG51bWJlciB8IG51bGw7XG4gICAgICAgICAgfSAmIHtcbiAgICAgICAgICAgIGNyZWF0ZWQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl0gfCBudWxsO1xuICAgICAgICAgICAgbGFzdF9tb2RpZmllZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXSB8IG51bGw7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBWZXJzaW9uIG9mIHRoaXMgb2JqZWN0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHZlcnNpb24/OiBudW1iZXI7XG4gICAgICAgICAgfSAmIFJlY29yZDxzdHJpbmcsIG5ldmVyPilcbiAgICAgICAgfCBudWxsO1xuICAgICAgaGlzdG9yaWNhbF9kYXRhX2NvbmZpZ3VyYXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkhpc3RvcmljYWxEYXRhQ29uZmlndXJhdGlvblwiXTtcbiAgICAgIGlkcF9jb25maWd1cmF0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZHBDb25maWdcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIERlcHJlY2F0ZWQ6IHRoaXMgZmllbGQgc2hvdWxkIGJlIGlnbm9yZWQuICovXG4gICAgICBrZXlfaW1wb3J0X2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3JnYW5pemF0aW9uJ3MgdW5pdmVyc2FsbHkgdW5pcXVlIGtleS13cmFwcGluZy1rZXkgaWRlbnRpZmllci5cbiAgICAgICAqIFRoaXMgdmFsdWUgaXMgcmVxdWlyZWQgd2hlbiBzZXR0aW5nIHVwIGtleSBleHBvcnQuXG4gICAgICAgKiBAZXhhbXBsZSBtcmstZmNlMDk1MjVlODE1ODdkMjM1MjBmMTFlMDdlMmU5ZDlcbiAgICAgICAqL1xuICAgICAga3drX2lkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBEYXRlL3RpbWUgKGluIFVUQykgd2hlbiBsYXN0ICd1bnN0YWtlJyB3YXMgcGVyZm9ybWVkLiBVbml4IGVwb2NoIGlmIG5vbmUuXG4gICAgICAgKiBAZXhhbXBsZSBUT0RPXG4gICAgICAgKi9cbiAgICAgIGxhc3RfdW5zdGFrZTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSG93IG1hbnkgJ3Vuc3Rha2UnIGNhbGxzIGhhcHBlbmVkIG9uIHRoZSBkYXkgd2hlbiBgbGFzdF91bnN0YWtlYCB3YXMgcGVyZm9ybWVkLlxuICAgICAgICovXG4gICAgICBsYXN0X3Vuc3Rha2VfZGF5X2NvdW50OiBudW1iZXI7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgbWV0cmljcyBhcmUgY29sbGVjdGVkIGZvciB0aGlzIG9yZyAqL1xuICAgICAgbWV0cmljc19lbmFibGVkPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgb3JnXG4gICAgICAgKiBAZXhhbXBsZSBteV9vcmdfbmFtZVxuICAgICAgICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyBub3RpZmljYXRpb24gZW5kcG9pbnRzLCB3aGljaCBhcmUgSFRUUFMgVVJMcyBhcmUgbm90aWZpZWQgYWJvdXQgYVxuICAgICAgICogY29uZmlndXJhYmxlIHNldCBvZiBldmVudHMgaW4gYW4gb3JnYW5pemF0aW9uLiBGb3IgZWFjaCBldmVudCwgQ3ViZVNpZ25lciBzZW5kcyBhIFBPU1RcbiAgICAgICAqIHJlcXVlc3Qgd2l0aCBhIEpTT04tZm9ybWF0dGVkIGJvZHkgdGhhdCBjb250YWlucyB0aGUgZXZlbnQgZGV0YWlscy5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiYXJuXCI6IFwiYXJuOmF3czpzbnM6dXMtZWFzdC0xOjAxMjM0NTY3ODkwMTpPcmdFdmVudHNUb3BpYzoxMjM0NTY3OC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDFcIixcbiAgICAgICAqICAgICBcImNvbmZpZ1wiOiB7XG4gICAgICAgKiAgICAgICBcInVybFwiOiBcImh0dHBzOi8vZXhhbXBsZS5jb20vZW5kcG9pbnQxXCJcbiAgICAgICAqICAgICB9LFxuICAgICAgICogICAgIFwic3RhdHVzXCI6IFwiQ29uZmlybWVkXCJcbiAgICAgICAqICAgfSxcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiYXJuXCI6IFwiYXJuOmF3czpzbnM6dXMtZWFzdC0xOjAxMjM0NTY3ODkwMTpPcmdFdmVudHNUb3BpYzoxMjM0NTY3OC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDJcIixcbiAgICAgICAqICAgICBcImNvbmZpZ1wiOiB7XG4gICAgICAgKiAgICAgICBcImZpbHRlclwiOiB7XG4gICAgICAgKiAgICAgICAgIFwiT25lT2ZcIjogW1xuICAgICAgICogICAgICAgICAgIFwiRXRoMkNvbmN1cnJlbnRBdHRlc3RhdGlvblNpZ25pbmdcIixcbiAgICAgICAqICAgICAgICAgICBcIkV0aDJDb25jdXJyZW50QmxvY2tTaWduaW5nXCJcbiAgICAgICAqICAgICAgICAgXVxuICAgICAgICogICAgICAgfSxcbiAgICAgICAqICAgICAgIFwidXJsXCI6IFwiaHR0cHM6Ly9leGFtcGxlLmNvbS9lbmRwb2ludDJcIlxuICAgICAgICogICAgIH0sXG4gICAgICAgKiAgICAgXCJzdGF0dXNcIjogXCJQZW5kaW5nXCJcbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBub3RpZmljYXRpb25fZW5kcG9pbnRzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJOb3RpZmljYXRpb25FbmRwb2ludFwiXVtdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBvcmdhbml6YXRpb25cbiAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAqL1xuICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICBwYXNza2V5X2NvbmZpZ3VyYXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBhc3NrZXlDb25maWdcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcmctd2lkZSBwb2xpY2llcyB0aGF0IGFyZSBjaGVja2VkIGJlZm9yZSBhIGtleSBpcyB1c2VkIGZvciBzaWduaW5nXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIk1heERhaWx5VW5zdGFrZVwiOiA1XG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W107XG4gICAgICBwb2xpY3lfZW5naW5lX2NvbmZpZ3VyYXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBvbGljeUVuZ2luZUNvbmZpZ3VyYXRpb25cIl07XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3JnYW5pemF0aW9uJ3MgY3VycmVudGx5IGNvbmZpZ3VyZWQgVE9UUCBmYWlsdXJlIGxpbWl0LCBpLmUuLCB0aGUgbnVtYmVyXG4gICAgICAgKiBvZiB0aW1lcyBhIHVzZXIgY2FuIHByb3ZpZGUgYW4gaW5jb3JyZWN0IFRPVFAgY29kZSBiZWZvcmUgYmVpbmcgcmF0ZSBsaW1pdGVkLlxuICAgICAgICogVGhpcyB2YWx1ZSBjYW4gYmUgYmV0d2VlbiAxIGFuZCA1IChpbmNsdXNpdmUpLlxuICAgICAgICovXG4gICAgICB0b3RwX2ZhaWx1cmVfbGltaXQ6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyBjdXJyZW50bHkgY29uZmlndXJlZCB1c2VyLWV4cG9ydCBkZWxheSwgaS5lLiwgdGhlIG1pbmltdW1cbiAgICAgICAqIGFtb3VudCBvZiB0aW1lIChpbiBzZWNvbmRzKSBiZXR3ZWVuIHdoZW4gYSB1c2VyLWV4cG9ydCBpcyBpbml0aWF0ZWQgYW5kIHdoZW5cbiAgICAgICAqIGl0IG1heSBiZSBjb21wbGV0ZWQuIChUaGlzIHZhbHVlIGlzIG1lYW5pbmdsZXNzIGZvciBvcmdhbml6YXRpb25zIHRoYXQgdXNlXG4gICAgICAgKiBvcmctd2lkZSBleHBvcnQuKVxuICAgICAgICovXG4gICAgICB1c2VyX2V4cG9ydF9kZWxheTogbnVtYmVyO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHVzZXIgZXhwb3J0IGlzIGRpc2FibGVkICovXG4gICAgICB1c2VyX2V4cG9ydF9kaXNhYmxlZD86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3JnYW5pemF0aW9uJ3MgY3VycmVudGx5IGNvbmZpZ3VyZWQgdXNlci1leHBvcnQgd2luZG93LCBpLmUuLCB0aGUgYW1vdW50XG4gICAgICAgKiBvZiB0aW1lIChpbiBzZWNvbmRzKSBiZXR3ZWVuIHdoZW4gdGhlIHVzZXItZXhwb3J0IGRlbGF5IGlzIGNvbXBsZXRlZCBhbmQgd2hlblxuICAgICAgICogdGhlIHVzZXIgZXhwb3J0IHJlcXVlc3QgaGFzIGV4cGlyZWQgYW5kIGNhbiBubyBsb25nZXIgYmUgY29tcGxldGVkLiAoVGhpcyB2YWx1ZVxuICAgICAgICogaXMgbWVhbmluZ2xlc3MgZm9yIG9yZ2FuaXphdGlvbnMgdGhhdCB1c2Ugb3JnLXdpZGUgZXhwb3J0LilcbiAgICAgICAqL1xuICAgICAgdXNlcl9leHBvcnRfd2luZG93OiBudW1iZXI7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIG9mZmljaWFsIHdlYmFwcCBvcmlnaW4gaXMgYXV0b21hdGljYWxseSBhbGxvd2VkICovXG4gICAgICB3ZWJhcHBfZW5hYmxlZD86IGJvb2xlYW47XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFN1cHBvcnRlZCBvcmcgbWV0cmljcy4gKi9cbiAgICBPcmdNZXRyaWM6IE9uZU9mPFxuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgQmlsbGluZ0V2ZW50OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJpbGxpbmdEaW1lbnNpb25zXCJdO1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgT2lkY0xvZ2luRXZlbnQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT2lkY0xvZ2luRGltZW5zaW9uc1wiXTtcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFNpZ25FdmVudDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTaWduRGltZW5zaW9uc1wiXTtcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFVzZXJDb3VudDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VyQ291bnREaW1lbnNpb25zXCJdO1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgS2V5Q291bnQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5Q291bnREaW1lbnNpb25zXCJdO1xuICAgICAgICB9LFxuICAgICAgXVxuICAgID47XG4gICAgT3JnTWV0cmljRGF0YToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgZGF0YSBwb2ludHMsIG9uZSBmb3IgZWFjaCB0aW1lIHBlcmlvZCAodGltZSBwZXJpb2RzIGZvciB3aGljaCB0aGUgdmFsdWUgaXMgMCBhcmUgb21pdHRlZCkuICovXG4gICAgICBkYXRhOiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IG51bWJlcjtcbiAgICAgIH07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBtZXRyaWMgZGltZW5zaW9ucy4gKi9cbiAgICAgIGRpbWVuc2lvbnM6IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBdXRvLWdlbmVyYXRlZCBkaXNjcmltaW5hbnQgZW51bSB2YXJpYW50c1xuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgT3JnTWV0cmljRGlzY3JpbWluYW50czpcbiAgICAgIHwgXCJCaWxsaW5nRXZlbnRcIlxuICAgICAgfCBcIk9pZGNMb2dpbkV2ZW50XCJcbiAgICAgIHwgXCJTaWduRXZlbnRcIlxuICAgICAgfCBcIlVzZXJDb3VudFwiXG4gICAgICB8IFwiS2V5Q291bnRcIjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQXZhaWxhYmxlIHN0YXRpc3RpY3MgdG8gY29tcHV0ZVxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgT3JnTWV0cmljU3RhdDogXCJTdW1cIiB8IFwiQXZlcmFnZVwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gT1MgaW5mb3JtYXRpb24gc2V0IGluIFtgQ2xpZW50U2Vzc2lvbk1ldGFkYXRhYF0gYW5kIHJlZmxlY3RlZCBpbiBbYFNlc3Npb25NZXRhZGF0YWBdICovXG4gICAgT3NJbmZvOiB7XG4gICAgICAvKiogQGV4YW1wbGUgYXJtNjQgKi9cbiAgICAgIGFyY2hpdGVjdHVyZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKiogQGV4YW1wbGUgTWFjIE9TICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZXhhbXBsZSAxNC41LjAgKi9cbiAgICAgIHZlcnNpb24/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBleGFtcGxlIDY0LWJpdCAqL1xuICAgICAgd29yZF9zaXplPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcm9ja2V0IHF1ZXJ5IHBhcmFtZXRlciByZXByZXNlbnRpbmcgdGhlIHBhZ2UgZnJvbSB3aGljaCB0byBzdGFydCBhIHBhZ2luYXRlZCBxdWVyeS5cbiAgICAgKlxuICAgICAqIE1VU1QgYmUgbmFtZWQgYDxwYWdlPmAgaW4gcm9ja2V0IHVybCBzcGVjIHNvIHRoYXQgJ3NlcmRlKHJlbmFtZSA9IFwicGFnZS4qXCIpJyBiZWxvdyBjb250aW51ZXMgdG8gd29ya1xuICAgICAqL1xuICAgIFBhZ2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICpcbiAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAqL1xuICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICovXG4gICAgICBcInBhZ2Uuc3RhcnRcIj86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgdHlwZSB0aGF0IHdyYXBzIGFub3RoZXIgdHlwZSBhbmQgYWRkcyBiYXNlNjR1cmwtZW5jb2RlZCBlbmNyeXB0ZWQgYGxhc3RfZXZhbHVhdGVkX2tleWBcbiAgICAgKiB2YWx1ZSAod2hpY2ggY2FuIHRoZSB1c2VyIHBhc3MgYmFjayB0byB1c2UgYXMgYSB1cmwgcXVlcnkgcGFyYW1ldGVyIHRvIGNvbnRpbnVlIHBhZ2luYXRpb24pLlxuICAgICAqL1xuICAgIFBhZ2luYXRlZEF1ZGl0TG9nUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQXVkaXQgbG9nIGVudHJpZXMgKi9cbiAgICAgIGVudHJpZXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXVkaXRMb2dFbnRyeVwiXVtdO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRHZXRVc2Vyc0luT3JnUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGxpc3Qgb2YgdXNlcnMgaW4gdGhlIG9yZyAqL1xuICAgICAgdXNlcnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckluT3JnSW5mb1wiXVtdO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRMaXN0Q29udGFjdHNSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIGxpc3Qgb2YgY29udGFjdHMgaW4gdGhlIG9yZ2FuaXphdGlvbiwgbWF0Y2hpbmcgYW55IHByb3ZpZGVkIHF1ZXJpZXMuICovXG4gICAgICBjb250YWN0czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDb250YWN0SW5mb1Jlc3BvbnNlXCJdW107XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgKi9cbiAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgdHlwZSB0aGF0IHdyYXBzIGFub3RoZXIgdHlwZSBhbmQgYWRkcyBiYXNlNjR1cmwtZW5jb2RlZCBlbmNyeXB0ZWQgYGxhc3RfZXZhbHVhdGVkX2tleWBcbiAgICAgKiB2YWx1ZSAod2hpY2ggY2FuIHRoZSB1c2VyIHBhc3MgYmFjayB0byB1c2UgYXMgYSB1cmwgcXVlcnkgcGFyYW1ldGVyIHRvIGNvbnRpbnVlIHBhZ2luYXRpb24pLlxuICAgICAqL1xuICAgIFBhZ2luYXRlZExpc3RIaXN0b3JpY2FsVHhSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBIaXN0b3JpY2FsIHRyYW5zYWN0aW9ucyBzaWduZWQgd2l0aCB0aGUgcmVxdWVzdGVkIGtleSwgc29ydGVkIGZyb20gbW9zdCB0byBsZWFzdCByZWNlbnQuICovXG4gICAgICB0eHM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSGlzdG9yaWNhbFR4XCJdW107XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgKi9cbiAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgdHlwZSB0aGF0IHdyYXBzIGFub3RoZXIgdHlwZSBhbmQgYWRkcyBiYXNlNjR1cmwtZW5jb2RlZCBlbmNyeXB0ZWQgYGxhc3RfZXZhbHVhdGVkX2tleWBcbiAgICAgKiB2YWx1ZSAod2hpY2ggY2FuIHRoZSB1c2VyIHBhc3MgYmFjayB0byB1c2UgYXMgYSB1cmwgcXVlcnkgcGFyYW1ldGVyIHRvIGNvbnRpbnVlIHBhZ2luYXRpb24pLlxuICAgICAqL1xuICAgIFBhZ2luYXRlZExpc3RLZXlSb2xlc1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCByb2xlcyB0aGUga2V5IGlzIGluICovXG4gICAgICByb2xlczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJblJvbGVJbmZvXCJdW107XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgKi9cbiAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgdHlwZSB0aGF0IHdyYXBzIGFub3RoZXIgdHlwZSBhbmQgYWRkcyBiYXNlNjR1cmwtZW5jb2RlZCBlbmNyeXB0ZWQgYGxhc3RfZXZhbHVhdGVkX2tleWBcbiAgICAgKiB2YWx1ZSAod2hpY2ggY2FuIHRoZSB1c2VyIHBhc3MgYmFjayB0byB1c2UgYXMgYSB1cmwgcXVlcnkgcGFyYW1ldGVyIHRvIGNvbnRpbnVlIHBhZ2luYXRpb24pLlxuICAgICAqL1xuICAgIFBhZ2luYXRlZExpc3RLZXlzUmVzcG9uc2U6IHtcbiAgICAgIGtleXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5mb1wiXVtdO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRMaXN0UG9saWNpZXNSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgT3JnJ3MgbmFtZWQgcG9saWNpZXMuICovXG4gICAgICBwb2xpY2llczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQb2xpY3lJbmZvXCJdW107XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgKi9cbiAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgdHlwZSB0aGF0IHdyYXBzIGFub3RoZXIgdHlwZSBhbmQgYWRkcyBiYXNlNjR1cmwtZW5jb2RlZCBlbmNyeXB0ZWQgYGxhc3RfZXZhbHVhdGVkX2tleWBcbiAgICAgKiB2YWx1ZSAod2hpY2ggY2FuIHRoZSB1c2VyIHBhc3MgYmFjayB0byB1c2UgYXMgYSB1cmwgcXVlcnkgcGFyYW1ldGVyIHRvIGNvbnRpbnVlIHBhZ2luYXRpb24pLlxuICAgICAqL1xuICAgIFBhZ2luYXRlZExpc3RSb2xlS2V5c1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBrZXlzIGluIGEgcm9sZSAqL1xuICAgICAga2V5czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJblJvbGVJbmZvXCJdW107XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgKi9cbiAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgdHlwZSB0aGF0IHdyYXBzIGFub3RoZXIgdHlwZSBhbmQgYWRkcyBiYXNlNjR1cmwtZW5jb2RlZCBlbmNyeXB0ZWQgYGxhc3RfZXZhbHVhdGVkX2tleWBcbiAgICAgKiB2YWx1ZSAod2hpY2ggY2FuIHRoZSB1c2VyIHBhc3MgYmFjayB0byB1c2UgYXMgYSB1cmwgcXVlcnkgcGFyYW1ldGVyIHRvIGNvbnRpbnVlIHBhZ2luYXRpb24pLlxuICAgICAqL1xuICAgIFBhZ2luYXRlZExpc3RSb2xlVXNlcnNSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgdXNlcnMgaW4gYSByb2xlICovXG4gICAgICB1c2VyczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VySW5Sb2xlSW5mb1wiXVtdO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRMaXN0Um9sZXNSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgcm9sZXMgaW4gYW4gb3JnYW5pemF0aW9uLiAqL1xuICAgICAgcm9sZXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUm9sZUluZm9cIl1bXTtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0eXBlIHRoYXQgd3JhcHMgYW5vdGhlciB0eXBlIGFuZCBhZGRzIGJhc2U2NHVybC1lbmNvZGVkIGVuY3J5cHRlZCBgbGFzdF9ldmFsdWF0ZWRfa2V5YFxuICAgICAqIHZhbHVlICh3aGljaCBjYW4gdGhlIHVzZXIgcGFzcyBiYWNrIHRvIHVzZSBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIgdG8gY29udGludWUgcGFnaW5hdGlvbikuXG4gICAgICovXG4gICAgUGFnaW5hdGVkUG9saWN5TG9nc1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBwb2xpY3kgZXhlY3V0aW9uIGxvZ3MgKi9cbiAgICAgIGxvZ3M6IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICAgICAgfVtdO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRRdWVyeU1ldHJpY3NSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBZHZpc29yeSBtZXNzYWdlcyAoZS5nLiwgaWYgbWF4IG51bWJlciBvZiByZXN1bHRzIGlzIHJlYWNoZWQpLiAqL1xuICAgICAgbWVzc2FnZXM/OiBzdHJpbmdbXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwZXJpb2QgZm9yIHdoaWNoIHRoZSBzdGF0aXN0aWMgaXMgY29tcHV0ZWQsIGlmIGFueSAobm90IGFsbCBtZXRyaWNzIHN1cHBvcnQgc3BsaXR0aW5nIHRoZSByZXF1ZXN0ZWQgdGltZSByYW5nZSBpbnRvIGJpbnMpLlxuICAgICAgICogSWYgc2V0LCBlcXVhbHMgdG8gdGhlIHZhbHVlIGZyb20gdGhlIHJlcXVlc3Qgcm91bmRlZCB1cCB0byB0aGUgY2xvc2VzdCBtdWx0aXBsZSBvZiA2MC5cbiAgICAgICAqL1xuICAgICAgcGVyaW9kPzogbnVtYmVyO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBTb21lIG1ldHJpY3MgY2FuIG9wdGlvbmFsbHkgcmV0dXJuIHRoZSByYXcgZGF0YSwgd2hlbiByZXF1ZXN0ZWQuICovXG4gICAgICByYXdfZGF0YToge1xuICAgICAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gICAgICB9W107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIENvbXB1dGVkIGRhdGEgcG9pbnRzLiAqL1xuICAgICAgcmVzdWx0czoge1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBkYXRhIHBvaW50cywgb25lIGZvciBlYWNoIHRpbWUgcGVyaW9kICh0aW1lIHBlcmlvZHMgZm9yIHdoaWNoIHRoZSB2YWx1ZSBpcyAwIGFyZSBvbWl0dGVkKS4gKi9cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIFtrZXk6IHN0cmluZ106IG51bWJlcjtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbWV0cmljIGRpbWVuc2lvbnMuICovXG4gICAgICAgIGRpbWVuc2lvbnM6IHtcbiAgICAgICAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9W107XG4gICAgICBzdGF0PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPcmdNZXRyaWNTdGF0XCJdIHwgbnVsbDtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0eXBlIHRoYXQgd3JhcHMgYW5vdGhlciB0eXBlIGFuZCBhZGRzIGJhc2U2NHVybC1lbmNvZGVkIGVuY3J5cHRlZCBgbGFzdF9ldmFsdWF0ZWRfa2V5YFxuICAgICAqIHZhbHVlICh3aGljaCBjYW4gdGhlIHVzZXIgcGFzcyBiYWNrIHRvIHVzZSBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIgdG8gY29udGludWUgcGFnaW5hdGlvbikuXG4gICAgICovXG4gICAgUGFnaW5hdGVkU2Vzc2lvbnNSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbGlzdCBvZiBzZXNzaW9ucyAqL1xuICAgICAgc2Vzc2lvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vzc2lvbkluZm9cIl1bXTtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0eXBlIHRoYXQgd3JhcHMgYW5vdGhlciB0eXBlIGFuZCBhZGRzIGJhc2U2NHVybC1lbmNvZGVkIGVuY3J5cHRlZCBgbGFzdF9ldmFsdWF0ZWRfa2V5YFxuICAgICAqIHZhbHVlICh3aGljaCBjYW4gdGhlIHVzZXIgcGFzcyBiYWNrIHRvIHVzZSBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIgdG8gY29udGludWUgcGFnaW5hdGlvbikuXG4gICAgICovXG4gICAgUGFnaW5hdGVkVXNlckV4cG9ydExpc3RSZXNwb25zZToge1xuICAgICAgZXhwb3J0X3JlcXVlc3RzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJFeHBvcnRJbml0UmVzcG9uc2VcIl1bXTtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gU2VudCBmcm9tIHRoZSBjbGllbnQgdG8gdGhlIHNlcnZlciB0byBhbnN3ZXIgYSBmaWRvIGNoYWxsZW5nZSAqL1xuICAgIFBhc3NrZXlBc3NlcnRBbnN3ZXI6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBjaGFsbGVuZ2UgdGhhdCB3YXMgcmV0dXJuZWQgZnJvbSB0aGUgUE9TVCBlbmRwb2ludCAqL1xuICAgICAgY2hhbGxlbmdlX2lkOiBzdHJpbmc7XG4gICAgICBjcmVkZW50aWFsOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxcIl07XG4gICAgfTtcbiAgICBQYXNza2V5QXNzZXJ0Q2hhbGxlbmdlOiAoY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDaGFsbGVuZ2VQaWVjZXNcIl0gJiB7XG4gICAgICBvcHRpb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uc1wiXTtcbiAgICB9KSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBjaGFsbGVuZ2UuIE11c3QgYmUgc3VwcGxpZWQgd2hlbiBhbnN3ZXJpbmcgdGhlIGNoYWxsZW5nZS4gKi9cbiAgICAgIGNoYWxsZW5nZV9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBPcmctbGV2ZWwgcGFzc2tleSBjb25maWd1cmF0aW9uICovXG4gICAgUGFzc2tleUNvbmZpZzoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBFbmFibGUgcGFzc2tleSBsb2dpbiBmb3IgY2VydGFpbiB1c2VyIHJvbGVzIChkaXNhYmxlZCBmb3IgZXZlcnlvbmUgYnkgZGVmYXVsdCkgKi9cbiAgICAgIHVzZXJzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZW1iZXJSb2xlXCJdW107XG4gICAgfTtcbiAgICBQYXNzd29yZFJlc2V0Q29uZmlybVJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG5ldyBwYXNzd29yZCB0byBzZXQuICovXG4gICAgICBuZXdfcGFzc3dvcmQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEludml0YXRpb24gdG9rZW4sIGNvbnN0cnVjdGVkIGJ5IGNvbmNhdGVuYXRpbmcgdGhlIFwicGFydGlhbCB0b2tlblwiXG4gICAgICAgKiAoaS5lLiwgYHtoZWFkZXJ9LntwYXlsb2FkfS5gKSByZXR1cm5lZCBieSB0aGUgYGlkcF9wYXNzd29yZF9yZXNldF9yZXF1ZXN0YCBlbmRwb2ludFxuICAgICAgICogYW5kIHRoZSBzaWduYXR1cmUgc2VudCB0byB0aGUgdXNlcidzIGVtYWlsLlxuICAgICAgICovXG4gICAgICB0b2tlbjogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVxdWVzdCBib2R5IGZvciB0aGUgaWRwIHBhc3N3b3JkIHJlc2V0IGVuZHBvaW50ICovXG4gICAgUGFzc3dvcmRSZXNldFJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBlbWFpbCBhZGRyZXNzIG9mIHRoZSB1c2VyIHJlcXVlc3RpbmcgdG8gcmVzZXQgdGhlaXIgcGFzc3dvcmRcbiAgICAgICAqIEBleGFtcGxlIGFsaWNlQGV4YW1wbGUuY29tXG4gICAgICAgKi9cbiAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEV4dGVuZGVkIGluZm9ybWF0aW9uIGFib3V0IGFuIGV4aXN0aW5nIE1NSSByZXF1ZXN0LiAqL1xuICAgIFBlbmRpbmdNZXNzYWdlSW5mbzoge1xuICAgICAgbWV0YWRhdGE6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTW1pTWV0YWRhdGFcIl07XG4gICAgICBzaWduZWRNZXNzYWdlPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTaWduZWRNZXNzYWdlXCJdIHwgbnVsbDtcbiAgICAgIHRyYW5zYWN0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUcmFuc2FjdGlvbkFuZFN0YXR1c1wiXSB8IG51bGw7XG4gICAgfSAmIHtcbiAgICAgIGNyZWF0ZWRfYXQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgIGV4cGlyZXNfYXQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBwZW5kaW5nIG1lc3NhZ2UgKi9cbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBpZGVudGl0eSAoYSB1c2VyIG9yIGEgcm9sZSBpZCkgd2hpY2ggY3JlYXRlZCB0aGlzIG1lc3NhZ2UuICovXG4gICAgICBpZGVudGl0eTogc3RyaW5nO1xuICAgICAgbWVzc2FnZV9laXAxOTE/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gRnJvbSBhZGRyZXNzLCBoZXgtZW5jb2RlZCwgd2l0aCBsZWFkaW5nICcweCdcbiAgICAgICAgICogQGV4YW1wbGUgMHgwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5XG4gICAgICAgICAqL1xuICAgICAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgKGluY2x1ZGluZyBhICcweCcgcHJlZml4KSBtZXNzYWdlIHRvIHNpZ24uICovXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIH0gfCBudWxsO1xuICAgICAgbWVzc2FnZV9laXA3MTI/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gRnJvbSBhZGRyZXNzLCBoZXgtZW5jb2RlZCwgd2l0aCBsZWFkaW5nICcweCdcbiAgICAgICAgICogQGV4YW1wbGUgMHgwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5XG4gICAgICAgICAqL1xuICAgICAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgICAgIGRhdGE6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVHlwZWREYXRhXCJdO1xuICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgdmVyc2lvbjogXCJ2M1wiIHwgXCJ2NFwiO1xuICAgICAgfSB8IG51bGw7XG4gICAgICBtZXNzYWdlX3R4PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUeXBlZFRyYW5zYWN0aW9uXCJdIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRXh0ZW5kZWQgaW5mb3JtYXRpb24gYWJvdXQgYW4gZXhpc3RpbmcgTU1JIG1lc3NhZ2UsIGluY2x1ZGluZyB0aGUgc2lnbmF0dXJlLiAqL1xuICAgIFBlbmRpbmdNZXNzYWdlU2lnblJlc3BvbnNlOiAoe1xuICAgICAgbWV0YWRhdGE6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTW1pTWV0YWRhdGFcIl07XG4gICAgICBzaWduZWRNZXNzYWdlPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTaWduZWRNZXNzYWdlXCJdIHwgbnVsbDtcbiAgICAgIHRyYW5zYWN0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUcmFuc2FjdGlvbkFuZFN0YXR1c1wiXSB8IG51bGw7XG4gICAgfSAmIHtcbiAgICAgIGNyZWF0ZWRfYXQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgIGV4cGlyZXNfYXQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBwZW5kaW5nIG1lc3NhZ2UgKi9cbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBpZGVudGl0eSAoYSB1c2VyIG9yIGEgcm9sZSBpZCkgd2hpY2ggY3JlYXRlZCB0aGlzIG1lc3NhZ2UuICovXG4gICAgICBpZGVudGl0eTogc3RyaW5nO1xuICAgICAgbWVzc2FnZV9laXAxOTE/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gRnJvbSBhZGRyZXNzLCBoZXgtZW5jb2RlZCwgd2l0aCBsZWFkaW5nICcweCdcbiAgICAgICAgICogQGV4YW1wbGUgMHgwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5XG4gICAgICAgICAqL1xuICAgICAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgKGluY2x1ZGluZyBhICcweCcgcHJlZml4KSBtZXNzYWdlIHRvIHNpZ24uICovXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIH0gfCBudWxsO1xuICAgICAgbWVzc2FnZV9laXA3MTI/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gRnJvbSBhZGRyZXNzLCBoZXgtZW5jb2RlZCwgd2l0aCBsZWFkaW5nICcweCdcbiAgICAgICAgICogQGV4YW1wbGUgMHgwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5XG4gICAgICAgICAqL1xuICAgICAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgICAgIGRhdGE6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVHlwZWREYXRhXCJdO1xuICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgdmVyc2lvbjogXCJ2M1wiIHwgXCJ2NFwiO1xuICAgICAgfSB8IG51bGw7XG4gICAgICBtZXNzYWdlX3R4PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUeXBlZFRyYW5zYWN0aW9uXCJdIHwgbnVsbDtcbiAgICB9KSAmXG4gICAgICBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4gICAgLyoqXG4gICAgICogUG9saWN5QWN0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSBhY2Nlc3MtY29udHJvbGxlZCBhY3Rpb25zIHRoYXQgY2FuIGJlIHBlcmZvcm1lZCBvbiBhIG5hbWVkIHBvbGljeS5cbiAgICAgKiBAZXhhbXBsZSByZWFkOnBvbGljeVxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgUG9saWN5QWN0aW9uOlxuICAgICAgfCBcInJlYWQ6KlwiXG4gICAgICB8IFwicmVhZDpwb2xpY3lcIlxuICAgICAgfCBcInJlYWQ6bG9nc1wiXG4gICAgICB8IFwidXBkYXRlOipcIlxuICAgICAgfCBcInVwZGF0ZTpuYW1lXCJcbiAgICAgIHwgXCJ1cGRhdGU6cnVsZXNcIlxuICAgICAgfCBcInVwZGF0ZTptZXRhZGF0YVwiXG4gICAgICB8IFwidXBkYXRlOmVkaXRQb2xpY3lcIlxuICAgICAgfCBcInVwZGF0ZTpvd25lclwiXG4gICAgICB8IFwidXBkYXRlOmFjbFwiXG4gICAgICB8IFwiZGVsZXRlXCJcbiAgICAgIHwgXCJhdHRhY2hcIlxuICAgICAgfCBcInNpZ25cIlxuICAgICAgfCBcImludm9rZVwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGlkIGZvciBhdHRhY2hpbmcgYSBuYW1lZCBwb2xpY3kgdG8gYSBrZXksIHJvbGUsIG9yIGtleSBpbiByb2xlLiAqL1xuICAgIFBvbGljeUF0dGFjaGVkVG9JZDogT25lT2Y8XG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBrZXkgaW4gdGhlIHJvbGUgdGhlIHBvbGljeSBzaG91bGQgYmUgYXR0YWNoZWQgdG8uXG4gICAgICAgICAgICogQGV4YW1wbGUgS2V5IzB4OGUzNDg0Njg3ZTY2Y2RkMjZjZjA0YzM2NDc2MzNhYjRmMzU3MDE0OFxuICAgICAgICAgICAqL1xuICAgICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIHJvbGUgdGhlIGtleSBpcyBpbi5cbiAgICAgICAgICAgKiBAZXhhbXBsZSBSb2xlI2JmZTNlY2NiLTczMWUtNDMwZC1iMWU1LWFjMTM2M2U2YjA2YlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGtleSB0aGUgcG9saWN5IHNob3VsZCBiZSBhdHRhY2hlZCB0by5cbiAgICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMHg4ZTM0ODQ2ODdlNjZjZGQyNmNmMDRjMzY0NzYzM2FiNGYzNTcwMTQ4XG4gICAgICAgICAgICovXG4gICAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSByb2xlIHRoZSBwb2xpY3kgc2hvdWxkIGJlIGF0dGFjaGVkIHRvLlxuICAgICAgICAgICAqIEBleGFtcGxlIFJvbGUjYmZlM2VjY2ItNzMxZS00MzBkLWIxZTUtYWMxMzYzZTZiMDZiXG4gICAgICAgICAgICovXG4gICAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgICB9LFxuICAgICAgXVxuICAgID47XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHN0cnVjdCBjb250YWluaW5nIE9yZy1sZXZlbCBjb25maWd1cmF0aW9ucyBmb3IgdGhlIHdvcmtpbmdzIG9mIHRoZSBQb2xpY3kgRW5naW5lLiAqL1xuICAgIFBvbGljeUVuZ2luZUNvbmZpZ3VyYXRpb246IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFsbG93ZWQgZG9tYWlucyBmb3IgSFRUUCByZXF1ZXN0c1xuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICBcImN1YmlzdC5kZXY6NDQzXCJcbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgYWxsb3dlZF9odHRwX2F1dGhvcml0aWVzOiBzdHJpbmdbXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG1heGltdW0gbnVtYmVyIG9mIHBvbGljeSBzZWNyZXRzIGZvciB0aGUgT3JnLiAqL1xuICAgICAgb3JnX3NlY3JldHNfbGltaXQ/OiBudW1iZXIgfCBudWxsO1xuICAgIH07XG4gICAgUG9saWN5RXJyb3JDb2RlOlxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBvbGljeUVycm9yT3duQ29kZXNcIl1cbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFdm1UeERlcG9zaXRFcnJvckNvZGVcIl07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgUG9saWN5RXJyb3JPd25Db2RlczpcbiAgICAgIHwgXCJJbmFwcGxpY2FibGVcIlxuICAgICAgfCBcIlN1aVR4UmVjZWl2ZXJzRGlzYWxsb3dlZFRyYW5zYWN0aW9uS2luZFwiXG4gICAgICB8IFwiU3VpVHhSZWNlaXZlcnNEaXNhbGxvd2VkVHJhbnNmZXJBZGRyZXNzXCJcbiAgICAgIHwgXCJTdWlUeFJlY2VpdmVyc0Rpc2FsbG93ZWRDb21tYW5kXCJcbiAgICAgIHwgXCJCdGNUeERpc2FsbG93ZWRPdXRwdXRzXCJcbiAgICAgIHwgXCJCdGNTaWduYXR1cmVFeGNlZWRlZFZhbHVlXCJcbiAgICAgIHwgXCJCdGNWYWx1ZU92ZXJmbG93XCJcbiAgICAgIHwgXCJCdGNTaWdoYXNoVHlwZURpc2FsbG93ZWRcIlxuICAgICAgfCBcIkV2bVR4UmVjZWl2ZXJNaXNtYXRjaFwiXG4gICAgICB8IFwiRXZtVHhDaGFpbklkTWlzbWF0Y2hcIlxuICAgICAgfCBcIkV2bVR4U2VuZGVyTWlzbWF0Y2hcIlxuICAgICAgfCBcIkV2bVR4RXhjZWVkZWRWYWx1ZVwiXG4gICAgICB8IFwiRXZtVHhFeGNlZWRlZEdhc0Nvc3RcIlxuICAgICAgfCBcIkV2bVR4R2FzQ29zdFVuZGVmaW5lZFwiXG4gICAgICB8IFwiRXZtRGF0YURpc2FsbG93ZWRcIlxuICAgICAgfCBcIkVyYzIwRGF0YUludmFsaWRcIlxuICAgICAgfCBcIkV2bUNvbnRyYWN0QWRkcmVzc1VuZGVmaW5lZFwiXG4gICAgICB8IFwiRXZtQ29udHJhY3RDaGFpbklkVW5kZWZpbmVkXCJcbiAgICAgIHwgXCJFdm1EYXRhTm90RGVmaW5lZFwiXG4gICAgICB8IFwiRXZtRGF0YUludmFsaWRcIlxuICAgICAgfCBcIkV2bUNvbnRyYWN0Tm90SW5BbGxvd2xpc3RcIlxuICAgICAgfCBcIkVyYzIwRXhjZWVkZWRUcmFuc2ZlckxpbWl0XCJcbiAgICAgIHwgXCJFcmMyMFJlY2VpdmVyTWlzbWF0Y2hcIlxuICAgICAgfCBcIkVyYzIwRXhjZWVkZWRBcHByb3ZlTGltaXRcIlxuICAgICAgfCBcIkVyYzIwU3BlbmRlck1pc21hdGNoXCJcbiAgICAgIHwgXCJFdm1GdW5jdGlvbk5vdEluQWxsb3dsaXN0XCJcbiAgICAgIHwgXCJFdm1GdW5jdGlvbkNhbGxJbnZhbGlkXCJcbiAgICAgIHwgXCJFdm1GdW5jdGlvbkNhbGxEaXNhbGxvd2VkQXJnXCJcbiAgICAgIHwgXCJQb2xpY3lEaXNqdW5jdGlvbkVycm9yXCJcbiAgICAgIHwgXCJQb2xpY3lOZWdhdGlvbkVycm9yXCJcbiAgICAgIHwgXCJFdGgyRXhjZWVkZWRNYXhVbnN0YWtlXCJcbiAgICAgIHwgXCJFdGgyQ29uY3VycmVudFVuc3Rha2luZ1wiXG4gICAgICB8IFwiTm90SW5JcHY0QWxsb3dsaXN0XCJcbiAgICAgIHwgXCJOb3RJbk9yaWdpbkFsbG93bGlzdFwiXG4gICAgICB8IFwiTm90SW5PcGVyYXRpb25BbGxvd2xpc3RcIlxuICAgICAgfCBcIkludmFsaWRTb3VyY2VJcFwiXG4gICAgICB8IFwiUmF3U2lnbmluZ05vdEFsbG93ZWRcIlxuICAgICAgfCBcIkRpZmZpZUhlbGxtYW5FeGNoYW5nZU5vdEFsbG93ZWRcIlxuICAgICAgfCBcIkVpcDcxMlNpZ25pbmdOb3RBbGxvd2VkXCJcbiAgICAgIHwgXCJPaWRjU291cmNlTm90QWxsb3dlZFwiXG4gICAgICB8IFwiTm9PaWRjQXV0aFNvdXJjZXNEZWZpbmVkXCJcbiAgICAgIHwgXCJBZGRLZXlUb1JvbGVEaXNhbGxvd2VkXCJcbiAgICAgIHwgXCJLZXlzQWxyZWFkeUluUm9sZVwiXG4gICAgICB8IFwiS2V5SW5NdWx0aXBsZVJvbGVzXCJcbiAgICAgIHwgXCJLZXlBY2Nlc3NFcnJvclwiXG4gICAgICB8IFwiUmVxdWlyZVJvbGVTZXNzaW9uS2V5QWNjZXNzRXJyb3JcIlxuICAgICAgfCBcIkJ0Y01lc3NhZ2VTaWduaW5nTm90QWxsb3dlZFwiXG4gICAgICB8IFwiRWlwMTkxU2lnbmluZ05vdEFsbG93ZWRcIlxuICAgICAgfCBcIlRhcHJvb3RTaWduaW5nRGlzYWxsb3dlZFwiXG4gICAgICB8IFwiU2Vnd2l0U2lnbmluZ0Rpc2FsbG93ZWRcIlxuICAgICAgfCBcIlBzYnRTaWduaW5nRGlzYWxsb3dlZFwiXG4gICAgICB8IFwiQmFieWxvblN0YWtpbmdEaXNhbGxvd2VkXCJcbiAgICAgIHwgXCJUaW1lTG9ja2VkXCJcbiAgICAgIHwgXCJCYWJ5bG9uU3Rha2luZ05ldHdvcmtcIlxuICAgICAgfCBcIkJhYnlsb25TdGFraW5nUGFyYW1zVmVyc2lvblwiXG4gICAgICB8IFwiQmFieWxvblN0YWtpbmdFeHBsaWNpdFBhcmFtc1wiXG4gICAgICB8IFwiQmFieWxvblN0YWtpbmdTdGFrZXJQa1wiXG4gICAgICB8IFwiQmFieWxvblN0YWtpbmdGaW5hbGl0eVByb3ZpZGVyUGtcIlxuICAgICAgfCBcIkJhYnlsb25TdGFraW5nTG9ja1RpbWVcIlxuICAgICAgfCBcIkJhYnlsb25TdGFraW5nVmFsdWVcIlxuICAgICAgfCBcIkJhYnlsb25TdGFraW5nQ2hhbmdlQWRkcmVzc1wiXG4gICAgICB8IFwiQmFieWxvblN0YWtpbmdGZWVcIlxuICAgICAgfCBcIkJhYnlsb25TdGFraW5nV2l0aGRyYXdhbEFkZHJlc3NcIlxuICAgICAgfCBcIkJhYnlsb25TdGFraW5nQmJuQWRkcmVzc1wiXG4gICAgICB8IFwiU29sYW5hSW5zdHJ1Y3Rpb25Db3VudExvd1wiXG4gICAgICB8IFwiU29sYW5hSW5zdHJ1Y3Rpb25Db3VudEhpZ2hcIlxuICAgICAgfCBcIlNvbGFuYU5vdEluSW5zdHJ1Y3Rpb25BbGxvd2xpc3RcIlxuICAgICAgfCBcIlNvbGFuYUluc3RydWN0aW9uTWlzbWF0Y2hcIlxuICAgICAgfCBcIldhc21Qb2xpY2llc0Rpc2FibGVkXCJcbiAgICAgIHwgXCJXYXNtUG9saWN5RGVuaWVkXCJcbiAgICAgIHwgXCJXYXNtUG9saWN5RmFpbGVkXCJcbiAgICAgIHwgXCJXZWJob29rUG9saWNpZXNEaXNhYmxlZFwiXG4gICAgICB8IFwiRGVuaWVkQnlXZWJob29rXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHN0cnVjdCBjb250YWluaW5nIGFsbCB0aGUgaW5mb3JtYXRpb24gYWJvdXQgYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIGEgcG9saWN5LiAqL1xuICAgIFBvbGljeUluZm86IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGFjY2Vzcy1jb250cm9sIGVudHJpZXMgZm9yIHRoZSBwb2xpY3kuICovXG4gICAgICBhY2w/OiB1bmtub3duW10gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIGxpc3Qgb2YgZW50aXRpZXMgKGtleXMsIHJvbGVzLCBldGMuKSB0aGUgcG9saWN5IGlzIGF0dGFjaGVkIHRvLiAqL1xuICAgICAgYXR0YWNoZWRfdG86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUG9saWN5QXR0YWNoZWRUb0lkXCJdW107XG4gICAgICBjcmVhdGVkOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICBlZGl0X3BvbGljeT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRWRpdFBvbGljeVwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVXNlci1kZWZpbmVkIG1ldGFkYXRhIGZvciB0aGUgbmFtZWQgcG9saWN5LiAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmFtZSBvZiB0aGUgcG9saWN5LiAqL1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgb3duZXI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBwb2xpY3kgaWQgKi9cbiAgICAgIHBvbGljeV9pZDogc3RyaW5nO1xuICAgICAgcG9saWN5X3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUG9saWN5VHlwZVwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHBvbGljeSBydWxlLiAqL1xuICAgICAgcnVsZXM6IHVua25vd25bXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwb2xpY3kgcnVsZSdzIHZlcnNpb24uXG4gICAgICAgKi9cbiAgICAgIHZlcnNpb246IG51bWJlcjtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSByZXF1ZXN0IGZvciBxdWVyeWluZyBXYXNtIHBvbGljeSBsb2dzLiAqL1xuICAgIFBvbGljeUxvZ3NSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBFbmQgdGltZSBpbiBzZWNvbmRzIHNpbmNlIHVuaXggZXBvY2guIElmIG9taXR0ZWQsIGRlZmF1bHRzIHRvICdub3cnLlxuICAgICAgICovXG4gICAgICBlbmRfdGltZT86IG51bWJlciB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBTdGFydCB0aW1lIGluIHNlY29uZHMgc2luY2UgdW5peCBlcG9jaC4gSWYgb21pdHRlZCwgZGVmYXVsdHMgdG8gMjQgaG91cnMgYWdvLlxuICAgICAgICovXG4gICAgICBzdGFydF90aW1lPzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB2ZXJzaW9uIG9mIHRoZSBwb2xpY3kgdG8gZ2V0IHRoZSBsb2dzIGZvci5cbiAgICAgICAqIElmIG9taXR0ZWQsIGFsbCBwb2xpY3kgbG9ncyBhcmUgcmV0cmlldmVkLlxuICAgICAgICovXG4gICAgICB2ZXJzaW9uPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBQb2xpY3lSZXN1bHRSZXNwb25zZSBpcyBhIHdyYXBwZXIgb24gUG9saWN5UmVzdWx0IHdpdGggdHdvIGltcG9ydGFudFxuICAgICAqIHByb3BlcnRpZXM6XG4gICAgICogKiBkZXJpdmVzIE9rVG9Mb2dSZXNwb25zZSwgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBpbiB0aGUgcm9ja2V0IGhhbmRsZXIuXG4gICAgICogKiBkZXJpdmVzIFRvU2NoZW1hIGFuZCBUb1Jlc3BvbnNlLCB3aXRoIHRoZSBgdmFsYCBmaWVsZCB3aXRoIHZhbHVlX3R5cGVcbiAgICAgKiBPYmplY3QsIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byBwcm92aWRlIGFsbCBvZiB0aGUgT3BlbkFQSSB0eXBlXG4gICAgICogZGVzY3JpcHRpb25zIG9mIGEgUG9saWN5UmVzdWx0LlxuICAgICAqXG4gICAgICogVGhlIFBvbGljeVJlc3VsdCBpbmNsdWRlcyBlbnVtcyBhbmQgb3RoZXIgc3RhbmRhcmQgdHlwZXMgKGUuZy5cbiAgICAgKiBzdGQ6OnRpbWU6OkludGVydmFsKSB3aGljaCBhcmUgbm9udHJpdmlhbCB0byByZXByZXNlbnQgaW4gT3BlbkFQSS4gU2luY2VcbiAgICAgKiB0aGlzIGVuZHBvaW50IGlzIGp1c3QgZm9yIHRlc3RpbmcsIHdlIGRvbid0IHJlYWxseSBjYXJlIGFib3V0IGhvdyBhY2N1cmF0ZVxuICAgICAqIHRoZSBzY2hlbWEgaXMsIGFuZCBjYW4gbGVhbiBvbiBzZXJkZV9qc29uIHdoZW4gZGVjb2RpbmcgdGhpcyByZXNwb25zZSB0byBhXG4gICAgICogUG9saWN5UmVzdWx0IGluIGEgY2xpZW50LiBOb3RlIHRoYXQgdGhlcmUgaXMgYSBidWcgaW4gdXRvaXBhIHdoZXJlIHRoZVxuICAgICAqIHZhbHVlX3R5cGUgYW5ub3RhdGlvbiB3aWxsIG5vdCB3b3JrIGZvciBhIHR1cGxlLXN0cnVjdCwgb25seSBhIHN0cnVjdCB3aXRoXG4gICAgICogZmllbGRzLlxuICAgICAqL1xuICAgIFBvbGljeVJlc3VsdFJlc3BvbnNlOiB7XG4gICAgICB2YWw6IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSBzdHJ1Y3QgY29udGFpbmluZyBhbGwgbm9uLXNlY3JldCBpbmZvcm1hdGlvbiBhYm91dCBwb2xpY3kgc2VjcmV0cy4gKi9cbiAgICBQb2xpY3lTZWNyZXRzSW5mbzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDb21tb25GaWVsZHNcIl0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXByZWNhdGVkXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5hbWVzIG9mIHRoZSBzZWNyZXRzLlxuICAgICAgICovXG4gICAgICBuYW1lczogc3RyaW5nW107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBwb2xpY3kgc2VjcmV0cy4gKi9cbiAgICAgIHNlY3JldHM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2VjcmV0SW5mb1wiXVtdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSB0eXBlIG9mIGEgW05hbWVkUG9saWN5XS5cbiAgICAgKlxuICAgICAqIFRoZSB0eXBlIG9mIGEgcG9saWN5IGlzIHNldCBhdCBjcmVhdGlvbiB0aW1lLCBhbmQgaXMgdXNlZCB0byBvZmZlciBndWFyYW50ZWVzXG4gICAgICogYWJvdXQgdGhlIGN1cnJlbnQgYW5kIGFsbCBmdXR1cmUgdmVyc2lvbnMgb2YgYSBbTmFtZWRQb2xpY3ldLlxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgUG9saWN5VHlwZTogXCJLZXlcIiB8IFwiUm9sZVwiIHwgXCJXYXNtXCI7XG4gICAgUHJlY29uZGl0aW9uRXJyb3JDb2RlOlxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlByZWNvbmRpdGlvbkVycm9yT3duQ29kZXNcIl1cbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQb2xpY3lFcnJvckNvZGVcIl07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgUHJlY29uZGl0aW9uRXJyb3JPd25Db2RlczpcbiAgICAgIHwgXCJGYWlsT25NZmFSZXF1aXJlZFwiXG4gICAgICB8IFwiS2V5UmVnaW9uTG9ja2VkXCJcbiAgICAgIHwgXCJLZXlSZWdpb25DaGFuZ2VkUmVjZW50bHlcIlxuICAgICAgfCBcIk1mYVJlZ2lvbkxvY2tlZFwiXG4gICAgICB8IFwiRXRoMlByb3Bvc2VyU2xvdFRvb0xvd1wiXG4gICAgICB8IFwiRXRoMkF0dGVzdGF0aW9uU291cmNlRXBvY2hUb29Mb3dcIlxuICAgICAgfCBcIkV0aDJBdHRlc3RhdGlvblRhcmdldEVwb2NoVG9vTG93XCJcbiAgICAgIHwgXCJFdGgyQ29uY3VycmVudEJsb2NrU2lnbmluZ1wiXG4gICAgICB8IFwiRXRoMkNvbmN1cnJlbnRBdHRlc3RhdGlvblNpZ25pbmdcIlxuICAgICAgfCBcIkV0aDJNdWx0aURlcG9zaXRUb05vbkdlbmVyYXRlZEtleVwiXG4gICAgICB8IFwiRXRoMk11bHRpRGVwb3NpdFVua25vd25Jbml0aWFsRGVwb3NpdFwiXG4gICAgICB8IFwiRXRoMk11bHRpRGVwb3NpdFdpdGhkcmF3YWxBZGRyZXNzTWlzbWF0Y2hcIlxuICAgICAgfCBcIkNvbmN1cnJlbnRTaWduaW5nV2hlblRpbWVMaW1pdFBvbGljeUlzRGVmaW5lZFwiXG4gICAgICB8IFwiQmFieWxvbkVvdHNDb25jdXJyZW50U2lnbmluZ1wiXG4gICAgICB8IFwiVGVuZGVybWludFN0YXRlRXJyb3JcIlxuICAgICAgfCBcIlRlbmRlcm1pbnRDb25jdXJyZW50U2lnbmluZ1wiXG4gICAgICB8IFwiTWZhQXBwcm92YWxzTm90WWV0VmFsaWRcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIENvbnRhaW5zIG91dHB1dHMgb2YgcHJldmlvdXMgdHJhbnNhY3Rpb25zLiAqL1xuICAgIFByZXZPdXRwdXRzOiBPbmVPZjxcbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBgT25lYCB2YXJpYW50IGFsbG93cyBwcm92aXNpb24gb2YgdGhlIHNpbmdsZSBwcmV2aW91cyBvdXRwdXQgbmVlZGVkLiBJdCdzIHVzZWZ1bCxcbiAgICAgICAgICAgKiBmb3IgZXhhbXBsZSwgd2hlbiBtb2RpZmllciBgU0lHSEFTSF9BTllPTkVDQU5QQVlgIGlzIHByb3ZpZGVkLCBvbmx5IHByZXZpb3VzIG91dHB1dFxuICAgICAgICAgICAqIG9mIHRoZSBjdXJyZW50IGlucHV0IGlzIG5lZWRlZC4gVGhlIGZpcnN0IGBpbmRleGAgYXJndW1lbnQgaXMgdGhlIGlucHV0IGluZGV4XG4gICAgICAgICAgICogdGhpcyBvdXRwdXQgaXMgcmVmZXJyaW5nIHRvLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIE9uZToge1xuICAgICAgICAgICAgaW5kZXg6IG51bWJlcjtcbiAgICAgICAgICAgIHR4X291dDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCdGNUeE91dFwiXTtcbiAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFdoZW4gYFNJR0hBU0hfQU5ZT05FQ0FOUEFZYCBpcyBub3QgcHJvdmlkZWQsIG9yIHdoZW4gdGhlIGNhbGxlciBpcyBnaXZpbmcgYWxsXG4gICAgICAgICAgICogcHJldmlvdXMgb3V0cHV0cyBzbyB0aGUgc2FtZSB2YXJpYWJsZSBjYW4gYmUgdXNlZCBmb3IgbXVsdGlwbGUgaW5wdXRzLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIEFsbDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCdGNUeE91dFwiXVtdO1xuICAgICAgICB9LFxuICAgICAgXVxuICAgID47XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHJlcXVlc3QgdG8gc2lnbiBhIFBTQlQgKi9cbiAgICBQc2J0U2lnblJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFJlcXVlc3QgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcmVzcG9uc2UsIGV4cGxhaW5pbmdcbiAgICAgICAqIHRoZSBvdXRjb21lIChpLmUuLCBwZXJtaXR0ZWQgdnMuIGRlbmllZCB2cy4gTUZBIHJlcXVpcmVkKSBvZiB0aGUgc2lnbiByZXF1ZXN0LlxuICAgICAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGV4cGxhaW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgTUZBIGlzIHJlcXVpcmVkLCBmYWlsIHRoZSByZXF1ZXN0IGluc3RlYWQgb2YgcmV0dXJuaW5nIDIwMiBhbmQgY3JlYXRpbmdcbiAgICAgICAqIHBlbmRpbmcgTUZBIHJlcXVlc3QuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBmYWlsX29uX21mYT86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBtZXRhZGF0YS4gUGFzc2luZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFzIG1ldGFkYXRhIGNhbiBiZSB1c2VkIHRvIG1ha2UgcmV2aWV3aW5nXG4gICAgICAgKiBvZiBwZW5kaW5nIE1GQSByZXF1ZXN0cyBhbmQvb3IgaGlzdG9yaWNhbCBrZXkgdHJhbnNhY3Rpb25zIG1vcmUgdHJhbnNwYXJlbnQuIEl0IGNhbiBhbHNvIGJlIHVzZWQgZS5nLiwgdG8gY2FycnkgYWRkaXRpb25hbCBkYXRhIHRvIFdlYkhvb2sgcG9saWNpZXMuXG4gICAgICAgKi9cbiAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBoZXgtc2VyaWFsaXplZCBQU0JUICh2ZXJzaW9uIDApLCB3aXRoIG9yIHdpdGhvdXQgbGVhZGluZyAweCBwcmVmaXguXG4gICAgICAgKiBUaGlzIFBTQlQgbXVzdCBjb250YWluIHRoZSB0cmFuc2FjdGlvbiBpbnB1dHMgYW5kIG91dHB1dHMsIHBsdXMgYWxsXG4gICAgICAgKiBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gc2lnbiAoZS5nLiwgdGFwcm9vdCBwYXRoIGFuZCBsZWFmIGluZm9ybWF0aW9uKS5cbiAgICAgICAqL1xuICAgICAgcHNidDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gV2hlbiB0cnVlLCB1bmNvbmRpdGlvbmFsbHkgc2lnbiBldmVyeSBpbnB1dCB0byB0aGUgUFNCVCBjb250cm9sbGVkIGJ5IGEgc2NyaXB0XG4gICAgICAgKiBzcGVuZC4gT3RoZXJ3aXNlIChmYWxzZSwgdGhlIGRlZmF1bHQpLCB0aGlzIGVuZHBvaW50IHVzZXMgYSBoZXVyaXN0aWMgdG8gZGVjaWRlXG4gICAgICAgKiB3aGV0aGVyIHRoZSBzY3JpcHQgY29udHJvbGxpbmcgYSBnaXZlbiBVVFhPIHJlcXVpcmVzIGEgc2lnbmF0dXJlIGZyb20gdGhpcyBrZXkuXG4gICAgICAgKi9cbiAgICAgIHNpZ25fYWxsX3NjcmlwdHM/OiBib29sZWFuO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0byBhIFBTQlQgc2lnbmluZyByZXF1ZXN0ICovXG4gICAgUHNidFNpZ25SZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY3kgZXZhbHVhdGlvbiB0cmVlLiAqL1xuICAgICAgcG9saWN5X2V2YWxfdHJlZT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBQU0JUIGluIHN0YW5kYXJkIGhleCBzZXJpYWxpemF0aW9uLCB3aXRob3V0IGxlYWRpbmcgXCIweFwiLlxuICAgICAgICogQGV4YW1wbGUgNzA3MzYyNzRmZjAxMDA1ZS4uLlxuICAgICAgICovXG4gICAgICBwc2J0OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyB0eXBlIHJlcHJlc2VudHMgYSB3aXJlLWVuY29kYWJsZSBmb3JtIG9mIHRoZSBQdWJsaWNLZXlDcmVkZW50aWFsIGludGVyZmFjZVxuICAgICAqIENsaWVudHMgbWF5IG5lZWQgdG8gbWFudWFsbHkgZW5jb2RlIGludG8gdGhpcyBmb3JtYXQgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgc2VydmVyXG4gICAgICpcbiAgICAgKiBUaGUgUHVibGljS2V5Q3JlZGVudGlhbCBpbnRlcmZhY2UgaW5oZXJpdHMgZnJvbSBDcmVkZW50aWFsXG4gICAgICogW0NSRURFTlRJQUwtTUFOQUdFTUVOVC0xXSwgYW5kIGNvbnRhaW5zIHRoZSBhdHRyaWJ1dGVzIHRoYXQgYXJlIHJldHVybmVkIHRvXG4gICAgICogdGhlIGNhbGxlciB3aGVuIGEgbmV3IGNyZWRlbnRpYWwgaXMgY3JlYXRlZCwgb3IgYSBuZXcgYXNzZXJ0aW9uIGlzXG4gICAgICogcmVxdWVzdGVkLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2lmYWNlLXBrY3JlZGVudGlhbFxuICAgICAqL1xuICAgIFB1YmxpY0tleUNyZWRlbnRpYWw6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgaW50ZXJuYWwgc2xvdCBjb250YWlucyB0aGUgcmVzdWx0cyBvZiBwcm9jZXNzaW5nIGNsaWVudCBleHRlbnNpb25zXG4gICAgICAgKiByZXF1ZXN0ZWQgYnkgdGhlIFJlbHlpbmcgUGFydHkgdXBvbiB0aGUgUmVseWluZyBQYXJ0eSdzIGludm9jYXRpb24gb2ZcbiAgICAgICAqIGVpdGhlciBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKCkgb3IgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldCgpLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbC1jbGllbnRleHRlbnNpb25zcmVzdWx0cy1zbG90XG4gICAgICAgKlxuICAgICAgICogSU1QTEVNRU5UQVRJT04gTk9URTogVGhlIHR5cGUgZm9yIHRoaXMgZmllbGQgY29tZXMgZnJvbSB0aGUgdHlwZSBvZiBnZXRDbGllbnRFeHRlbnNpb25SZXN1bHRzKCkgd2hpY2ggYXMgdGhlIGZvbGxvd2luZyBkb2M6XG4gICAgICAgKlxuICAgICAgICogVGhpcyBvcGVyYXRpb24gcmV0dXJucyB0aGUgdmFsdWUgb2YgW1tjbGllbnRFeHRlbnNpb25zUmVzdWx0c11dLCB3aGljaCBpcyBhIG1hcCBjb250YWluaW5nIGV4dGVuc2lvbiBpZGVudGlmaWVyIOKGkiBjbGllbnQgZXh0ZW5zaW9uIG91dHB1dCBlbnRyaWVzIHByb2R1Y2VkIGJ5IHRoZSBleHRlbnNpb27igJlzIGNsaWVudCBleHRlbnNpb24gcHJvY2Vzc2luZy5cbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNyZWYtZm9yLWRvbS1wdWJsaWNrZXljcmVkZW50aWFsLWdldGNsaWVudGV4dGVuc2lvbnJlc3VsdHNcbiAgICAgICAqL1xuICAgICAgY2xpZW50RXh0ZW5zaW9uUmVzdWx0cz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgaW50ZXJuYWwgc2xvdCBjb250YWlucyB0aGUgY3JlZGVudGlhbCBJRCwgY2hvc2VuIGJ5IHRoZVxuICAgICAgICogYXV0aGVudGljYXRvci4gVGhlIGNyZWRlbnRpYWwgSUQgaXMgdXNlZCB0byBsb29rIHVwIGNyZWRlbnRpYWxzIGZvciB1c2UsXG4gICAgICAgKiBhbmQgaXMgdGhlcmVmb3JlIGV4cGVjdGVkIHRvIGJlIGdsb2JhbGx5IHVuaXF1ZSB3aXRoIGhpZ2ggcHJvYmFiaWxpdHlcbiAgICAgICAqIGFjcm9zcyBhbGwgY3JlZGVudGlhbHMgb2YgdGhlIHNhbWUgdHlwZSwgYWNyb3NzIGFsbCBhdXRoZW50aWNhdG9ycy5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWwtaWRlbnRpZmllci1zbG90XG4gICAgICAgKi9cbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEF1dGhlbnRpY2F0b3JzIHJlc3BvbmQgdG8gUmVseWluZyBQYXJ0eSByZXF1ZXN0cyBieSByZXR1cm5pbmcgYW4gb2JqZWN0IGRlcml2ZWQgZnJvbSB0aGUgQXV0aGVudGljYXRvclJlc3BvbnNlIGludGVyZmFjZSAqL1xuICAgICAgcmVzcG9uc2U6XG4gICAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZVwiXVxuICAgICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIERlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyBwdWJsaWMga2V5IGNyZWRlbnRpYWxcbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkaWN0ZGVmLXB1YmxpY2tleWNyZWRlbnRpYWxjcmVhdGlvbm9wdGlvbnNcbiAgICAgKi9cbiAgICBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOiB7XG4gICAgICBhdHRlc3RhdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZVwiXTtcbiAgICAgIGF1dGhlbnRpY2F0b3JTZWxlY3Rpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF1dGhlbnRpY2F0b3JTZWxlY3Rpb25Dcml0ZXJpYVwiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1lbWJlciBjb250YWlucyBhIGNoYWxsZW5nZSBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciBnZW5lcmF0aW5nIHRoZVxuICAgICAgICogbmV3bHkgY3JlYXRlZCBjcmVkZW50aWFs4oCZcyBhdHRlc3RhdGlvbiBvYmplY3QuIFNlZSB0aGUgwqfigK8xMy40LjNcbiAgICAgICAqIENyeXB0b2dyYXBoaWMgQ2hhbGxlbmdlcyBzZWN1cml0eSBjb25zaWRlcmF0aW9uLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbGNyZWF0aW9ub3B0aW9ucy1jaGFsbGVuZ2VcbiAgICAgICAqL1xuICAgICAgY2hhbGxlbmdlOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1lbWJlciBpcyBpbnRlbmRlZCBmb3IgdXNlIGJ5IFJlbHlpbmcgUGFydGllcyB0aGF0IHdpc2ggdG8gbGltaXRcbiAgICAgICAqIHRoZSBjcmVhdGlvbiBvZiBtdWx0aXBsZSBjcmVkZW50aWFscyBmb3IgdGhlIHNhbWUgYWNjb3VudCBvbiBhIHNpbmdsZVxuICAgICAgICogYXV0aGVudGljYXRvci4gVGhlIGNsaWVudCBpcyByZXF1ZXN0ZWQgdG8gcmV0dXJuIGFuIGVycm9yIGlmIHRoZSBuZXdcbiAgICAgICAqIGNyZWRlbnRpYWwgd291bGQgYmUgY3JlYXRlZCBvbiBhbiBhdXRoZW50aWNhdG9yIHRoYXQgYWxzbyBjb250YWlucyBvbmVcbiAgICAgICAqIG9mIHRoZSBjcmVkZW50aWFscyBlbnVtZXJhdGVkIGluIHRoaXMgcGFyYW1ldGVyLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbGNyZWF0aW9ub3B0aW9ucy1leGNsdWRlY3JlZGVudGlhbHNcbiAgICAgICAqL1xuICAgICAgZXhjbHVkZUNyZWRlbnRpYWxzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvclwiXVtdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZW1iZXIgY29udGFpbnMgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIHJlcXVlc3RpbmcgYWRkaXRpb25hbFxuICAgICAgICogcHJvY2Vzc2luZyBieSB0aGUgY2xpZW50IGFuZCBhdXRoZW50aWNhdG9yLiBGb3IgZXhhbXBsZSwgdGhlIGNhbGxlciBtYXlcbiAgICAgICAqIHJlcXVlc3QgdGhhdCBvbmx5IGF1dGhlbnRpY2F0b3JzIHdpdGggY2VydGFpbiBjYXBhYmlsaXRpZXMgYmUgdXNlZCB0b1xuICAgICAgICogY3JlYXRlIHRoZSBjcmVkZW50aWFsLCBvciB0aGF0IHBhcnRpY3VsYXIgaW5mb3JtYXRpb24gYmUgcmV0dXJuZWQgaW4gdGhlXG4gICAgICAgKiBhdHRlc3RhdGlvbiBvYmplY3QuIFNvbWUgZXh0ZW5zaW9ucyBhcmUgZGVmaW5lZCBpbiDCp+KArzkgV2ViQXV0aG5cbiAgICAgICAqIEV4dGVuc2lvbnM7IGNvbnN1bHQgdGhlIElBTkEgXCJXZWJBdXRobiBFeHRlbnNpb24gSWRlbnRpZmllcnNcIiByZWdpc3RyeVxuICAgICAgICogW0lBTkEtV2ViQXV0aG4tUmVnaXN0cmllc10gZXN0YWJsaXNoZWQgYnkgW1JGQzg4MDldIGZvciBhbiB1cC10by1kYXRlXG4gICAgICAgKiBsaXN0IG9mIHJlZ2lzdGVyZWQgV2ViQXV0aG4gRXh0ZW5zaW9ucy5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxjcmVhdGlvbm9wdGlvbnMtZXh0ZW5zaW9uc1xuICAgICAgICovXG4gICAgICBleHRlbnNpb25zPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZW1iZXIgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRlc2lyZWQgcHJvcGVydGllcyBvZiB0aGVcbiAgICAgICAqIGNyZWRlbnRpYWwgdG8gYmUgY3JlYXRlZC4gVGhlIHNlcXVlbmNlIGlzIG9yZGVyZWQgZnJvbSBtb3N0IHByZWZlcnJlZCB0b1xuICAgICAgICogbGVhc3QgcHJlZmVycmVkLiBUaGUgY2xpZW50IG1ha2VzIGEgYmVzdC1lZmZvcnQgdG8gY3JlYXRlIHRoZSBtb3N0XG4gICAgICAgKiBwcmVmZXJyZWQgY3JlZGVudGlhbCB0aGF0IGl0IGNhbi5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxjcmVhdGlvbm9wdGlvbnMtcHVia2V5Y3JlZHBhcmFtc1xuICAgICAgICovXG4gICAgICBwdWJLZXlDcmVkUGFyYW1zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxQYXJhbWV0ZXJzXCJdW107XG4gICAgICBycDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsUnBFbnRpdHlcIl07XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1lbWJlciBzcGVjaWZpZXMgYSB0aW1lLCBpbiBtaWxsaXNlY29uZHMsIHRoYXQgdGhlIGNhbGxlciBpc1xuICAgICAgICogd2lsbGluZyB0byB3YWl0IGZvciB0aGUgY2FsbCB0byBjb21wbGV0ZS4gVGhpcyBpcyB0cmVhdGVkIGFzIGEgaGludCwgYW5kXG4gICAgICAgKiBNQVkgYmUgb3ZlcnJpZGRlbiBieSB0aGUgY2xpZW50LlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbGNyZWF0aW9ub3B0aW9ucy10aW1lb3V0XG4gICAgICAgKi9cbiAgICAgIHRpbWVvdXQ/OiBudW1iZXIgfCBudWxsO1xuICAgICAgdXNlcjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsVXNlckVudGl0eVwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGRpY3Rpb25hcnkgY29udGFpbnMgdGhlIGF0dHJpYnV0ZXMgdGhhdCBhcmUgc3BlY2lmaWVkIGJ5IGEgY2FsbGVyIHdoZW5cbiAgICAgKiByZWZlcnJpbmcgdG8gYSBwdWJsaWMga2V5IGNyZWRlbnRpYWwgYXMgYW4gaW5wdXQgcGFyYW1ldGVyIHRvIHRoZSBjcmVhdGUoKVxuICAgICAqIG9yIGdldCgpIG1ldGhvZHMuIEl0IG1pcnJvcnMgdGhlIGZpZWxkcyBvZiB0aGUgUHVibGljS2V5Q3JlZGVudGlhbCBvYmplY3RcbiAgICAgKiByZXR1cm5lZCBieSB0aGUgbGF0dGVyIG1ldGhvZHMuXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZGljdGlvbmFyeS1jcmVkZW50aWFsLWRlc2NyaXB0b3JcbiAgICAgKi9cbiAgICBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvcjoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZW1iZXIgY29udGFpbnMgdGhlIGNyZWRlbnRpYWwgSUQgb2YgdGhlIHB1YmxpYyBrZXkgY3JlZGVudGlhbCB0aGUgY2FsbGVyIGlzIHJlZmVycmluZyB0by5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxkZXNjcmlwdG9yLWlkXG4gICAgICAgKi9cbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIE9QVElPTkFMIG1lbWJlciBjb250YWlucyBhIGhpbnQgYXMgdG8gaG93IHRoZSBjbGllbnQgbWlnaHRcbiAgICAgICAqIGNvbW11bmljYXRlIHdpdGggdGhlIG1hbmFnaW5nIGF1dGhlbnRpY2F0b3Igb2YgdGhlIHB1YmxpYyBrZXkgY3JlZGVudGlhbFxuICAgICAgICogdGhlIGNhbGxlciBpcyByZWZlcnJpbmcgdG8uIFRoZSB2YWx1ZXMgU0hPVUxEIGJlIG1lbWJlcnMgb2ZcbiAgICAgICAqIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQgYnV0IGNsaWVudCBwbGF0Zm9ybXMgTVVTVCBpZ25vcmUgdW5rbm93biB2YWx1ZXMuXG4gICAgICAgKlxuICAgICAgICogVGhlIGdldFRyYW5zcG9ydHMoKSBvcGVyYXRpb24gY2FuIHByb3ZpZGUgc3VpdGFibGUgdmFsdWVzIGZvciB0aGlzXG4gICAgICAgKiBtZW1iZXIuIFdoZW4gcmVnaXN0ZXJpbmcgYSBuZXcgY3JlZGVudGlhbCwgdGhlIFJlbHlpbmcgUGFydHkgU0hPVUxEXG4gICAgICAgKiBzdG9yZSB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbSBnZXRUcmFuc3BvcnRzKCkuIFdoZW4gY3JlYXRpbmcgYVxuICAgICAgICogUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3IgZm9yIHRoYXQgY3JlZGVudGlhbCwgdGhlIFJlbHlpbmcgUGFydHlcbiAgICAgICAqIFNIT1VMRCByZXRyaWV2ZSB0aGF0IHN0b3JlZCB2YWx1ZSBhbmQgc2V0IGl0IGFzIHRoZSB2YWx1ZSBvZiB0aGVcbiAgICAgICAqIHRyYW5zcG9ydHMgbWVtYmVyLlxuICAgICAgICovXG4gICAgICB0cmFuc3BvcnRzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBdXRoZW50aWNhdG9yVHJhbnNwb3J0XCJdW10gfCBudWxsO1xuICAgICAgdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsVHlwZVwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGRpY3Rpb25hcnkgaXMgdXNlZCB0byBzdXBwbHkgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIHdoZW4gY3JlYXRpbmcgYSBuZXdcbiAgICAgKiBjcmVkZW50aWFsLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RpY3Rpb25hcnktY3JlZGVudGlhbC1wYXJhbXNcbiAgICAgKi9cbiAgICBQdWJsaWNLZXlDcmVkZW50aWFsUGFyYW1ldGVyczoge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZW1iZXIgc3BlY2lmaWVzIHRoZSBjcnlwdG9ncmFwaGljIHNpZ25hdHVyZSBhbGdvcml0aG0gd2l0aCB3aGljaFxuICAgICAgICogdGhlIG5ld2x5IGdlbmVyYXRlZCBjcmVkZW50aWFsIHdpbGwgYmUgdXNlZCwgYW5kIHRodXMgYWxzbyB0aGUgdHlwZSBvZlxuICAgICAgICogYXN5bW1ldHJpYyBrZXkgcGFpciB0byBiZSBnZW5lcmF0ZWQsIGUuZy4sIFJTQSBvciBFbGxpcHRpYyBDdXJ2ZS5cbiAgICAgICAqL1xuICAgICAgYWxnOiBudW1iZXI7XG4gICAgICB0eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxUeXBlXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSBgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zYCBkaWN0aW9uYXJ5IHN1cHBsaWVzIGdldCgpIHdpdGggdGhlXG4gICAgICogZGF0YSBpdCBuZWVkcyB0byBnZW5lcmF0ZSBhbiBhc3NlcnRpb24uIEl0cyBjaGFsbGVuZ2UgbWVtYmVyIE1VU1QgYmVcbiAgICAgKiBwcmVzZW50LCB3aGlsZSBpdHMgb3RoZXIgbWVtYmVycyBhcmUgT1BUSU9OQUwuXG4gICAgICpcbiAgICAgKiBUaGlzIHN0cnVjdCBpcyBhbHNvIHVzZWQgYXMgcGFydCBvZiB0aGUgdmVyaWZpY2F0aW9uIHByb2NlZHVyZSBmb3IgYXNzZXJ0aW9uc1xuICAgICAqL1xuICAgIFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBPUFRJT05BTCBtZW1iZXIgY29udGFpbnMgYSBsaXN0IG9mIFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yXG4gICAgICAgKiBvYmplY3RzIHJlcHJlc2VudGluZyBwdWJsaWMga2V5IGNyZWRlbnRpYWxzIGFjY2VwdGFibGUgdG8gdGhlIGNhbGxlciwgaW5cbiAgICAgICAqIGRlc2NlbmRpbmcgb3JkZXIgb2YgdGhlIGNhbGxlcuKAmXMgcHJlZmVyZW5jZSAodGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3RcbiAgICAgICAqIGlzIHRoZSBtb3N0IHByZWZlcnJlZCBjcmVkZW50aWFsLCBhbmQgc28gb24gZG93biB0aGUgbGlzdCkuXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFscmVxdWVzdG9wdGlvbnMtYWxsb3djcmVkZW50aWFsc1xuICAgICAgICovXG4gICAgICBhbGxvd0NyZWRlbnRpYWxzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvclwiXVtdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZW1iZXIgcmVwcmVzZW50cyBhIGNoYWxsZW5nZSB0aGF0IHRoZSBzZWxlY3RlZCBhdXRoZW50aWNhdG9yXG4gICAgICAgKiBzaWducywgYWxvbmcgd2l0aCBvdGhlciBkYXRhLCB3aGVuIHByb2R1Y2luZyBhbiBhdXRoZW50aWNhdGlvblxuICAgICAgICogYXNzZXJ0aW9uLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbHJlcXVlc3RvcHRpb25zLWNoYWxsZW5nZVxuICAgICAgICovXG4gICAgICBjaGFsbGVuZ2U6IHN0cmluZztcbiAgICAgIGV4dGVuc2lvbnM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIE9QVElPTkFMIG1lbWJlciBzcGVjaWZpZXMgdGhlIHJlbHlpbmcgcGFydHkgaWRlbnRpZmllciBjbGFpbWVkIGJ5XG4gICAgICAgKiB0aGUgY2FsbGVyLiBJZiBvbWl0dGVkLCBpdHMgdmFsdWUgd2lsbCBiZSB0aGUgQ3JlZGVudGlhbHNDb250YWluZXJcbiAgICAgICAqIG9iamVjdOKAmXMgcmVsZXZhbnQgc2V0dGluZ3Mgb2JqZWN0J3Mgb3JpZ2luJ3MgZWZmZWN0aXZlIGRvbWFpbi5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxyZXF1ZXN0b3B0aW9ucy1ycGlkXG4gICAgICAgKi9cbiAgICAgIHJwSWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBPUFRJT05BTCBtZW1iZXIgc3BlY2lmaWVzIGEgdGltZSwgaW4gbWlsbGlzZWNvbmRzLCB0aGF0IHRoZSBjYWxsZXJcbiAgICAgICAqIGlzIHdpbGxpbmcgdG8gd2FpdCBmb3IgdGhlIGNhbGwgdG8gY29tcGxldGUuIFRoZSB2YWx1ZSBpcyB0cmVhdGVkIGFzIGFcbiAgICAgICAqIGhpbnQsIGFuZCBNQVkgYmUgb3ZlcnJpZGRlbiBieSB0aGUgY2xpZW50LlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbHJlcXVlc3RvcHRpb25zLXRpbWVvdXRcbiAgICAgICAqL1xuICAgICAgdGltZW91dD86IG51bWJlciB8IG51bGw7XG4gICAgICB1c2VyVmVyaWZpY2F0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnRcIl07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFB1YmxpY0tleUNyZWRlbnRpYWxScEVudGl0eSBkaWN0aW9uYXJ5IGlzIHVzZWQgdG8gc3VwcGx5IGFkZGl0aW9uYWxcbiAgICAgKiBSZWx5aW5nIFBhcnR5IGF0dHJpYnV0ZXMgd2hlbiBjcmVhdGluZyBhIG5ldyBjcmVkZW50aWFsLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RpY3Rpb25hcnktcnAtY3JlZGVudGlhbC1wYXJhbXNcbiAgICAgKi9cbiAgICBQdWJsaWNLZXlDcmVkZW50aWFsUnBFbnRpdHk6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBSZWx5aW5nIFBhcnR5IGVudGl0eSwgd2hpY2ggc2V0cyB0aGUgUlAgSUQuXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFscnBlbnRpdHktaWRcbiAgICAgICAqL1xuICAgICAgaWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBodW1hbi1wYWxhdGFibGUgbmFtZSBmb3IgdGhlIGVudGl0eS4gSXRzIGZ1bmN0aW9uIGRlcGVuZHMgb24gd2hhdCB0aGVcbiAgICAgICAqIFB1YmxpY0tleUNyZWRlbnRpYWxFbnRpdHkgcmVwcmVzZW50czogV2hlbiBpbmhlcml0ZWQgYnlcbiAgICAgICAqIFB1YmxpY0tleUNyZWRlbnRpYWxScEVudGl0eSBpdCBpcyBhIGh1bWFuLXBhbGF0YWJsZSBpZGVudGlmaWVyIGZvciB0aGVcbiAgICAgICAqIFJlbHlpbmcgUGFydHksIGludGVuZGVkIG9ubHkgZm9yIGRpc3BsYXkuIEZvciBleGFtcGxlLCBcIkFDTUVcbiAgICAgICAqIENvcnBvcmF0aW9uXCIsIFwiV29uZGVyZnVsIFdpZGdldHMsIEluYy5cIiBvciBcItCe0JDQniDQn9GA0LjQvNC10YDRgtC10YVcIi5cbiAgICAgICAqXG4gICAgICAgKiBSZWx5aW5nIFBhcnRpZXMgU0hPVUxEIHBlcmZvcm0gZW5mb3JjZW1lbnQsIGFzIHByZXNjcmliZWQgaW4gU2VjdGlvbiAyLjNcbiAgICAgICAqIG9mIFtSRkM4MjY2XSBmb3IgdGhlIE5pY2tuYW1lIFByb2ZpbGUgb2YgdGhlIFBSRUNJUyBGcmVlZm9ybUNsYXNzXG4gICAgICAgKiBbUkZDODI2NF0sIHdoZW4gc2V0dGluZyBuYW1lJ3MgdmFsdWUsIG9yIGRpc3BsYXlpbmcgdGhlIHZhbHVlIHRvIHRoZVxuICAgICAgICogdXNlci5cbiAgICAgICAqXG4gICAgICAgKiBUaGlzIHN0cmluZyBNQVkgY29udGFpbiBsYW5ndWFnZSBhbmQgZGlyZWN0aW9uIG1ldGFkYXRhLiBSZWx5aW5nIFBhcnRpZXNcbiAgICAgICAqIFNIT1VMRCBjb25zaWRlciBwcm92aWRpbmcgdGhpcyBpbmZvcm1hdGlvbi4gU2VlIMKn4oCvNi40LjIgTGFuZ3VhZ2UgYW5kXG4gICAgICAgKiBEaXJlY3Rpb24gRW5jb2RpbmcgYWJvdXQgaG93IHRoaXMgbWV0YWRhdGEgaXMgZW5jb2RlZC5cbiAgICAgICAqL1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZW51bWVyYXRpb24gZGVmaW5lcyB0aGUgdmFsaWQgY3JlZGVudGlhbCB0eXBlcy4gSXQgaXMgYW4gZXh0ZW5zaW9uXG4gICAgICogcG9pbnQ7IHZhbHVlcyBjYW4gYmUgYWRkZWQgdG8gaXQgaW4gdGhlIGZ1dHVyZSwgYXMgbW9yZSBjcmVkZW50aWFsIHR5cGVzIGFyZVxuICAgICAqIGRlZmluZWQuIFRoZSB2YWx1ZXMgb2YgdGhpcyBlbnVtZXJhdGlvbiBhcmUgdXNlZCBmb3IgdmVyc2lvbmluZyB0aGVcbiAgICAgKiBBdXRoZW50aWNhdGlvbiBBc3NlcnRpb24gYW5kIGF0dGVzdGF0aW9uIHN0cnVjdHVyZXMgYWNjb3JkaW5nIHRvIHRoZSB0eXBlIG9mXG4gICAgICogdGhlIGF1dGhlbnRpY2F0b3IuICBDdXJyZW50bHkgb25lIGNyZWRlbnRpYWwgdHlwZSBpcyBkZWZpbmVkLCBuYW1lbHlcbiAgICAgKiBcInB1YmxpYy1rZXlcIi5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNlbnVtZGVmLXB1YmxpY2tleWNyZWRlbnRpYWx0eXBlXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBQdWJsaWNLZXlDcmVkZW50aWFsVHlwZTogXCJwdWJsaWMta2V5XCI7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSBQdWJsaWNLZXlDcmVkZW50aWFsVXNlckVudGl0eSBkaWN0aW9uYXJ5IGlzIHVzZWQgdG8gc3VwcGx5IGFkZGl0aW9uYWxcbiAgICAgKiB1c2VyIGFjY291bnQgYXR0cmlidXRlcyB3aGVuIGNyZWF0aW5nIGEgbmV3IGNyZWRlbnRpYWwuXG4gICAgICovXG4gICAgUHVibGljS2V5Q3JlZGVudGlhbFVzZXJFbnRpdHk6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcGFsYXRhYmxlIG5hbWUgZm9yIHRoZSB1c2VyIGFjY291bnQsIGludGVuZGVkIG9ubHkgZm9yIGRpc3BsYXkuXG4gICAgICAgKiBGb3IgZXhhbXBsZSwgXCJBbGV4IE3DvGxsZXJcIiBvciBcIueUsOS4reWAq1wiLiBUaGUgUmVseWluZyBQYXJ0eSBTSE9VTEQgbGV0IHRoZVxuICAgICAgICogdXNlciBjaG9vc2UgdGhpcywgYW5kIFNIT1VMRCBOT1QgcmVzdHJpY3QgdGhlIGNob2ljZSBtb3JlIHRoYW5cbiAgICAgICAqIG5lY2Vzc2FyeS5cbiAgICAgICAqXG4gICAgICAgKiBSZWx5aW5nIFBhcnRpZXMgU0hPVUxEIHBlcmZvcm0gZW5mb3JjZW1lbnQsIGFzIHByZXNjcmliZWQgaW4gU2VjdGlvbiAyLjNcbiAgICAgICAqIG9mIFtSRkM4MjY2XSBmb3IgdGhlIE5pY2tuYW1lIFByb2ZpbGUgb2YgdGhlIFBSRUNJUyBGcmVlZm9ybUNsYXNzXG4gICAgICAgKiBbUkZDODI2NF0sIHdoZW4gc2V0dGluZyBkaXNwbGF5TmFtZSdzIHZhbHVlLCBvciBkaXNwbGF5aW5nIHRoZSB2YWx1ZSB0b1xuICAgICAgICogdGhlIHVzZXIuXG4gICAgICAgKlxuICAgICAgICogVGhpcyBzdHJpbmcgTUFZIGNvbnRhaW4gbGFuZ3VhZ2UgYW5kIGRpcmVjdGlvbiBtZXRhZGF0YS4gUmVseWluZyBQYXJ0aWVzXG4gICAgICAgKiBTSE9VTEQgY29uc2lkZXIgcHJvdmlkaW5nIHRoaXMgaW5mb3JtYXRpb24uIFNlZSDCp+KArzYuNC4yIExhbmd1YWdlIGFuZFxuICAgICAgICogRGlyZWN0aW9uIEVuY29kaW5nIGFib3V0IGhvdyB0aGlzIG1ldGFkYXRhIGlzIGVuY29kZWQuXG4gICAgICAgKlxuICAgICAgICogQ2xpZW50cyBTSE9VTEQgcGVyZm9ybSBlbmZvcmNlbWVudCwgYXMgcHJlc2NyaWJlZCBpbiBTZWN0aW9uIDIuMyBvZlxuICAgICAgICogW1JGQzgyNjZdIGZvciB0aGUgTmlja25hbWUgUHJvZmlsZSBvZiB0aGUgUFJFQ0lTIEZyZWVmb3JtQ2xhc3NcbiAgICAgICAqIFtSRkM4MjY0XSwgb24gZGlzcGxheU5hbWUncyB2YWx1ZSBwcmlvciB0byBkaXNwbGF5aW5nIHRoZSB2YWx1ZSB0byB0aGVcbiAgICAgICAqIHVzZXIgb3IgaW5jbHVkaW5nIHRoZSB2YWx1ZSBhcyBhIHBhcmFtZXRlciBvZiB0aGVcbiAgICAgICAqIGF1dGhlbnRpY2F0b3JNYWtlQ3JlZGVudGlhbCBvcGVyYXRpb24uXG4gICAgICAgKlxuICAgICAgICogV2hlbiBjbGllbnRzLCBjbGllbnQgcGxhdGZvcm1zLCBvciBhdXRoZW50aWNhdG9ycyBkaXNwbGF5IGFcbiAgICAgICAqIGRpc3BsYXlOYW1lJ3MgdmFsdWUsIHRoZXkgc2hvdWxkIGFsd2F5cyB1c2UgVUkgZWxlbWVudHMgdG8gcHJvdmlkZSBhXG4gICAgICAgKiBjbGVhciBib3VuZGFyeSBhcm91bmQgdGhlIGRpc3BsYXllZCB2YWx1ZSwgYW5kIG5vdCBhbGxvdyBvdmVyZmxvdyBpbnRvXG4gICAgICAgKiBvdGhlciBlbGVtZW50cyBbY3NzLW92ZXJmbG93LTNdLlxuICAgICAgICpcbiAgICAgICAqIEF1dGhlbnRpY2F0b3JzIE1VU1QgYWNjZXB0IGFuZCBzdG9yZSBhIDY0LWJ5dGUgbWluaW11bSBsZW5ndGggZm9yIGFcbiAgICAgICAqIGRpc3BsYXlOYW1lIG1lbWJlcuKAmXMgdmFsdWUuIEF1dGhlbnRpY2F0b3JzIE1BWSB0cnVuY2F0ZSBhIGRpc3BsYXlOYW1lXG4gICAgICAgKiBtZW1iZXLigJlzIHZhbHVlIHNvIHRoYXQgaXQgZml0cyB3aXRoaW4gNjQgYnl0ZXMuIFNlZSDCp+KArzYuNC4xIFN0cmluZ1xuICAgICAgICogVHJ1bmNhdGlvbiBhYm91dCB0cnVuY2F0aW9uIGFuZCBvdGhlciBjb25zaWRlcmF0aW9ucy5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWx1c2VyZW50aXR5LWRpc3BsYXluYW1lXG4gICAgICAgKi9cbiAgICAgIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdXNlciBoYW5kbGUgb2YgdGhlIHVzZXIgYWNjb3VudCBlbnRpdHkuIEEgdXNlciBoYW5kbGUgaXMgYW4gb3BhcXVlXG4gICAgICAgKiBieXRlIHNlcXVlbmNlIHdpdGggYSBtYXhpbXVtIHNpemUgb2YgNjQgYnl0ZXMsIGFuZCBpcyBub3QgbWVhbnQgdG8gYmVcbiAgICAgICAqIGRpc3BsYXllZCB0byB0aGUgdXNlci5cbiAgICAgICAqXG4gICAgICAgKiBUbyBlbnN1cmUgc2VjdXJlIG9wZXJhdGlvbiwgYXV0aGVudGljYXRpb24gYW5kIGF1dGhvcml6YXRpb24gZGVjaXNpb25zXG4gICAgICAgKiBNVVNUIGJlIG1hZGUgb24gdGhlIGJhc2lzIG9mIHRoaXMgaWQgbWVtYmVyLCBub3QgdGhlIGRpc3BsYXlOYW1lIG5vclxuICAgICAgICogbmFtZSBtZW1iZXJzLiBTZWUgU2VjdGlvbiA2LjEgb2YgW1JGQzgyNjZdLlxuICAgICAgICpcbiAgICAgICAqIFRoZSB1c2VyIGhhbmRsZSBNVVNUIE5PVCBjb250YWluIHBlcnNvbmFsbHkgaWRlbnRpZnlpbmcgaW5mb3JtYXRpb25cbiAgICAgICAqIGFib3V0IHRoZSB1c2VyLCBzdWNoIGFzIGEgdXNlcm5hbWUgb3IgZS1tYWlsIGFkZHJlc3M7IHNlZSDCp+KArzE0LjYuMSBVc2VyXG4gICAgICAgKiBIYW5kbGUgQ29udGVudHMgZm9yIGRldGFpbHMuIFRoZSB1c2VyIGhhbmRsZSBNVVNUIE5PVCBiZSBlbXB0eSwgdGhvdWdoXG4gICAgICAgKiBpdCBNQVkgYmUgbnVsbC5cbiAgICAgICAqXG4gICAgICAgKiBOb3RlOiB0aGUgdXNlciBoYW5kbGUgb3VnaHQgbm90IGJlIGEgY29uc3RhbnQgdmFsdWUgYWNyb3NzIGRpZmZlcmVudFxuICAgICAgICogYWNjb3VudHMsIGV2ZW4gZm9yIG5vbi1kaXNjb3ZlcmFibGUgY3JlZGVudGlhbHMsIGJlY2F1c2Ugc29tZVxuICAgICAgICogYXV0aGVudGljYXRvcnMgYWx3YXlzIGNyZWF0ZSBkaXNjb3ZlcmFibGUgY3JlZGVudGlhbHMuIFRodXMgYSBjb25zdGFudFxuICAgICAgICogdXNlciBoYW5kbGUgd291bGQgcHJldmVudCBhIHVzZXIgZnJvbSB1c2luZyBzdWNoIGFuIGF1dGhlbnRpY2F0b3Igd2l0aFxuICAgICAgICogbW9yZSB0aGFuIG9uZSBhY2NvdW50IGF0IHRoZSBSZWx5aW5nIFBhcnR5LlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbHVzZXJlbnRpdHktaWRcbiAgICAgICAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFdoZW4gaW5oZXJpdGVkIGJ5IFB1YmxpY0tleUNyZWRlbnRpYWxVc2VyRW50aXR5LCBpdCBpcyBhIGh1bWFuLXBhbGF0YWJsZVxuICAgICAgICogaWRlbnRpZmllciBmb3IgYSB1c2VyIGFjY291bnQuIEl0IGlzIGludGVuZGVkIG9ubHkgZm9yIGRpc3BsYXksIGkuZS4sXG4gICAgICAgKiBhaWRpbmcgdGhlIHVzZXIgaW4gZGV0ZXJtaW5pbmcgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB1c2VyIGFjY291bnRzIHdpdGhcbiAgICAgICAqIHNpbWlsYXIgZGlzcGxheU5hbWVzLiBGb3IgZXhhbXBsZSwgXCJhbGV4bVwiLCBcImFsZXgubXVlbGxlckBleGFtcGxlLmNvbVwiXG4gICAgICAgKiBvciBcIisxNDI1NTU1MTIzNFwiLlxuICAgICAgICpcbiAgICAgICAqIFRoZSBSZWx5aW5nIFBhcnR5IE1BWSBsZXQgdGhlIHVzZXIgY2hvb3NlIHRoaXMgdmFsdWUuIFRoZSBSZWx5aW5nIFBhcnR5XG4gICAgICAgKiBTSE9VTEQgcGVyZm9ybSBlbmZvcmNlbWVudCwgYXMgcHJlc2NyaWJlZCBpbiBTZWN0aW9uIDMuNC4zIG9mIFtSRkM4MjY1XVxuICAgICAgICogZm9yIHRoZSBVc2VybmFtZUNhc2VQcmVzZXJ2ZWQgUHJvZmlsZSBvZiB0aGUgUFJFQ0lTIElkZW50aWZpZXJDbGFzc1xuICAgICAgICogW1JGQzgyNjRdLCB3aGVuIHNldHRpbmcgbmFtZSdzIHZhbHVlLCBvciBkaXNwbGF5aW5nIHRoZSB2YWx1ZSB0byB0aGVcbiAgICAgICAqIHVzZXIuXG4gICAgICAgKlxuICAgICAgICogVGhpcyBzdHJpbmcgTUFZIGNvbnRhaW4gbGFuZ3VhZ2UgYW5kIGRpcmVjdGlvbiBtZXRhZGF0YS4gUmVseWluZyBQYXJ0aWVzXG4gICAgICAgKiBTSE9VTEQgY29uc2lkZXIgcHJvdmlkaW5nIHRoaXMgaW5mb3JtYXRpb24uIFNlZSDCp+KArzYuNC4yIExhbmd1YWdlIGFuZFxuICAgICAgICogRGlyZWN0aW9uIEVuY29kaW5nIGFib3V0IGhvdyB0aGlzIG1ldGFkYXRhIGlzIGVuY29kZWQuXG4gICAgICAgKlxuICAgICAgICogQ2xpZW50cyBTSE9VTEQgcGVyZm9ybSBlbmZvcmNlbWVudCwgYXMgcHJlc2NyaWJlZCBpbiBTZWN0aW9uIDMuNC4zIG9mIFtSRkM4MjY1XSBmb3IgdGhlIFVzZXJuYW1lQ2FzZVByZXNlcnZlZCBQcm9maWxlIG9mIHRoZSBQUkVDSVMgSWRlbnRpZmllckNsYXNzIFtSRkM4MjY0XSwgb24gbmFtZSdzIHZhbHVlIHByaW9yIHRvIGRpc3BsYXlpbmcgdGhlIHZhbHVlIHRvIHRoZSB1c2VyIG9yIGluY2x1ZGluZyB0aGUgdmFsdWUgYXMgYSBwYXJhbWV0ZXIgb2YgdGhlIGF1dGhlbnRpY2F0b3JNYWtlQ3JlZGVudGlhbCBvcGVyYXRpb24uXG4gICAgICAgKi9cbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUHVibGljIGluZm9ybWF0aW9uIGFib3V0IGFuIG9yZ2FuaXphdGlvbi4gKi9cbiAgICBQdWJsaWNPcmdJbmZvOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEV4cGxpY2l0bHkgY29uZmlndXJlZCAoYWxsb3dsaXN0ZWQpIE9wZW5JRCBwcm92aWRlcnMgZm9yIGFuIG9yZyAqL1xuICAgICAgb2lkY19pc3N1ZXJzOiB7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gSW50ZW5kZWQgYXVkaWVuY2VzIChjbGllbnQgSURzKSAqL1xuICAgICAgICBhdWRpZW5jZXM6IHN0cmluZ1tdO1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIElzc3VlciBVUkwgKi9cbiAgICAgICAgaXNzdWVyOiBzdHJpbmc7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgaXNzdWVyIG5pY2tuYW1lICovXG4gICAgICAgIG5pY2tuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdXNlciByb2xlcyBhbGxvd2VkIHRvIHVzZSB0aGlzIElEUCAqL1xuICAgICAgICB1c2VyczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZW1iZXJSb2xlXCJdW107XG4gICAgICB9W107XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcmcgaWRlbnRpZmllclxuICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICovXG4gICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hldGhlciBsb2dnaW5nIGluIHdpdGgganVzdCBhIHBhc3NrZXkgaXMgYWxsb3dlZCAqL1xuICAgICAgcGFzc2tleV9sb2dpbl9lbmFibGVkOiBib29sZWFuO1xuICAgIH07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgUHVycG9zZTpcbiAgICAgIHwgXCJvdHBcIlxuICAgICAgfCBcIm1mYV9yZXNldFwiXG4gICAgICB8IFwib3RwX21mYVwiXG4gICAgICB8IFwiYWxpZW5fcGFzc3dvcmRfcmVzZXRcIlxuICAgICAgfCBcIm1lbWJlcl9wYXNzd29yZF9yZXNldFwiXG4gICAgICB8IFwiYWxpZW5faW52aXRlXCJcbiAgICAgIHwgXCJtZW1iZXJfaW52aXRlXCJcbiAgICAgIHwgXCJ3ZWxjb21lXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVxdWVzdCB0eXBlIGZvciBxdWVyeWluZyBtZXRyaWNzLiAqL1xuICAgIFF1ZXJ5TWV0cmljc1JlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIEVuZCB0aW1lIGluIHNlY29uZHMgc2luY2UgdW5peCBlcG9jaC4gSWYgb21pdHRlZCwgZGVmYXVsdHMgdG8gJ25vdycuXG4gICAgICAgKi9cbiAgICAgIGVuZF90aW1lPzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBncmFudWxhcml0eSwgaW4gc2Vjb25kcywgb2YgdGhlIHJldHVybmVkIGRhdGEgcG9pbnRzLlxuICAgICAgICpcbiAgICAgICAqIFRoaXMgdmFsdWUgaXMgYXV0b21hdGljYWxseSByb3VuZGVkIHVwIHRvIGEgbXVsdGlwbGUgb2YgMzYwMCAoaS5lLiwgMSBob3VyKS5cbiAgICAgICAqIElmIG9taXR0ZWQsIGRlZmF1bHRzIHRvIHRoZSBkdXJhdGlvbiBiZXR3ZWVuIGBlbmRfdGltZWAgYW5kIGBzdGFydF90aW1lYC5cbiAgICAgICAqIE11c3QgYmUgbm8gbGVzcyB0aGFuIDEgaG91ciAoMzYwMCBzZWNvbmRzKSBmb3IgXCJldmVudFwiIG1ldHJpY3MsIGFuZCAxIGRheVxuICAgICAgICogKDg2NDAwIHNlY29uZHMpIGZvciBcImNvdW50XCIgbWV0cmljcy4gQWxzbywgdGhpcyBwZXJpb2QgbXVzdCBub3RcbiAgICAgICAqIGRpdmlkZSB0aGUgYGVuZF90aW1lIC0gc3RhcnRfdGltZWAgcGVyaW9kIGludG8gbW9yZSB0aGFuIDEwMCBkYXRhIHBvaW50cy5cbiAgICAgICAqL1xuICAgICAgcGVyaW9kPzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFJldHVybiB0aGUgcmF3IGRhdGEgaW5zdGVhZCBvZiBjb21wdXRpbmcgdGhlIG1ldHJpYyB2YWx1ZXNcbiAgICAgICAqIChub3Qgc3VwcG9ydGVkIGJ5IGFsbCBtZXRyaWNzKS5cbiAgICAgICAqL1xuICAgICAgcmF3X2RhdGE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gU3RhcnQgdGltZSBpbiBzZWNvbmRzIHNpbmNlIHVuaXggZXBvY2guXG4gICAgICAgKi9cbiAgICAgIHN0YXJ0X3RpbWU6IG51bWJlcjtcbiAgICB9ICYge1xuICAgICAgbWV0cmljX25hbWU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWV0cmljTmFtZVwiXTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG1ldHJpYyBkYXRhIHBvaW50cy4gKi9cbiAgICBRdWVyeU1ldHJpY3NSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBZHZpc29yeSBtZXNzYWdlcyAoZS5nLiwgaWYgbWF4IG51bWJlciBvZiByZXN1bHRzIGlzIHJlYWNoZWQpLiAqL1xuICAgICAgbWVzc2FnZXM/OiBzdHJpbmdbXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwZXJpb2QgZm9yIHdoaWNoIHRoZSBzdGF0aXN0aWMgaXMgY29tcHV0ZWQsIGlmIGFueSAobm90IGFsbCBtZXRyaWNzIHN1cHBvcnQgc3BsaXR0aW5nIHRoZSByZXF1ZXN0ZWQgdGltZSByYW5nZSBpbnRvIGJpbnMpLlxuICAgICAgICogSWYgc2V0LCBlcXVhbHMgdG8gdGhlIHZhbHVlIGZyb20gdGhlIHJlcXVlc3Qgcm91bmRlZCB1cCB0byB0aGUgY2xvc2VzdCBtdWx0aXBsZSBvZiA2MC5cbiAgICAgICAqL1xuICAgICAgcGVyaW9kPzogbnVtYmVyO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBTb21lIG1ldHJpY3MgY2FuIG9wdGlvbmFsbHkgcmV0dXJuIHRoZSByYXcgZGF0YSwgd2hlbiByZXF1ZXN0ZWQuICovXG4gICAgICByYXdfZGF0YToge1xuICAgICAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gICAgICB9W107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIENvbXB1dGVkIGRhdGEgcG9pbnRzLiAqL1xuICAgICAgcmVzdWx0czoge1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBkYXRhIHBvaW50cywgb25lIGZvciBlYWNoIHRpbWUgcGVyaW9kICh0aW1lIHBlcmlvZHMgZm9yIHdoaWNoIHRoZSB2YWx1ZSBpcyAwIGFyZSBvbWl0dGVkKS4gKi9cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIFtrZXk6IHN0cmluZ106IG51bWJlcjtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbWV0cmljIGRpbWVuc2lvbnMuICovXG4gICAgICAgIGRpbWVuc2lvbnM6IHtcbiAgICAgICAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9W107XG4gICAgICBzdGF0PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPcmdNZXRyaWNTdGF0XCJdIHwgbnVsbDtcbiAgICB9O1xuICAgIFJhdGNoZXRDb25maWc6IHtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBsaWZldGltZSAoaW4gc2Vjb25kcykgb2YgYXV0aCB0b2tlbnMgZm9yIHRoaXMgc2Vzc2lvbi5cbiAgICAgICAqIEF1dGggdG9rZW5zIGNhbiBiZSByZWZyZXNoZWQgKHJlbmV3ZWQpIHVzaW5nIGEgdmFsaWQgKHVuZXhwaXJlZClcbiAgICAgICAqIHJlZnJlc2ggdG9rZW4sIGJ1dCBub3QgYmV5b25kIHRoZSBzZXNzaW9uIGxpZmV0aW1lLlxuICAgICAgICogQGRlZmF1bHQgMzAwXG4gICAgICAgKiBAZXhhbXBsZSAzNjAwXG4gICAgICAgKi9cbiAgICAgIGF1dGhfbGlmZXRpbWU/OiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgYW1vdW50IG9mIHRpbWUgKGluIHNlY29uZHMpIHRoYXQgYW4gYXV0aCB0b2tlbiBmb3IgdGhpcyBzZXNzaW9uIHJlbWFpbnNcbiAgICAgICAqIHZhbGlkIGFmdGVyIGl0IGhhcyBiZWVuIHJlZnJlc2hlZCBhbmQgYSBuZXcgYXV0aCB0b2tlbiBoYXMgYmVlbiBpc3N1ZWQuIFRoaXNcbiAgICAgICAqIGhlbHBzIHRvIGFkZHJlc3MgY29uY3VycmVuY3kgaGF6YXJkcywgZm9yIGV4YW1wbGUsIGlmIG9uZSB0aHJlYWQgbWFrZXMgcmVxdWVzdHNcbiAgICAgICAqIHdpdGggYXV0aCB0b2tlbiB3aGlsZSBhbm90aGVyIHJlZnJlc2hlcyBpdC5cbiAgICAgICAqIEBkZWZhdWx0IDMwXG4gICAgICAgKiBAZXhhbXBsZSAzMFxuICAgICAgICovXG4gICAgICBncmFjZV9saWZldGltZT86IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBsaWZldGltZSAoaW4gc2Vjb25kcykgb2YgcmVmcmVzaCB0b2tlbnMgZm9yIHRoaXMgc2Vzc2lvbi5cbiAgICAgICAqIElmIHRoaXMgdmFsdWUgaXMgc2hvcnRlciB0aGFuIHRoZSBzZXNzaW9uIGxpZmV0aW1lLCBpbmFjdGl2ZSBzZXNzaW9uc1xuICAgICAgICogd2lsbCBiZWNvbWUgaW52YWxpZCBvbmNlIHRoZSBhdXRoIGFuZCByZWZyZXNoIHRva2VucyBoYXZlIGJvdGggZXhwaXJlZC5cbiAgICAgICAqIEBkZWZhdWx0IDg2NDAwXG4gICAgICAgKiBAZXhhbXBsZSA0MzIwMFxuICAgICAgICovXG4gICAgICByZWZyZXNoX2xpZmV0aW1lPzogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGxpZmV0aW1lIChpbiBzZWNvbmRzKSBvZiB0aGUgc2Vzc2lvbi5cbiAgICAgICAqIFRoZSBzZXNzaW9uIGNhbm5vdCBiZSBleHRlbmRlZCBiZXlvbmQgaXRzIG9yaWdpbmFsIGxpZmV0aW1lLlxuICAgICAgICogQGRlZmF1bHQgMzE1MzYwMDBcbiAgICAgICAqIEBleGFtcGxlIDg2NDAwXG4gICAgICAgKi9cbiAgICAgIHNlc3Npb25fbGlmZXRpbWU/OiBudW1iZXI7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlY2VpcHQgdGhhdCBhbiBNRkEgcmVxdWVzdCB3YXMgYXBwcm92ZWQuICovXG4gICAgUmVjZWlwdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ29uZmlybWF0aW9uIGNvZGUgdGhlIHVzZXIgbmVlZHMgdG8gcHJlc2VudCB3aGVuIHJlc3VtaW5nIHRoZSBvcmlnaW5hbCByZXF1ZXN0LlxuICAgICAgICogQGV4YW1wbGUgYmExZDc1ZGQtZDk5OS00YzFiLTk0NGQtMjVjMjU0NDBjOGFmXG4gICAgICAgKi9cbiAgICAgIGNvbmZpcm1hdGlvbjogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIGxvZ2dlZC1pbiB1c2VyIHdob3NlIGFjdGlvbiBjcmVhdGVkIHRoaXMgYXBwcm92YWwuICovXG4gICAgICBmaW5hbF9hcHByb3Zlcjogc3RyaW5nO1xuICAgICAgdGltZXN0YW1wOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBSZWZyZXNoR3JhbnRUeXBlOiBcInJlZnJlc2hfdG9rZW5cIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEpTT04tUlBDIHJlcXVlc3Qgb2JqZWN0ICovXG4gICAgUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IElEICovXG4gICAgICBpZD86IHVua25vd247XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEpTT04tUlBDIHZlcnNpb24uICovXG4gICAgICBqc29ucnBjOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE5hbWUgb2YgdGhlIG1ldGhvZCB0byBiZSBpbnZva2VkLiAqL1xuICAgICAgbWV0aG9kOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFBhcmFtZXRlciB2YWx1ZXMgb2YgdGhlIHJlcXVlc3QuICovXG4gICAgICBwYXJhbXM/OiB1bmtub3duO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEFuIGV4dGVuZGVkIGZvcm0gb2YgYFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uc2AgdGhhdCBhbGxvd3MgY2xpZW50cyB0byBkZXJpdmUgdGhlIFdlYkF1dGhuIGNoYWxsZW5nZVxuICAgICAqIGZyb20gYSBzdHJ1Y3R1cmVkIHByZWltYWdlLlxuICAgICAqXG4gICAgICogVGhpcyBlbnN1cmVzIHRoYXQgdGhlIHdlYnVhdGhuIHNpZ25hdHVyZSBjYW4gb25seSBiZSB1c2VkIGZvciBhIHNwZWNpZmljIHB1cnBvc2VcbiAgICAgKi9cbiAgICBSZXF1ZXN0T3B0aW9uc1dpdGhIYXNoOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNoYWxsZW5nZVBpZWNlc1wiXSAmIHtcbiAgICAgIG9wdGlvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZW51bWVyYXRpb27igJlzIHZhbHVlcyBkZXNjcmliZSB0aGUgUmVseWluZyBQYXJ0eSdzIHJlcXVpcmVtZW50cyBmb3JcbiAgICAgKiBjbGllbnQtc2lkZSBkaXNjb3ZlcmFibGUgY3JlZGVudGlhbHMgKGZvcm1lcmx5IGtub3duIGFzIHJlc2lkZW50IGNyZWRlbnRpYWxzXG4gICAgICogb3IgcmVzaWRlbnQga2V5cyk6XG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZW51bWRlZi1yZXNpZGVudGtleXJlcXVpcmVtZW50XG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBSZXNpZGVudEtleVJlcXVpcmVtZW50OiBcImRpc2NvdXJhZ2VkXCIgfCBcInByZWZlcnJlZFwiIHwgXCJyZXF1aXJlZFwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gSlNPTi1SUEMgcmVzcG9uc2Ugb2JqZWN0ICovXG4gICAgUmVzcG9uc2U6IHtcbiAgICAgIGVycm9yPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvck9ialwiXSB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIElEIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgcmVxdWVzdCAqL1xuICAgICAgaWQ/OiB1bmtub3duO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBDb25zdGFudCBcIjIuMFwiICovXG4gICAgICBqc29ucnBjOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFJlc3VsdCwgaWYgc3VjY2VzcyAqL1xuICAgICAgcmVzdWx0PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIG1hcCBvZiBhY3Rpb25zIHRvIHNldHMgb2YgbWVtYmVyc2hpcCByb2xlcyAqL1xuICAgIFJlc3RyaWN0ZWRBY3Rpb25zTWFwOiB7XG4gICAgICBba2V5OiBzdHJpbmddOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1lbWJlclJvbGVcIl1bXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IG9mIHJvbGUgYWN0aW9ucyB0aGF0IGNhbiBiZSByZXN0cmljdGVkIHRvIGEgc2V0IG9mIG1lbWJlciByb2xlc1xuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgUm9sZUFjdGlvbjogXCJDcmVhdGVUb2tlblwiIHwgXCJHZXRLZXlcIjtcbiAgICBSb2xlSW5mbzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDb21tb25GaWVsZHNcIl0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRoZSByb2xlIGlzIGVuYWJsZWRcbiAgICAgICAqIEBleGFtcGxlIHRydWVcbiAgICAgICAqL1xuICAgICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRGVwcmVjYXRlZCBUaGUgQ3ViZVNpZ25lciBJRHMgb2YgYXQgbW9zdCAxMDAga2V5cyBhc3NvY2lhdGVkIHdpdGggdGhpcyByb2xlICovXG4gICAgICBrZXlzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJblJvbGVJbmZvXCJdW10gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGUgY3VycmVudCB1c2VyIGlzIGEgbWVtYmVyIG9mIHRoZSByb2xlLiBUaGlzIGlzIGFsd2F5cyB0cnVlLFxuICAgICAgICogZXhjZXB0IGZvciBvd25lcnMgd2hvIGNhbiBzZWUgcm9sZXMgdGhleSBhcmUgbm90IG1lbWJlcnMgb2YuXG4gICAgICAgKi9cbiAgICAgIG1lbWJlcjogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgcm9sZSAobXVzdCBiZSBhbHBoYW51bWVyaWMpXG4gICAgICAgKiBAZXhhbXBsZSBteV9yb2xlXG4gICAgICAgKi9cbiAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUG9saWN5IHRoYXQgaXMgY2hlY2tlZCB3aGVuZXZlciBhIGtleSBpcyBhY2Nlc3NlZCBmb3Igc2lnbmluZyB2aWEgdGhpcyByb2xlLlxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJTb3VyY2VJcEFsbG93bGlzdFwiOiBbXG4gICAgICAgKiAgICAgICBcIjEyMy40NTYuNzguOS8xNlwiXG4gICAgICAgKiAgICAgXVxuICAgICAgICogICB9LFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJSZXF1aXJlTWZhXCI6IHtcbiAgICAgICAqICAgICAgIFwiY291bnRcIjogMVxuICAgICAgICogICAgIH1cbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXTtcbiAgICAgIHJlc3RyaWN0ZWRfYWN0aW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSZXN0cmljdGVkQWN0aW9uc01hcFwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgcm9sZVxuICAgICAgICogQGV4YW1wbGUgUm9sZSNiZmUzZWNjYi03MzFlLTQzMGQtYjFlNS1hYzEzNjNlNmIwNmJcbiAgICAgICAqL1xuICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEZXByZWNhdGVkLiBUaGUgbGlzdCBvZiBhdCBtb3N0IDEwMCB1c2VycyB3aXRoIGFjY2VzcyB0byB0aGUgcm9sZS4gKi9cbiAgICAgIHVzZXJzPzogc3RyaW5nW10gfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgc2NvcGVzIGZvciBhY2Nlc3NpbmcgQ3ViZVNpZ25lciBBUElzICovXG4gICAgU2NvcGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXhwbGljaXRTY29wZVwiXSB8IHN0cmluZztcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgc2V0IG9mIHNjb3Blcy4gKi9cbiAgICBTY29wZVNldDogT25lT2Y8XG4gICAgICBbXG4gICAgICAgIFwiQWxsXCIsXG4gICAgICAgIHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBzY29wZXMgZXhjZXB0IHRoZXNlIChpbmNsdWRpbmcgdGhvc2UgdHJhbnNpdGl2ZWx5IGltcGxpZWQpLiAqL1xuICAgICAgICAgIEFsbEV4Y2VwdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTY29wZVwiXVtdO1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgb2YgdGhlc2Ugc2NvcGVzIChpbmNsdWRpbmcgdGhvc2UgdHJhbnNpdGl2ZWx5IGltcGxpZWQpLiAqL1xuICAgICAgICAgIEFsbE9mOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNjb3BlXCJdW107XG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgPjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIE1GQSBhcHByb3ZhbHMgcmVxdWlyZWQgZm9yIGEgZ2l2ZW4gb3BlcmF0aW9uXG4gICAgICogKGUuZy4gbG9naW4pLiBDYW4gYmUgdXNlZCB0byBwcm9kdWNlIGEgY29uY3JldGUgcG9saWN5IGZvciBhIGdpdmVuIHVzZXJcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIFNlY29uZEZhY3RvclJlcXVpcmVtZW50OiBcIm5vbmVcIiB8IFwiaWZfcmVnaXN0ZXJlZFwiIHwgXCJyZXF1aXJlZFwiO1xuICAgIC8qKlxuICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgKiBAZGVzY3JpcHRpb24gRHVyYXRpb24gbWVhc3VyZWQgaW4gc2Vjb25kc1xuICAgICAqIEEgd3JhcHBlciB0eXBlIGZvciBzZXJpYWxpemF0aW9uIHRoYXQgZW5jb2RlcyBhIGBEdXJhdGlvbmAgYXMgYSBgdTY0YCByZXByZXNlbnRpbmcgdGhlIG51bWJlciBvZiBzZWNvbmRzLlxuICAgICAqL1xuICAgIFNlY29uZHM6IG51bWJlcjtcbiAgICAvKipcbiAgICAgKiBTZWNyZXRBY3Rpb25cbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGFjY2Vzcy1jb250cm9sbGVkIGFjdGlvbnMgdGhhdCBjYW4gYmUgcGVyZm9ybWVkIG9uIGFuIGluZGl2aWR1YWwgcG9saWN5IHNlY3JldC5cbiAgICAgKiBAZXhhbXBsZSByZWFkOnNlY3JldFxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgU2VjcmV0QWN0aW9uOlxuICAgICAgfCBcInJlYWQ6KlwiXG4gICAgICB8IFwicmVhZDppbmZvXCJcbiAgICAgIHwgXCJyZWFkOnNlY3JldFwiXG4gICAgICB8IFwidXBkYXRlOipcIlxuICAgICAgfCBcInVwZGF0ZTpzZWNyZXRcIlxuICAgICAgfCBcInVwZGF0ZTphY2xcIlxuICAgICAgfCBcImRlbGV0ZVwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gYWJvdXQgYSBzcGVjaWZpYyBzZWNyZXQuICovXG4gICAgU2VjcmV0SW5mbzoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgYWNjZXNzLWNvbnRyb2wgZW50cmllcyBmb3IgdGhpcyBzZWNyZXQuICovXG4gICAgICBhY2w/OiB1bmtub3duW10gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmFtZSBvZiB0aGUgc2VjcmV0LiAqL1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdmFsdWUgb2YgYSBwb2xpY3kgc2VjcmV0LiAqL1xuICAgIFNlY3JldFZhbHVlOiBPbmVPZjxcbiAgICAgIFtcbiAgICAgICAgc3RyaW5nLFxuICAgICAgICB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBjbGllbnQncyBlcGhlbWVyYWwgcHVibGljIGtleSB1c2VkIHRvIGRlcml2ZSBhIHNoYXJlZCBrZXkuXG4gICAgICAgICAgICogVGhpcyBpcyBhIGJhc2U2NC1lbmNvZGVkLCBTRUMxLWVuY29kZWQgUDM4NCBwdWJsaWMga2V5LlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGNsaWVudF9wdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBlbmNyeXB0ZWQgc2VjcmV0IHZhbHVlLlxuICAgICAgICAgICAqIFRoaXMgaXMgYSBiYXNlNjQtZW5jb2RlZCBjaXBoZXJ0ZXh0LlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGVuY3J5cHRlZF92YWx1ZTogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBIHNhbHQgdmFsdWUgdXNlZCB0byBkZXJpdmUgYSBzaGFyZWQga2V5IGZvciBBRVMtR0NNLlxuICAgICAgICAgICAqIFRoaXMgaXMgYSBiYXNlNjQtZW5jb2RlZCBieXRlIHN0cmluZy5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBzYWx0OiBzdHJpbmc7XG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgPjtcbiAgICBTZXNzaW9uSW5mbzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZXNzaW9uTWV0YWRhdGFcIl0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGlvbiBkYXRlIChpbiBzZWNvbmRzIHNpbmNlIHVuaXggZXBvY2gpXG4gICAgICAgKi9cbiAgICAgIGNyZWF0ZWRfYXQ6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIEV4cGlyYXRpb24gZGF0ZSAoaW4gc2Vjb25kcyBzaW5jZSB1bml4IGVwb2NoKVxuICAgICAgICovXG4gICAgICBleHA6IG51bWJlcjtcbiAgICAgIGxhc3RfdXNlZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiV2hlcmVBbmRXaGVuXCJdIHwgbnVsbDtcbiAgICAgIGxpZmV0aW1lcz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUmF0Y2hldENvbmZpZ1wiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gZm9yIHRoZSBzZXNzaW9uXG4gICAgICAgKiBAZXhhbXBsZSBPSURDIGxvZ2luIHNlc3Npb25cbiAgICAgICAqL1xuICAgICAgcHVycG9zZTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTGlzdHMgdXNlciBwZXJtaXNzaW9uIGFuZCBhY2Nlc3MgZm9yIHRoZSBzZXNzaW9uXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwic2lnbjoqXCIsXG4gICAgICAgKiAgIFwibWFuYWdlOm1mYTp2b3RlOmNzXCJcbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgc2NvcGVzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTY29wZVwiXVtdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gU2Vzc2lvbiBJRC4gVW5pcXVlbHkgaWRlbnRpZmllcyB0aGUgc2Vzc2lvbiwgYnV0IGNhbm5vdCBiZSB1c2VkIGZvciBhdXRoLlxuICAgICAgICogQGV4YW1wbGUgNzdhYWQyMTAwYzM2MWY0OTc2MzVkZDAwNWM0ZDE1NzgxZTJlNWRmNGI5ZjQ1ZDhlNzRmMzc0MjVjYmMzMGI5ZVxuICAgICAgICovXG4gICAgICBzZXNzaW9uX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29sbGVjdGlvbiBvZiBhdHRyaWJ1dGVzIHJlbGF0ZWQgdG8gYSBTZXNzaW9uLlxuICAgICAqIFRoaXMgaXMgdGhlIGJhY2tlbmQgdmFyaWFudCBvZiBbYENsaWVudFNlc3Npb25NZXRhZGF0YWBdIGFuZCB3b3JrcyBpbiB0YW5kZW0gd2l0aCBpdHMgZnJvbnRlbmQgY291bnRlcnBhcnQuXG4gICAgICovXG4gICAgU2Vzc2lvbk1ldGFkYXRhOiB7XG4gICAgICBjbGllbnQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNsaWVudFByb2ZpbGVcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIHVzZXIgd2hvIGNyZWF0ZWQgdGhlIHNlc3Npb24uXG4gICAgICAgKiBAZXhhbXBsZSBVc2VyI2VmNDEzNmRkLWQyMmYtNDViYy1hNjVjLTEyYjRiYWE3MjlkNFxuICAgICAgICovXG4gICAgICBjcmVhdGVkX2J5Pzogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPUyBTdHJpbmcgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCBzZWUgb3NfaW5mbyBpbnN0ZWFkLiAqL1xuICAgICAgb3M/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgb3NfaW5mbz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT3NJbmZvXCJdO1xuICAgICAgc291cmNlX2lwPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTb3VyY2VJcFwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFVzZXIgYWdlbnQgdGhhdCBjcmVhdGVkIHRoZSBzZXNzaW9uLlxuICAgICAgICogQGV4YW1wbGUgTW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggeC55OyBydjo0Mi4wKSBHZWNrby8yMDEwMDEwMSBGaXJlZm94LzQyLjBcbiAgICAgICAqL1xuICAgICAgdXNlcl9hZ2VudD86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXNwb25zZSBmcm9tIGFueSBvcGVyYXRpb24gb3BlcmF0aW5nIG9uIG11bHRpcGxlIHNlc3Npb25zICovXG4gICAgU2Vzc2lvbnNSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbGlzdCBvZiBzZXNzaW9ucyAqL1xuICAgICAgc2Vzc2lvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vzc2lvbkluZm9cIl1bXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBIHJlcXVlc3QgZm9yIHNldHRpbmcgYW4gT3JnLWxldmVsIHBvbGljeSBzZWNyZXQuXG4gICAgICpcbiAgICAgKiBFaXRoZXIgYHZhbHVlYCBvciBgYWNsYCBtdXN0IGJlIHByb3ZpZGVkLlxuICAgICAqL1xuICAgIFNldFBvbGljeVNlY3JldFJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzZWNyZXQncyBhY2Nlc3MtY29udHJvbCBlbnRyaWVzLlxuICAgICAgICogQ2FuIGJlIGBOb25lYCBpZiB0aGUgcmVxdWVzdCBpcyBjcmVhdGluZyBhIHNlY3JldCB3aXRob3V0IEFDTCBvciB1cGRhdGluZyBhblxuICAgICAgICogZXhpc3Rpbmcgc2VjcmV0J3MgdmFsdWUuXG4gICAgICAgKi9cbiAgICAgIGFjbD86IHVua25vd25bXSB8IG51bGw7XG4gICAgICBpbXBvcnRfa2V5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJbXBvcnRLZXlcIl0gfCBudWxsO1xuICAgICAgdmFsdWU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlY3JldFZhbHVlXCJdIHwgbnVsbDtcbiAgICB9O1xuICAgIFNpZ25EaW1lbnNpb25zOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBzaWduIG9wZXJhdGlvbiAqL1xuICAgICAgb3BlcmF0aW9uOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBtZXRyaWNzIG11c3QgaW5jbHVkZSAnb3JnX2lkJyBhcyBhIGRpbWVuc2lvbi4gKi9cbiAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgIH07XG4gICAgU2lnblJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHBvbGljeSBldmFsdWF0aW9uIHRyZWUuICovXG4gICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICB9ICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaGV4LWVuY29kZWQgcmVzdWx0aW5nIHNpZ25hdHVyZS4gKi9cbiAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgU2lnbmF0dXJlVmVyc2lvbjogXCJlaXBfNzEyX3YzXCIgfCBcImVpcF83MTJfdjRcIiB8IFwicGVyc29uYWxfc2lnblwiO1xuICAgIFNpZ25lZE1lc3NhZ2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBhZGRyZXNzIG9mIHRoZSBzaWduZXIsIHdpdGggbGVhZGluZyAnMHgnXG4gICAgICAgKiBAZXhhbXBsZSAweDAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODlcbiAgICAgICAqL1xuICAgICAgYWRkcmVzczogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIHJlcXVlc3QgcmVjb3JkLiAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHNpZ25hdHVyZSwgaGV4IGVuY29kZWQsIHdpdGggbGVhZGluZyAnMHgnICovXG4gICAgICBzaWduYXR1cmU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgc2lnbmF0dXJlVmVyc2lvbjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTaWduYXR1cmVWZXJzaW9uXCJdO1xuICAgICAgc3RhdHVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1taVN0YXR1c1wiXTtcbiAgICB9O1xuICAgIFNpZ25lckVycm9yQ29kZTpcbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTaWduZXJFcnJvck93bkNvZGVzXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRWYWx1ZUNvZGVcIl1cbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCYWRSZXF1ZXN0RXJyb3JDb2RlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFkR2F0ZXdheUVycm9yQ29kZVwiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk5vdEZvdW5kRXJyb3JDb2RlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRm9yYmlkZGVuRXJyb3JDb2RlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVW5hdXRob3JpemVkRXJyb3JDb2RlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHJlY29uZGl0aW9uRXJyb3JDb2RlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVGltZW91dEVycm9yQ29kZVwiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbmZsaWN0RXJyb3JDb2RlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSW50ZXJuYWxFcnJvckNvZGVcIl07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgU2lnbmVyRXJyb3JPd25Db2RlczpcbiAgICAgIHwgXCJQcmVDb21wdXRlZFwiXG4gICAgICB8IFwiU3RhdHVzQ29kZVdpdGhNZXNzYWdlXCJcbiAgICAgIHwgXCJKcnBjRXJyb3JcIlxuICAgICAgfCBcIlVuaGFuZGxlZEVycm9yXCJcbiAgICAgIHwgXCJQcm94eVN0YXJ0RXJyb3JcIlxuICAgICAgfCBcIkVuY2xhdmVFcnJvclwiXG4gICAgICB8IFwiUG9saWN5RXJyb3JXaXRoRXZhbFRyZWVcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEFuc3dlciB0byBhIFNpZ24taW4gd2l0aCBFdGhlcmV1bSBjaGFsbGVuZ2UuICovXG4gICAgU2l3ZUNvbXBsZXRlUmVxdWVzdDoge1xuICAgICAgY2hhbGxlbmdlX2lkOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaGV4LWVuY29kZWQgRUlQLTE5MSBzaWduYXR1cmUgb2YgdGhlIG1lc3NhZ2UgcmV0dXJuZWQgYnkgdGhlIGNvcnJlc3BvbmRpbmcgUE9TVCAoJ2luaXQnKSBlbmRwb2ludCAqL1xuICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJldHVybmVkIHVwb24gYSBzdWNjZXNzZnVsIFNJV0UgYXV0aGVudGljYXRpb24uICovXG4gICAgU2l3ZUNvbXBsZXRlUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIE9JREMgdG9rZW4gY29ycmVzcG9uZGluZyB0byB0aGUgdXNlciB3aXRoIHRoZSByZXF1ZXN0ZWQgU0lXRSBpZGVudGl0eS4gKi9cbiAgICAgIGlkX3Rva2VuOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhbGl6ZSB0aGUgcmVxdWVzdCB0byBzaWduIGluIHdpdGggZXRoZXJldW0uIFRoZSByZXNwb25zZSB3aWxsXG4gICAgICogY29udGFpbiBhIFNJV0UgbWVzc2FnZSB0aGF0IHRoZSBjbGllbnQgaGFzIHRvIHNpZ24gYW5kIHN1Ym1pdCB2aWEgdGhlXG4gICAgICogY29ycmVzcG9uZGluZyBQQVRDSCBlbmRwb2ludCB3aXRoaW4gNSBtaW51dGVzLlxuICAgICAqL1xuICAgIFNpd2VJbml0UmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgRXRoZXJldW0gYWRkcmVzcyBwZXJmb3JtaW5nIHRoZSBzaWduaW5nIGNvbmZvcm1hbnQgdG8gY2FwaXRhbGl6YXRpb24gZW5jb2RlZCBjaGVja3N1bSBzcGVjaWZpZWQgaW4gRUlQLTU1LiAqL1xuICAgICAgYWRkcmVzczogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgUkZDIDM5ODYgYXV0aG9yaXR5IHRoYXQgaXMgcmVxdWVzdGluZyB0aGUgc2lnbmluZy4gKi9cbiAgICAgIGRvbWFpbjogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSVNPIDg2MDEgZGF0ZXRpbWUgc3RyaW5nIHRoYXQsIGlmIHByZXNlbnQsIGluZGljYXRlcyB3aGVuIHRoZSBzaWduZWQgYXV0aGVudGljYXRpb24gbWVzc2FnZSBpcyBubyBsb25nZXIgdmFsaWQuICovXG4gICAgICBleHBpcmF0aW9uX3RpbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSVNPIDg2MDEgZGF0ZXRpbWUgc3RyaW5nIHRoYXQsIGlmIHByZXNlbnQsIGluZGljYXRlcyB3aGVuIHRoZSBzaWduZWQgYXV0aGVudGljYXRpb24gbWVzc2FnZSB3aWxsIGJlY29tZSB2YWxpZC4gKi9cbiAgICAgIG5vdF9iZWZvcmU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIHN5c3RlbS1zcGVjaWZpYyBpZGVudGlmaWVyIHRoYXQgbWF5IGJlIHVzZWQgdG8gdW5pcXVlbHkgcmVmZXIgdG8gdGhlIHNpZ24taW4gcmVxdWVzdC4gKi9cbiAgICAgIHJlcXVlc3RfaWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIGxpc3Qgb2YgaW5mb3JtYXRpb24gb3IgcmVmZXJlbmNlcyB0byBpbmZvcm1hdGlvbiB0aGUgdXNlciB3aXNoZXMgdG8gaGF2ZSByZXNvbHZlZCBhcyBwYXJ0IG9mIGF1dGhlbnRpY2F0aW9uIGJ5IHRoZSByZWx5aW5nIHBhcnR5LiBUaGV5IGFyZSBleHByZXNzZWQgYXMgUkZDIDM5ODYgVVJJcyBzZXBhcmF0ZWQgYnkgXCJcXG4tIFwiIHdoZXJlIFxcbiBpcyB0aGUgYnl0ZSAweDBhLiAqL1xuICAgICAgcmVzb3VyY2VzPzogc3RyaW5nW107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcmVhZGFibGUgQVNDSUkgYXNzZXJ0aW9uIHRoYXQgdGhlIHVzZXIgd2lsbCBzaWduLCBhbmQgaXQgbXVzdCBub3QgY29udGFpbiAnXFxuJyAodGhlIGJ5dGUgMHgwYSkuICovXG4gICAgICBzdGF0ZW1lbnQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBSRkMgMzk4NiBVUkkgcmVmZXJyaW5nIHRvIHRoZSByZXNvdXJjZSB0aGF0IGlzIHRoZSBzdWJqZWN0IG9mIHRoZSBzaWduaW5nIChhcyBpbiB0aGUgc3ViamVjdCBvZiBhIGNsYWltKS4gKi9cbiAgICAgIHVyaTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEEgY2hhbGxlbmdlIHJldHVybmVkIGluIHJlc3BvbnNlIHRvIGEgU2lnbi1JbiB3aXRoIEV0aGVyZXVtIHJlcXVlc3QuXG4gICAgICpcbiAgICAgKiBDb250YWlucyBhIG1lc3NhZ2UgdGhhdCB0aGUgY2xpZW50IG11c3Qgc2lnbiBmb2xsb3dpbmcgRUlQLTE5MVxuICAgICAqIHdpdGggdGhlIHJlcXVlc3RlZCBrZXkgaW4gb3JkZXIgdG8gY29tcGxldGUgYXV0aGVudGljYXRpb24uXG4gICAgICpcbiAgICAgKiBUaGUgY2xpZW50IGhhcyB1bnRpbCB0aGUgbWVzc2FnZSBleHBpcmVzIChidXQgbm8gbW9yZSB0aGFuIDUgbWludXRlcykgdG8gY29tcGxldGUgdGhlIGNoYWxsZW5nZS5cbiAgICAgKi9cbiAgICBTaXdlSW5pdFJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgY2hhbGxlbmdlICh0byBpbmNsdWRlIGluIHRoZSByZXF1ZXN0IHdoZW4gY2FsbGluZyB0aGUgUEFUQ0ggKCdjb21wbGV0ZScpIGVuZHBvaW50KSAqL1xuICAgICAgY2hhbGxlbmdlX2lkOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBtZXNzYWdlIHRvIHNpZ24gZm9sbG93aW5nIHRoZSBFSVAtMTkxIHN0YW5kYXJkLiAqL1xuICAgICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIFNvbGFuYSBhZGRyZXNzIGFuZCB0aGUgY2x1c3RlciBpdCBpcyBvbi4gKi9cbiAgICBTb2xhbmFBZGRyZXNzSW5mbzoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFNvbGFuYSBhZGRyZXNzLlxuICAgICAgICogQGV4YW1wbGUgRVB3NExzTndDWUNZWGFjZTFCS3Z3TGNkN29lWnpSaVlHdUdFNXpmUHZvUHlcbiAgICAgICAqL1xuICAgICAgYWRkcmVzczogc3RyaW5nO1xuICAgICAgY2x1c3RlcjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTb2xhbmFDbHVzdGVyXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFN1cHBvcnRlZCBTb2xhbmEgY2x1c3RlcnMuXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBTb2xhbmFDbHVzdGVyOiBcIm1haW5uZXRcIiB8IFwiZGV2bmV0XCI7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFNvbGFuYSBzaWduaW5nIHJlcXVlc3RcbiAgICAgKiBAZXhhbXBsZSB7XG4gICAgICogICBcIm1lc3NhZ2VfYmFzZTY0XCI6IFwiQVFBQkE4T0tWekxFanN0c3RONHhYcjM5a0xLSFQ4ZDU4ZVFZMVFFczZNZVh3RUZCcnhUQWxVTFgxdHJvTGJXeHVBWFFxZ2JRb2ZHaTZ6OGZKaTdLQUFJZjdZTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUpLMHRuMzlrMjhzK1g4Nlc0N0V2YlJSS25ZQlZROFEvbDJtMUViZlQ3K3ZBUUlDQUFFTUFnQUFBR1FBQUFBQUFBQUFcIlxuICAgICAqIH1cbiAgICAgKi9cbiAgICBTb2xhbmFTaWduUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGJlIGluY2x1ZGVkIGluIHRoZSByZXNwb25zZSwgZXhwbGFpbmluZ1xuICAgICAgICogdGhlIG91dGNvbWUgKGkuZS4sIHBlcm1pdHRlZCB2cy4gZGVuaWVkIHZzLiBNRkEgcmVxdWlyZWQpIG9mIHRoZSBzaWduIHJlcXVlc3QuXG4gICAgICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZXhwbGFpbj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBNRkEgaXMgcmVxdWlyZWQsIGZhaWwgdGhlIHJlcXVlc3QgaW5zdGVhZCBvZiByZXR1cm5pbmcgMjAyIGFuZCBjcmVhdGluZ1xuICAgICAgICogcGVuZGluZyBNRkEgcmVxdWVzdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGZhaWxfb25fbWZhPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG1ldGFkYXRhLiBQYXNzaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYXMgbWV0YWRhdGEgY2FuIGJlIHVzZWQgdG8gbWFrZSByZXZpZXdpbmdcbiAgICAgICAqIG9mIHBlbmRpbmcgTUZBIHJlcXVlc3RzIGFuZC9vciBoaXN0b3JpY2FsIGtleSB0cmFuc2FjdGlvbnMgbW9yZSB0cmFuc3BhcmVudC4gSXQgY2FuIGFsc28gYmUgdXNlZCBlLmcuLCB0byBjYXJyeSBhZGRpdGlvbmFsIGRhdGEgdG8gV2ViSG9vayBwb2xpY2llcy5cbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFNvbGFuYSBiYXNlNjQtZW5jb2RlZCBzZXJpYWxpemVkIE1lc3NhZ2UgKi9cbiAgICAgIG1lc3NhZ2VfYmFzZTY0OiBzdHJpbmc7XG4gICAgfTtcbiAgICBTb2xhbmFUeENtcDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRoZSAncmVjZW50X2Jsb2NraGFzaCcgcHJvcGVydHkgb2YgdGhlIFNvbGFuYSB0cmFuc2FjdGlvbiBpcyBhbGxvd2VkIHRvIGJlIGRpZmZlcmVudC4gKi9cbiAgICAgIGlnbm9yZV9ibG9ja2hhc2g/OiBib29sZWFuO1xuICAgIH07XG4gICAgU291cmNlSXA6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIElQIGFkZHJlc3Mgb2YgdGhlIGNhbGxlci4gKi9cbiAgICAgIHNvdXJjZV9pcDogc3RyaW5nO1xuICAgIH07XG4gICAgU3Rha2VSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBleHBsYWluaW5nXG4gICAgICAgKiB0aGUgb3V0Y29tZSAoaS5lLiwgcGVybWl0dGVkIHZzLiBkZW5pZWQgdnMuIE1GQSByZXF1aXJlZCkgb2YgdGhlIHNpZ24gcmVxdWVzdC5cbiAgICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBleHBsYWluPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIE1GQSBpcyByZXF1aXJlZCwgZmFpbCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIHJldHVybmluZyAyMDIgYW5kIGNyZWF0aW5nXG4gICAgICAgKiBwZW5kaW5nIE1GQSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZmFpbF9vbl9tZmE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuIFBhc3NpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBtYWtlIHJldmlld2luZ1xuICAgICAgICogb2YgcGVuZGluZyBNRkEgcmVxdWVzdHMgYW5kL29yIGhpc3RvcmljYWwga2V5IHRyYW5zYWN0aW9ucyBtb3JlIHRyYW5zcGFyZW50LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGUuZy4sIHRvIGNhcnJ5IGFkZGl0aW9uYWwgZGF0YSB0byBXZWJIb29rIHBvbGljaWVzLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBjaGFpbiBvbiB3aGljaCB3ZSB3aWxsIGRlcG9zaXRcbiAgICAgICAqIEBleGFtcGxlIDVcbiAgICAgICAqL1xuICAgICAgY2hhaW5faWQ6IG51bWJlcjtcbiAgICAgIGRlcG9zaXRfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJEZXBvc2l0VHlwZVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHN0YWtpbmcgYW1vdW50IGluIEdXRUkuXG4gICAgICAgKiBJZiBub3Qgc3BlY2lmaWVkLCBkZWZhdWx0cyB0byAzMl8wMDBfMDAwXzAwMCAoMzIgRVRIKS5cbiAgICAgICAqIE11c3QgYmUgYmV0d2VlbiAxIEVUSCBhbmQgMzIgRVRILlxuICAgICAgICogTXVzdCBub3QgYmUgZGlmZmVyZW50IGZyb20gdGhlIGRlZmF1bHQgdmFsdWUgd2hlbiAnZGVwb3NpdF90eXBlJyBpcyBcIldyYXBwZXJcIi5cbiAgICAgICAqL1xuICAgICAgc3Rha2luZ19hbW91bnRfZ3dlaT86IG51bWJlcjtcbiAgICAgIHVuc2FmZV9jb25mPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVbnNhZmVDb25mXCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB2YWxpZGF0b3IgQkxTIHB1YmxpYyBrZXkgdG8gdXNlLCBvciBgTm9uZWAgdG8gZ2VuZXJhdGUgYSBmcmVzaCBvbmUuXG4gICAgICAgKiBAZXhhbXBsZSAweGE5OWE3NmVkNzc5NmY3YmUyMmQ1YjdlODVkZWViN2M1Njc3ZTg4ZTUxMWUwYjMzNzYxOGY4YzRlYjYxMzQ5YjRiZjJkMTUzZjY0OWY3YjUzMzU5ZmU4Yjk0YTM4ZTQ0Y1xuICAgICAgICovXG4gICAgICB2YWxpZGF0b3Jfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBldGhlcmV1bSBhZGRyZXNzIHRvIHdoaWNoIHdpdGhkcmF3biBmdW5kcyBnb1xuICAgICAgICogQGV4YW1wbGUgMHg4ZTM0ODQ2ODdlNjZjZGQyNmNmMDRjMzY0NzYzM2FiNGYzNTcwMTQ4XG4gICAgICAgKi9cbiAgICAgIHdpdGhkcmF3YWxfYWRkcjogc3RyaW5nO1xuICAgIH07XG4gICAgU3Rha2VSZXNwb25zZTogKHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWN5IGV2YWx1YXRpb24gdHJlZS4gKi9cbiAgICAgIHBvbGljeV9ldmFsX3RyZWU/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICBkZXBvc2l0X3R4OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkRlcG9zaXRUeG5cIl07XG4gICAgfSkgJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdmFsaWRhdG9yIGtleSBpZCAoXCJLZXkjLi4uXCIpXG4gICAgICAgKiBAZXhhbXBsZSBLZXkjZGIxNzMxZjgtMzY1OS00NWMwLTg4NWItZTExZTFmNWI3YmUyXG4gICAgICAgKi9cbiAgICAgIGNyZWF0ZWRfdmFsaWRhdG9yX2tleV9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgU3RhdHVzOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFVzZXJzIHdobyBhcmUgYWxsb3dlZCB0byBhcHByb3ZlLiBNdXN0IGJlIG5vbi1lbXB0eS4gKi9cbiAgICAgIGFsbG93ZWRfYXBwcm92ZXJzOiBzdHJpbmdbXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsb3dlZCBhcHByb3ZhbCB0eXBlcy4gV2hlbiBvbWl0dGVkLCBkZWZhdWx0cyB0byBhbnkuICovXG4gICAgICBhbGxvd2VkX21mYV90eXBlcz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhVHlwZVwiXVtdIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVXNlcnMgd2hvIGhhdmUgYWxyZWFkeSBhcHByb3ZlZCAqL1xuICAgICAgYXBwcm92ZWRfYnk6IHtcbiAgICAgICAgW2tleTogc3RyaW5nXToge1xuICAgICAgICAgIFtrZXk6IHN0cmluZ106IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXBwcm92YWxJbmZvXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIEhvdyBtYW55IHVzZXJzIG11c3QgYXBwcm92ZVxuICAgICAgICovXG4gICAgICBjb3VudDogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSG93IG1hbnkgYXV0aCBmYWN0b3JzIHRvIHJlcXVpcmUgcGVyIHVzZXJcbiAgICAgICAqL1xuICAgICAgbnVtX2F1dGhfZmFjdG9yczogbnVtYmVyO1xuICAgICAgcmVxdWVzdF9jb21wYXJlcj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSHR0cFJlcXVlc3RDbXBcIl07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXR1cyBvZiBhIHN1YnNjcmlwdGlvblxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgU3Vic2NyaXB0aW9uU3RhdHVzOiBcIkNvbmZpcm1lZFwiIHwgXCJQZW5kaW5nXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIFN1aSBhZGRyZXNzIGFuZCBpdHMgY2hhaW4uICovXG4gICAgU3VpQWRkcmVzc0luZm86IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBTdWkgYWRkcmVzcy5cbiAgICAgICAqIEBleGFtcGxlIDB4NGU4NzEyZTM4YjA5YjU0NjdjMTBmZGM0MGZhNzg2NWE2NTU2Mzk4M2VlYjc0YjI0NmRmOTgxZTYxYTY2Yjk4ZFxuICAgICAgICovXG4gICAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgICBjaGFpbjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTdWlDaGFpblwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTdXBwb3J0ZWQgU3VpIGNoYWlucy5cbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIFN1aUNoYWluOiBcIm1haW5uZXRcIiB8IFwiZGV2bmV0XCIgfCBcInRlc3RuZXRcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlcXVlc3QgdG8gc2lnbiBhIHNlcmlhbGl6ZWQgU1VJIHRyYW5zYWN0aW9uICovXG4gICAgU3VpU2lnblJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFJlcXVlc3QgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcmVzcG9uc2UsIGV4cGxhaW5pbmdcbiAgICAgICAqIHRoZSBvdXRjb21lIChpLmUuLCBwZXJtaXR0ZWQgdnMuIGRlbmllZCB2cy4gTUZBIHJlcXVpcmVkKSBvZiB0aGUgc2lnbiByZXF1ZXN0LlxuICAgICAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGV4cGxhaW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgTUZBIGlzIHJlcXVpcmVkLCBmYWlsIHRoZSByZXF1ZXN0IGluc3RlYWQgb2YgcmV0dXJuaW5nIDIwMiBhbmQgY3JlYXRpbmdcbiAgICAgICAqIHBlbmRpbmcgTUZBIHJlcXVlc3QuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBmYWlsX29uX21mYT86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBtZXRhZGF0YS4gUGFzc2luZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFzIG1ldGFkYXRhIGNhbiBiZSB1c2VkIHRvIG1ha2UgcmV2aWV3aW5nXG4gICAgICAgKiBvZiBwZW5kaW5nIE1GQSByZXF1ZXN0cyBhbmQvb3IgaGlzdG9yaWNhbCBrZXkgdHJhbnNhY3Rpb25zIG1vcmUgdHJhbnNwYXJlbnQuIEl0IGNhbiBhbHNvIGJlIHVzZWQgZS5nLiwgdG8gY2FycnkgYWRkaXRpb25hbCBkYXRhIHRvIFdlYkhvb2sgcG9saWNpZXMuXG4gICAgICAgKi9cbiAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQmFzZTY0LWVuY29kaW5nIG9mIGEgQkNTLXNlcmlhbGl6ZWQgU1VJIHRyYW5zYWN0aW9uLlxuICAgICAgICpcbiAgICAgICAqIFdoZW4gdXNpbmcgdGhlIFNVSSBUeXBlU2NyaXB0IFNESywgdGhlc2UgYnl0ZXNcbiAgICAgICAqIGFyZSByZXR1cm5lZCBieSB0aGUgYFRyYW5zYWN0aW9uLmJ1aWxkKClgIG1ldGhvZC5cbiAgICAgICAqL1xuICAgICAgdHg6IHN0cmluZztcbiAgICB9O1xuICAgIFRhcHJvb3RTaWduUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGJlIGluY2x1ZGVkIGluIHRoZSByZXNwb25zZSwgZXhwbGFpbmluZ1xuICAgICAgICogdGhlIG91dGNvbWUgKGkuZS4sIHBlcm1pdHRlZCB2cy4gZGVuaWVkIHZzLiBNRkEgcmVxdWlyZWQpIG9mIHRoZSBzaWduIHJlcXVlc3QuXG4gICAgICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZXhwbGFpbj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBNRkEgaXMgcmVxdWlyZWQsIGZhaWwgdGhlIHJlcXVlc3QgaW5zdGVhZCBvZiByZXR1cm5pbmcgMjAyIGFuZCBjcmVhdGluZ1xuICAgICAgICogcGVuZGluZyBNRkEgcmVxdWVzdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGZhaWxfb25fbWZhPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG1ldGFkYXRhLiBQYXNzaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYXMgbWV0YWRhdGEgY2FuIGJlIHVzZWQgdG8gbWFrZSByZXZpZXdpbmdcbiAgICAgICAqIG9mIHBlbmRpbmcgTUZBIHJlcXVlc3RzIGFuZC9vciBoaXN0b3JpY2FsIGtleSB0cmFuc2FjdGlvbnMgbW9yZSB0cmFuc3BhcmVudC4gSXQgY2FuIGFsc28gYmUgdXNlZCBlLmcuLCB0byBjYXJyeSBhZGRpdGlvbmFsIGRhdGEgdG8gV2ViSG9vayBwb2xpY2llcy5cbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICBzaWdfa2luZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUYXByb290U2lnbmF0dXJlS2luZFwiXTtcbiAgICAgIHR4OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJ0Y1R4XCJdO1xuICAgIH07XG4gICAgVGFwcm9vdFNpZ25hdHVyZUtpbmQ6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgYW5uZXgsIGFzIHBlciBCSVAzNDEgKi9cbiAgICAgIGFubmV4Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRyYW5zYWN0aW9uIGlucHV0IGluZGV4XG4gICAgICAgKiBAZXhhbXBsZSAwXG4gICAgICAgKi9cbiAgICAgIGlucHV0X2luZGV4OiBudW1iZXI7XG4gICAgICBsZWFmX2hhc2hfY29kZV9zZXBhcmF0b3I/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJ0Y0xlYWZIYXNoQ29kZVNlcGFyYXRvclwiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiB0aGlzIGZpZWxkIGlzIG5vdCBwcmVzZW50IG9yIG51bGwsIG5vIHR3ZWFrIGlzIGFwcGxpZWQuIElmIHRoZSBmaWVsZCBpcyBhblxuICAgICAgICogZW1wdHkgc3RyaW5nLCB0aGUga2V5IGlzIHR3ZWFrZWQgd2l0aCBhbiB1bnNwZW5kYWJsZSBzY3JpcHQgcGF0aCBwZXIgQklQMDM0MS5cbiAgICAgICAqIE90aGVyd2lzZSwgdGhpcyBmaWVsZCBtdXN0IGNvbnRhaW4gYSBiYXNlLTY0IHN0cmluZyBlbmNvZGluZyAzMiBieXRlcyB0aGF0XG4gICAgICAgKiByZXByZXNlbnQgdGhlIE1lcmtsZSByb290IHdpdGggd2hpY2ggdG8gdHdlYWsgdGhlIGtleSBiZWZvcmUgc2lnbmluZy5cbiAgICAgICAqIEBleGFtcGxlIEY0MUhBeTJxNUduOGxhRjJDdU1zWmJSQVFUbUQrNE9iM1ZVTVo3VEJHSzQ9XG4gICAgICAgKi9cbiAgICAgIG1lcmtsZV9yb290Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIHByZXZvdXRzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlByZXZPdXRwdXRzXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSGFzaCB0eXBlIG9mIGFuIGlucHV0J3Mgc2lnbmF0dXJlLCBlbmNvZGVkIGluIHRoZSBsYXN0IGJ5dGUgb2YgdGhlIHNpZ25hdHVyZS5cbiAgICAgICAqIFBvc3NpYmxlIHZhbHVlczpcbiAgICAgICAqIC0gU0lHSEFTSF9BTExcbiAgICAgICAqIC0gU0lHSEFTSF9BTEx8U0lHSEFTSF9BTllPTkVDQU5QQVlcbiAgICAgICAqIC0gU0lHSEFTSF9ERUZBVUxUXG4gICAgICAgKiAtIFNJR0hBU0hfTk9ORVxuICAgICAgICogLSBTSUdIQVNIX05PTkV8U0lHSEFTSF9BTllPTkVDQU5QQVlcbiAgICAgICAqIC0gU0lHSEFTSF9TSU5HTEVcbiAgICAgICAqIC0gU0lHSEFTSF9TSU5HTEV8U0lHSEFTSF9BTllPTkVDQU5QQVlcbiAgICAgICAqIEBleGFtcGxlIFNJR0hBU0hfQUxMXG4gICAgICAgKi9cbiAgICAgIHNpZ2hhc2hfdHlwZTogc3RyaW5nO1xuICAgIH07XG4gICAgVGVsZWdyYW1BdXRoUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdGVsZWdyYW0gYm90IElEICovXG4gICAgICBib3RfaWQ6IHN0cmluZztcbiAgICAgIGVudmlyb25tZW50OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRlbGVncmFtRW52aXJvbm1lbnRcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB0ZWxlZ3JhbSB3ZWJhcHAgZGF0YSAoZm91bmQgaW4gdGhlIGB0Z1dlYkFwcERhdGFgIHBhcmFtZXRlciBlbmNvZGVkIGluIHRoZSBoYXNoIHNlY3Rpb24gb2YgdGhlIFVSTCkgKi9cbiAgICAgIHRnX3dlYl9hcHBfZGF0YTogc3RyaW5nO1xuICAgIH07XG4gICAgVGVsZWdyYW1BdXRoUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIE9JREMgdG9rZW4gY29ycmVzcG9uZGluZyB0byB0aGlzIHRlbGVncmFtIHVzZXIgKi9cbiAgICAgIGlkX3Rva2VuOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGVsZWdyYW0gaGFzIHR3byBlbnZpcm9ubWVudHM6IHByb2R1Y3Rpb24gYW5kIHRlc3RcbiAgICAgKiBFYWNoIG9uZSBoYXMgYW4gYXNzb2NpYXRlZCBwdWJsaWMga2V5IGZvciB2ZXJpZnlpbmcgc2lnbmF0dXJlcyxcbiAgICAgKiBhbmQgd2UgYXNzaWduIGVhY2ggb25lIGEgdW5pcXVlIE9JREMgaXNzdWVyXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBUZWxlZ3JhbUVudmlyb25tZW50OiBcInByb2R1Y3Rpb25cIiB8IFwidGVzdFwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlcXVlc3QgZm9yIHVzaW5nIHRoZSBUZW5kZXJtaW50IHNpZ24gZW5kcG9pbnQuICovXG4gICAgVGVuZGVybWludFNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBleHBsYWluaW5nXG4gICAgICAgKiB0aGUgb3V0Y29tZSAoaS5lLiwgcGVybWl0dGVkIHZzLiBkZW5pZWQgdnMuIE1GQSByZXF1aXJlZCkgb2YgdGhlIHNpZ24gcmVxdWVzdC5cbiAgICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBleHBsYWluPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIE1GQSBpcyByZXF1aXJlZCwgZmFpbCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIHJldHVybmluZyAyMDIgYW5kIGNyZWF0aW5nXG4gICAgICAgKiBwZW5kaW5nIE1GQSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZmFpbF9vbl9tZmE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuIFBhc3NpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBtYWtlIHJldmlld2luZ1xuICAgICAgICogb2YgcGVuZGluZyBNRkEgcmVxdWVzdHMgYW5kL29yIGhpc3RvcmljYWwga2V5IHRyYW5zYWN0aW9ucyBtb3JlIHRyYW5zcGFyZW50LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGUuZy4sIHRvIGNhcnJ5IGFkZGl0aW9uYWwgZGF0YSB0byBXZWJIb29rIHBvbGljaWVzLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGJ5dGVzIG9mIHRoZSBwcm90b2J1Zi1lbmNvZGVkIG1lc3NhZ2UgdG8gc2lnbiBhcyBhIEJBU0U2NCBzdHJpbmcuICovXG4gICAgICBtZXNzYWdlX2Jhc2U2NDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIG9iamVjdCBmb3IgYSB0aHJvdHRsZSB3aGljaCBsaW1pdHMgdGhlIG51bWJlciBvZiBlbnRpdGllcyB3aXRoaW4gYSBnaXZlbiB0aW1lIHdpbmRvdyAqL1xuICAgIFRocm90dGxlQ29uZmlnOiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbnVtYmVyIG9mIGVudGl0aWVzIGFsbG93ZWQgd2l0aGluIHRoZSB3aW5kb3dcbiAgICAgICAqL1xuICAgICAgdGhyZXNob2xkOiBudW1iZXI7XG4gICAgICB3aW5kb3c6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kc1wiXTtcbiAgICB9O1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIFRpbWVvdXRFcnJvckNvZGU6IFwiUG9saWN5RW5naW5lVGltZW91dFwiIHwgXCJXYXNtUG9saWN5RXhlY3V0aW9uVGltZW91dFwiO1xuICAgIFRva2VuUmVxdWVzdDoge1xuICAgICAgZ3JhbnRfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSZWZyZXNoR3JhbnRUeXBlXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVmcmVzaCB0b2tlbiBpc3N1ZWQgdG8gdGhlIGNsaWVudC4gKi9cbiAgICAgIHJlZnJlc2hfdG9rZW46IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBPQXV0aDIgc3RhbmRhcmQgVG9rZW4gUmVzcG9uc2UuXG4gICAgICpcbiAgICAgKiBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzY3NDkjc2VjdGlvbi00LjIuMlxuICAgICAqL1xuICAgIFRva2VuUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGFjY2VzcyB0b2tlbiBpc3N1ZWQgYnkgdGhlIGF1dGhvcml6YXRpb24gc2VydmVyLiAqL1xuICAgICAgYWNjZXNzX3Rva2VuOiBzdHJpbmc7XG4gICAgICBleHBpcmVzX2luOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlY29uZHNcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFuIE9JREMgdG9rZW4gaXNzdWVkIGJ5IEN1YmlzdCwgY29udGFpbmluZyB1c2VyIGluZm9ybWF0aW9uICovXG4gICAgICBpZF90b2tlbj86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZWZyZXNoIHRva2VuIGlzc3VlZCBieSB0aGUgYXV0aG9yaXphdGlvbiBzZXJ2ZXIuICovXG4gICAgICByZWZyZXNoX3Rva2VuPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHR5cGUgb2YgdGhlIHRva2VuIGlzc3VlZC4gVmFsdWUgaXMgY2FzZSBpbnNlbnNpdGl2ZS4gKi9cbiAgICAgIHRva2VuX3R5cGU6IHN0cmluZztcbiAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgfSAmIFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICBUb3RwQXBwcm92ZVJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVE9UUCB2ZXJpZmljYXRpb24gY29kZSAqL1xuICAgICAgY29kZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBTZW50IGZyb20gdGhlIGNsaWVudCB0byB0aGUgc2VydmVyIHRvIGFuc3dlciBhIFRPVFAgY2hhbGxlbmdlICovXG4gICAgVG90cENoYWxsZW5nZUFuc3dlcjoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgY3VycmVudCBUT1RQIGNvZGUgKi9cbiAgICAgIGNvZGU6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBjaGFsbGVuZ2UgdGhhdCB3YXMgcmV0dXJuZWQgZnJvbSB0aGUgUE9TVCBlbmRwb2ludCAqL1xuICAgICAgdG90cF9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgVG90cEluZm86IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgVE9UUCBjaGFsbGVuZ2UuXG4gICAgICAgKiBAZXhhbXBsZSBUb3RwQ2hhbGxlbmdlIzc4OTJlYmJhLTU2M2UtNDg1Yi1iYjdkLWUyNjI2NzM2MzI4NlxuICAgICAgICovXG4gICAgICB0b3RwX2lkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBTdGFuZGFyZCBUT1RQIHVybCB3aGljaCBpbmNsdWRlcyBldmVyeXRoaW5nIG5lZWRlZCB0byBpbml0aWFsaXplIFRPVFAuXG4gICAgICAgKiBAZXhhbXBsZSBvdHBhdXRoOi8vdG90cC9DdWJpc3Q6YWxpY2UtJTQwZXhhbXBsZS5jb20/c2VjcmV0PURBSEY3S0NPVFFXU09NSzRYRkVNTkhYTzRKNDMzT0Q3Jmlzc3Vlcj1DdWJpc3RcbiAgICAgICAqL1xuICAgICAgdG90cF91cmw6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVxdWVzdCB0byByZXNldCBUT1RQLiAqL1xuICAgIFRvdHBSZXNldFJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG5hbWUgb2YgdGhlIGlzc3VlcjsgZGVmYXVsdHMgdG8gXCJDdWJpc3RcIi4gKi9cbiAgICAgIGlzc3Vlcj86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICBUcmFuc2FjdGlvbjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUeXBlZFRyYW5zYWN0aW9uXCJdO1xuICAgIFRyYW5zYWN0aW9uQW5kU3RhdHVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlR5cGVkVHJhbnNhY3Rpb25cIl0gJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBoYXNoIG9mIHRoZSB0cmFuc2FjdGlvbiB0aGF0IHdhcyBzaWduZWQgKi9cbiAgICAgIGhhc2g/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIHJlcXVlc3QgcmVjb3JkLiAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG5vbmNlIChjb21wdXRlZCByaWdodCBiZWZvcmUgc2lnbmluZykgKi9cbiAgICAgIG5vbmNlPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHNpZ25hdHVyZSAqL1xuICAgICAgc2lnbmVkUmF3VHJhbnNhY3Rpb24/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgc3RhdHVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1taVN0YXR1c1wiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTdXBwb3J0ZWQgcXVlcmllc1xuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgVHNRdWVyeU5hbWU6XG4gICAgICB8IFwiQWN0aXZlS2V5c1wiXG4gICAgICB8IFwiQWN0aXZlVXNlcnNcIlxuICAgICAgfCBcIlVuaXF1ZVNpZ25JbnNcIlxuICAgICAgfCBcIlVzZXJDb3VudFwiXG4gICAgICB8IFwiTGF0ZXN0VXNlckNvdW50XCJcbiAgICAgIHwgXCJLZXlDb3VudFwiXG4gICAgICB8IFwiTGF0ZXN0S2V5Q291bnRcIlxuICAgICAgfCBcIkJpbGxpbmdFdmVudHNcIlxuICAgICAgfCBcIk9pZGNMb2dpbnNcIlxuICAgICAgfCBcIlNpZ25FdmVudHNcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIGFib3V0IGEgc2lnbmVkIHRyYW5zYWN0aW9uICovXG4gICAgVHhTaWduYXR1cmU6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gS2VjY2FrIDI1NiBIYXNoIG9mIHRoZSBSTFAgZW5jb2Rpbmcgb2YgdGhlIHRyYW5zYWN0aW9uICovXG4gICAgICBoYXNoOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBub25jZSAoZWl0aGVyIHByb3ZpZGVkIGV4cGxpY2l0bHkgb3IgY29tcHV0ZWQgcmlnaHQgYmVmb3JlIHNpZ25pbmcpICovXG4gICAgICBub25jZTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHNpZ25lZCByYXcgdHJhbnNhY3Rpb25cbiAgICAgICAqIEBleGFtcGxlIDB4ZGIzM2IwM2MyYjgxMDNlMmE4YzM2MWQzYjRmNWFiYzY3Zjk2YzY5MjFkZjZlMTUxZDUzMDg3YTVlMTJiMWU0ZlxuICAgICAgICovXG4gICAgICBzaWduZWRfdHg6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSBzdHJ1Y3QgcmVwcmVzZW50aW5nIHRoZSBwZW5kaW5nIG1lc3NhZ2Ugc3RhdHVzICovXG4gICAgVHhTdGF0dXM6XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBzdGF0dXM6IFwiUGVuZGluZ1wiO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIGFib3V0IGEgc2lnbmVkIHRyYW5zYWN0aW9uICovXG4gICAgICAgICAgc2lnOiB7XG4gICAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEtlY2NhayAyNTYgSGFzaCBvZiB0aGUgUkxQIGVuY29kaW5nIG9mIHRoZSB0cmFuc2FjdGlvbiAqL1xuICAgICAgICAgICAgaGFzaDogc3RyaW5nO1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbm9uY2UgKGVpdGhlciBwcm92aWRlZCBleHBsaWNpdGx5IG9yIGNvbXB1dGVkIHJpZ2h0IGJlZm9yZSBzaWduaW5nKSAqL1xuICAgICAgICAgICAgbm9uY2U6IHN0cmluZztcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzaWduZWQgcmF3IHRyYW5zYWN0aW9uXG4gICAgICAgICAgICAgKiBAZXhhbXBsZSAweGRiMzNiMDNjMmI4MTAzZTJhOGMzNjFkM2I0ZjVhYmM2N2Y5NmM2OTIxZGY2ZTE1MWQ1MzA4N2E1ZTEyYjFlNGZcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2lnbmVkX3R4OiBzdHJpbmc7XG4gICAgICAgICAgfTtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBzdGF0dXM6IFwiU2lnbmVkXCI7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIHJlYXNvbjogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIHN0YXR1czogXCJSZWplY3RlZFwiO1xuICAgICAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXByZXNlbnRzIHRoZSBbRUlQLTcxMl0oaHR0cHM6Ly9laXBzLmV0aGVyZXVtLm9yZy9FSVBTL2VpcC03MTIpIHR5cGVkIGRhdGEgb2JqZWN0LlxuICAgICAqXG4gICAgICogVHlwZWQgZGF0YSBpcyBhIEpTT04gb2JqZWN0IGNvbnRhaW5pbmcgdHlwZSBpbmZvcm1hdGlvbiwgZG9tYWluIHNlcGFyYXRvciBwYXJhbWV0ZXJzIGFuZCB0aGVcbiAgICAgKiBtZXNzYWdlIG9iamVjdC5cbiAgICAgKi9cbiAgICBUeXBlZERhdGE6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgdGhlIFtFSVAtNzEyXShodHRwczovL2VpcHMuZXRoZXJldW0ub3JnL0VJUFMvZWlwLTcxMikgRUlQNzEyRG9tYWluIG9iamVjdC5cbiAgICAgICAqXG4gICAgICAgKiBFSVA3MTJEb21haW4gaXMgYSBKU09OIG9iamVjdCB3aXRoIG9uZSBvciBtb3JlIG9mIHRoZSBiZWxvdyBmaWVsZHMuIFByb3RvY29sIGRlc2lnbmVycyBvbmx5IG5lZWQgdG8gaW5jbHVkZSB0aGUgZmllbGRzIHRoYXQgbWFrZSBzZW5zZSBmb3IgdGhlaXIgc2lnbmluZyBkb21haW4uXG4gICAgICAgKi9cbiAgICAgIGRvbWFpbjoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBFSVAtMTU1IGNoYWluIGlkLiBUaGUgdXNlci1hZ2VudCBzaG91bGQgcmVmdXNlIHNpZ25pbmcgaWYgaXQgZG9lcyBub3QgbWF0Y2ggdGhlXG4gICAgICAgICAqIGN1cnJlbnRseSBhY3RpdmUgY2hhaW4uXG4gICAgICAgICAqIEBleGFtcGxlIDB4MVxuICAgICAgICAgKi9cbiAgICAgICAgY2hhaW5JZD86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHVzZXIgcmVhZGFibGUgbmFtZSBvZiBzaWduaW5nIGRvbWFpbiwgaS5lLiwgdGhlIG5hbWUgb2YgdGhlIERBcHAgb3IgdGhlIHByb3RvY29sLlxuICAgICAgICAgKiBAZXhhbXBsZSBFdGhlciBNYWlsXG4gICAgICAgICAqL1xuICAgICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIGRpc2FtYmlndWF0aW5nIHNhbHQgZm9yIHRoZSBwcm90b2NvbC4gVGhpcyBjYW4gYmUgdXNlZCBhcyBhIGRvbWFpbiBzZXBhcmF0b3Igb2YgbGFzdCByZXNvcnQuIENhbiBiZSBlaXRoZXIgYSBoZXgtZW5jb2RlZCBzdHJpbmcgb3IgYnl0ZSBhcnJheSAqL1xuICAgICAgICBzYWx0Pzogc3RyaW5nIHwgbnVtYmVyW107XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGFkZHJlc3Mgb2YgdGhlIGNvbnRyYWN0IHRoYXQgd2lsbCB2ZXJpZnkgdGhlIHNpZ25hdHVyZS5cbiAgICAgICAgICogQGV4YW1wbGUgMHhDY0NDY2NjY0NDQ0NjQ0NDQ0NDY0NjQ2NjQ2NDQ0NjQ2NjY2NjY2NDXG4gICAgICAgICAqL1xuICAgICAgICB2ZXJpZnlpbmdDb250cmFjdD86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGN1cnJlbnQgbWFqb3IgdmVyc2lvbiBvZiB0aGUgc2lnbmluZyBkb21haW4uIFNpZ25hdHVyZXMgZnJvbSBkaWZmZXJlbnQgdmVyc2lvbnMgYXJlIG5vdFxuICAgICAgICAgKiBjb21wYXRpYmxlLlxuICAgICAgICAgKiBAZXhhbXBsZSAxXG4gICAgICAgICAqL1xuICAgICAgICB2ZXJzaW9uPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBtZXNzYWdlIHRvIGJlIHNpZ25lZC4gKi9cbiAgICAgIG1lc3NhZ2U6IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbiAgICAgIH07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB0eXBlIG9mIHRoZSBtZXNzYWdlLiAqL1xuICAgICAgcHJpbWFyeVR5cGU6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGN1c3RvbSB0eXBlcyB1c2VkIGJ5IHRoaXMgbWVzc2FnZS4gKi9cbiAgICAgIHR5cGVzOiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IHtcbiAgICAgICAgICAvKiogQGV4YW1wbGUgbmFtZSAqL1xuICAgICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgICAvKiogQGV4YW1wbGUgdHlwZSAqL1xuICAgICAgICAgIHR5cGU6IHN0cmluZztcbiAgICAgICAgfVtdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRUlQLTI3MTggdHlwZWQgdHJhbnNhY3Rpb24sIGluY2x1ZGluZyBFSVAtMTU1OSB0cmFuc2FjdGlvbnMgKGB7IFwidHlwZVwiOiBcIjB4MDJcIiAuLi4gfWApLCBhbmQgbGVnYWN5IHRyYW5zYWN0aW9ucyAoYHsgXCJ0eXBlXCI6IFwiMHgwMFwiIC4uLiB9YCkuIEFsbCB2YWx1ZXMgaW4gdGhlIHRyYW5zYWN0aW9uIGFyZSBleHBlY3RlZCB0byBiZSAoMHgtcHJlZml4ZWQgb3Igbm90KSBoZXggc3RyaW5ncyBvciBieXRlIGFycmF5cy4gKi9cbiAgICBUeXBlZFRyYW5zYWN0aW9uOiBPbmVPZjxcbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIC8qKiBAZXhhbXBsZSAweDAxICovXG4gICAgICAgICAgZGF0YT86IHN0cmluZztcbiAgICAgICAgICAvKiogQGV4YW1wbGUgMHg0Y2YxOGE4YTZhMWZmZTc3ZmVjNjAwZGEyYjkwZWMzNWJhMDUwYjA3ICovXG4gICAgICAgICAgZnJvbT86IHN0cmluZztcbiAgICAgICAgICAvKiogQGV4YW1wbGUgMHgxICovXG4gICAgICAgICAgZ2FzPzogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZXhhbXBsZSAweDEgKi9cbiAgICAgICAgICBnYXNQcmljZT86IHN0cmluZztcbiAgICAgICAgICAvKiogQGV4YW1wbGUgMHgxICovXG4gICAgICAgICAgbm9uY2U/OiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBleGFtcGxlIDB4MDY4YmQ1Mjk0MjZmNGYyN2UyNDhiYWYzNmU0NTU4ZTQ0MDczOGZiYiAqL1xuICAgICAgICAgIHRvPzogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZXhhbXBsZSAweDAwICovXG4gICAgICAgICAgdHlwZTogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZXhhbXBsZSAweDEgKi9cbiAgICAgICAgICB2YWx1ZT86IHN0cmluZztcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICAgKiAgIHtcbiAgICAgICAgICAgKiAgICAgXCJhZGRyZXNzXCI6IFwiMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgICogICAgIFwic3RvcmFnZUtleXNcIjogW1xuICAgICAgICAgICAqICAgICAgIFwiMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwXCJcbiAgICAgICAgICAgKiAgICAgXVxuICAgICAgICAgICAqICAgfVxuICAgICAgICAgICAqIF1cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBhY2Nlc3NMaXN0Pzoge1xuICAgICAgICAgICAgLyoqIEBleGFtcGxlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCAqL1xuICAgICAgICAgICAgYWRkcmVzcz86IHN0cmluZztcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgICAgICogICBcIjB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFwiXG4gICAgICAgICAgICAgKiBdXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHN0b3JhZ2VLZXlzPzogc3RyaW5nW107XG4gICAgICAgICAgfVtdO1xuICAgICAgICAgIC8qKiBAZXhhbXBsZSAweDAxICovXG4gICAgICAgICAgZGF0YT86IHN0cmluZztcbiAgICAgICAgICAvKiogQGV4YW1wbGUgMHg0Y2YxOGE4YTdhMWZmZTc3ZmVjNjAwZGEyYjkwZWMzNWJhMDUwYjA3ICovXG4gICAgICAgICAgZnJvbT86IHN0cmluZztcbiAgICAgICAgICAvKiogQGV4YW1wbGUgMHg2MWE4MCAqL1xuICAgICAgICAgIGdhcz86IHN0cmluZztcbiAgICAgICAgICAvKiogQGV4YW1wbGUgMHg5NTAyZjkwMCAqL1xuICAgICAgICAgIG1heEZlZVBlckdhcz86IHN0cmluZztcbiAgICAgICAgICAvKiogQGV4YW1wbGUgMHg5NTAyZjkwMCAqL1xuICAgICAgICAgIG1heFByaW9yaXR5RmVlUGVyR2FzPzogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZXhhbXBsZSAweGIgKi9cbiAgICAgICAgICBub25jZT86IHN0cmluZztcbiAgICAgICAgICAvKiogQGV4YW1wbGUgMHgwNjhiZDUzOTQyNmY0ZjI3ZTI0OGJhZjM2ZTQ1NThlNDQwNzM4ZmJiICovXG4gICAgICAgICAgdG8/OiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBleGFtcGxlIDB4MDIgKi9cbiAgICAgICAgICB0eXBlOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBleGFtcGxlIDB4MSAqL1xuICAgICAgICAgIHZhbHVlPzogc3RyaW5nO1xuICAgICAgICB9LFxuICAgICAgXVxuICAgID47XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgVW5hdXRob3JpemVkRXJyb3JDb2RlOlxuICAgICAgfCBcIkF1dGhvcml6YXRpb25IZWFkZXJNaXNzaW5nXCJcbiAgICAgIHwgXCJFbmRwb2ludFJlcXVpcmVzVXNlclNlc3Npb25cIlxuICAgICAgfCBcIlJlZnJlc2hUb2tlbk1pc3NpbmdcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbnMgdGhhdCBzaG91bGQgYmUgc2V0IG9ubHkgZm9yIGxvY2FsIGRldm5ldCB0ZXN0aW5nLiAqL1xuICAgIFVuc2FmZUNvbmY6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBoZXgtZW5jb2RlZCBhZGRyZXNzIG9mIHRoZSBkZXBvc2l0IGNvbnRyYWN0LiBJZiBvbWl0dGVkLCBpbmZlcnJlZCBmcm9tIGBjaGFpbl9pZGBcbiAgICAgICAqIEBleGFtcGxlIDB4ZmY1MGVkM2QwZWMwM2FjMDFkNGM3OWFhZDc0OTI4YmZmNDhhN2IyYlxuICAgICAgICovXG4gICAgICBkZXBvc2l0X2NvbnRyYWN0X2FkZHI/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGhleC1lbmNvZGVkIDQtYnl0ZSBmb3JrIHZlcnNpb25cbiAgICAgICAqIEBleGFtcGxlIDB4MDAwMDEwMjBcbiAgICAgICAqL1xuICAgICAgZ2VuZXNpc19mb3JrX3ZlcnNpb24/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgVW5zdGFrZVJlcXVlc3Q6IHtcbiAgICAgIGVwb2NoPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaFwiXSB8IG51bGw7XG4gICAgICBmb3JrOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkZvcmtcIl07XG4gICAgICBnZW5lc2lzX2RhdGE6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiR2VuZXNpc0RhdGFcIl07XG4gICAgICBuZXR3b3JrOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk5ldHdvcmtcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0b3IgaW5kZXggKGB1aW50NjRgKSB0byBleGl0LiBZb3UgY2FuIGdldCB0aGUgdmFsaWRhdG9yIGluZGV4IGZyb20gdGhlIEJlYWNvbiBub2RlJ3NcbiAgICAgICAqIGAvZXRoL3YxL2JlYWNvbi9zdGF0ZXMvaGVhZC92YWxpZGF0b3JzL3twdWJrZXl9YCBlbmQtcG9pbnQuIFRoaXMgZW5kIHBvaW50IHJldHVybnMgYW5cbiAgICAgICAqIG9iamVjdCB0aGF0IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSB2YWxpZGF0b3IgKHdob3NlIHB1YmxpYyBrZXkgaXMgYHtwdWJrZXl9YCksXG4gICAgICAgKiBpbmNsdWRpbmcgdGhlIHZhbGlkYXRvciBpbmRleC4gVGhlIHNjaGVtYSBvZiB0aGlzIGVuZC1wb2ludCBpcyBkZWZpbmVkXG4gICAgICAgKiBbaGVyZV0oaHR0cHM6Ly9ldGhlcmV1bS5naXRodWIuaW8vYmVhY29uLUFQSXMvIy9CZWFjb24vZ2V0U3RhdGVWYWxpZGF0b3IpLlxuICAgICAgICogQGV4YW1wbGUgMzEzMzdcbiAgICAgICAqL1xuICAgICAgdmFsaWRhdG9yX2luZGV4OiBzdHJpbmc7XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFJlcXVlc3QgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcmVzcG9uc2UsIGV4cGxhaW5pbmdcbiAgICAgICAqIHRoZSBvdXRjb21lIChpLmUuLCBwZXJtaXR0ZWQgdnMuIGRlbmllZCB2cy4gTUZBIHJlcXVpcmVkKSBvZiB0aGUgc2lnbiByZXF1ZXN0LlxuICAgICAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGV4cGxhaW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgTUZBIGlzIHJlcXVpcmVkLCBmYWlsIHRoZSByZXF1ZXN0IGluc3RlYWQgb2YgcmV0dXJuaW5nIDIwMiBhbmQgY3JlYXRpbmdcbiAgICAgICAqIHBlbmRpbmcgTUZBIHJlcXVlc3QuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBmYWlsX29uX21mYT86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBtZXRhZGF0YS4gUGFzc2luZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFzIG1ldGFkYXRhIGNhbiBiZSB1c2VkIHRvIG1ha2UgcmV2aWV3aW5nXG4gICAgICAgKiBvZiBwZW5kaW5nIE1GQSByZXF1ZXN0cyBhbmQvb3IgaGlzdG9yaWNhbCBrZXkgdHJhbnNhY3Rpb25zIG1vcmUgdHJhbnNwYXJlbnQuIEl0IGNhbiBhbHNvIGJlIHVzZWQgZS5nLiwgdG8gY2FycnkgYWRkaXRpb25hbCBkYXRhIHRvIFdlYkhvb2sgcG9saWNpZXMuXG4gICAgICAgKi9cbiAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICB9ICYgUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSByZXNwb25zZSB0byBzaWduIGFuIGV0aDIgdW5zdGFrZSByZXF1ZXN0LiAqL1xuICAgIFVuc3Rha2VSZXNwb25zZToge1xuICAgICAgbWVzc2FnZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJWb2x1bnRhcnlFeGl0XCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQkxTIHNpZ25hdHVyZS5cbiAgICAgICAqIEBleGFtcGxlIDB4OTEwYzdjZDUzN2VkOTFjYzhjNGE4MmYzY2JkODMyZTliZThjMjRhMjJlOWM4NmRmNDc5ZjdjZTQyMDI1ZWE2YTA5NjE5YjQxOGI2NjZhMDYwZTI2MGQyYWFlMzFiOGU1MGU5ZDA1Y2EzNDQyYzdlZWQzYjUwN2U1MjA3ZTE0Njc0Mjc1ZjY4YzJiYTg0YzRiZjZiOGRkMzY0YTMwNGFjYWM4Y2ZhYjM2ODFlMjUxNGI0NDAwZjkyNDJiYzYxMTY0XG4gICAgICAgKi9cbiAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgIH0gJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHBvbGljeSBldmFsdWF0aW9uIHRyZWUuICovXG4gICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICB9ICYgUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGluZm9ybWF0aW9uIG5lZWRlZCB0byB1cGRhdGUgYSBDb250YWN0LiAqL1xuICAgIFVwZGF0ZUNvbnRhY3RSZXF1ZXN0OiB7XG4gICAgICBhZGRyZXNzZXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFkZHJlc3NNYXBcIl0gfCBudWxsO1xuICAgICAgZWRpdF9wb2xpY3k/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVkaXRQb2xpY3lcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBuZXcgc2V0IG9mIGxhYmVscyBmb3IgdGhlIGNvbnRhY3QuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwiY3ViaXN0OmVyYzIwX3Rva2VuXCJcbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgbGFiZWxzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDb250YWN0TGFiZWxcIl1bXSB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEEgbmV3IHZhbHVlIGZvciB0aGUgb3B0aW9uYWwgdXNlci1kZWZpbmVkIG1ldGFkYXRhIGFib3V0IHRoZSBjb250YWN0LiAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBuZXcgbmFtZSBmb3IgdGhlIGNvbnRhY3QuIE11c3QgYmUgYSB1bmlxdWUgbmFtZSBhbW9uZyBjb250YWN0cyBpbiB0aGVcbiAgICAgICAqIG9yZy4gTmFtZSBtdXN0IGNvbnNpc3Qgb2YgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMsIHNwYWNlcywgYC5gIGFuZCBgLWAsXG4gICAgICAgKiBhbmQgY2Fubm90IGJlIGxvbmdlciB0aGFuIDUwIGNoYXJhY3RlcnMuXG4gICAgICAgKiBAZXhhbXBsZSBTYXRvc2hpIE5ha2Ftb3RvXG4gICAgICAgKi9cbiAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgb3duZXI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdIHwgbnVsbDtcbiAgICB9O1xuICAgIFVwZGF0ZUtleVJlcXVlc3Q6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3JlYXRlQW5kVXBkYXRlS2V5UHJvcGVydGllc1wiXSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlcyB0aGUga2V5J3MgYGVuYWJsZWRgIHByb3BlcnR5IHRvIHRoaXMgdmFsdWUuXG4gICAgICAgKiBPbmNlIGRpc2FibGVkLCBhIGtleSBjYW5ub3QgYmUgdXNlZCBmb3Igc2lnbmluZy5cbiAgICAgICAqL1xuICAgICAgZW5hYmxlZD86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCBjaGFuZ2UgdGhlIGtleSdzIHJlZ2lvbiBhZmZpbml0eSB0byB0aGlzIHZhbHVlLlxuICAgICAgICpcbiAgICAgICAqIFRoaXMgaXMgYSByZWdpb24tbG9ja2VkIG9wZXJhdGlvbiwgaS5lLiwgaXQgY2FuIG9ubHkgYmUgcGVyZm9ybWVkXG4gICAgICAgKiBmcm9tIHRoZSByZWdpb24gbWF0Y2hpbmcgdGhlIGtleSdzIGN1cnJlbnQgcmVnaW9uIGFmZmluaXR5XG4gICAgICAgKi9cbiAgICAgIHJlZ2lvbj86IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRpbmcgdGhlIG1ldGFkYXRhIG9ubHkgc3VjY2VlZHMgaWYgdGhlIHZlcnNpb24gbWF0Y2hlcyB0aGlzIHZhbHVlLlxuICAgICAgICovXG4gICAgICB2ZXJzaW9uPzogbnVtYmVyIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUG9saWN5IEVuZ2luZSBjb25maWd1cmF0aW9ucy4gKi9cbiAgICBVcGRhdGVPcmdQb2xpY3lFbmdpbmVDb25maWdzOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBbGxvd2VkIGRvbWFpbnMgZm9yIEhUVFAgcmVxdWVzdHNcbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAgXCJjdWJpc3QuZGV2OjQ0M1wiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIGFsbG93ZWRfaHR0cF9hdXRob3JpdGllczogc3RyaW5nW107XG4gICAgfTtcbiAgICBVcGRhdGVPcmdSZXF1ZXN0OiB7XG4gICAgICBhbGllbl9sb2dpbl9yZXF1aXJlbWVudD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kRmFjdG9yUmVxdWlyZW1lbnRcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTUZBIHR5cGVzIHRoYXQgYXJlIGFsbG93ZWQgdG8gYmUgdXNlZCBmb3IgaW1wbGljaXRseSBzZWN1cml0eS1zZW5zaXRpdmVcbiAgICAgICAqIG9wZXJhdGlvbnMgKGxpa2UgbG9nZ2luZyBpbiwgYWRkaW5nIGFuIE1GQSBmYWN0b3IsIGV4cG9ydGluZyBrZXlzLCBldGMuKS5cbiAgICAgICAqIEBleGFtcGxlIHtcbiAgICAgICAqICAgXCJEZWZhdWx0XCI6IFtcbiAgICAgICAqICAgICBcIkZpZG9cIixcbiAgICAgICAqICAgICBcIlRvdHBcIixcbiAgICAgICAqICAgICBcIkVtYWlsT3RwXCJcbiAgICAgICAqICAgXSxcbiAgICAgICAqICAgXCJLZXlFeHBvcnRcIjogW1xuICAgICAgICogICAgIFwiRmlkb1wiXG4gICAgICAgKiAgIF1cbiAgICAgICAqIH1cbiAgICAgICAqL1xuICAgICAgYWxsb3dlZF9tZmFfdHlwZXM/OiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhVHlwZVwiXVtdO1xuICAgICAgfSB8IG51bGw7XG4gICAgICBjdXN0b21fY2hhaW5zPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDdXN0b21DaGFpbnNEYXRhXCJdIHwgbnVsbDtcbiAgICAgIGRlZmF1bHRfaW52aXRlX2tpbmQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkludml0ZUtpbmRcIl0gfCBudWxsO1xuICAgICAgZW1haWxfcHJlZmVyZW5jZXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVtYWlsUHJlZmVyZW5jZXNcIl0gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0ZSB0aGlzIG9yZydzIGBlbmFibGVkYCBmaWVsZCB0byB0aGlzIHZhbHVlLiAqL1xuICAgICAgZW5hYmxlZD86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgZXh0X3Byb3BzPzpcbiAgICAgICAgfCAoe1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gUGVyIGFsaWVuIHVzZXIga2V5IGNvdW50IHRocmVzaG9sZCwgd2hpY2gsIG9uY2UgZXhjZWVkZWQsIGRpc2FsbG93cyBmdXJ0aGVyIGtleSBjcmVhdGlvbiBieSBhbGllbiB1c2Vycy5cbiAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgKiBUaGlzIHNldHRpbmcgaXMgY2hlY2tlZCBvbmx5IHdoZW4gYW4gYWxpZW4gdXNlciByZXF1ZXN0cyB0byBjcmVhdGUgb3IgaW1wb3J0IGEgbmV3IGtleS5cbiAgICAgICAgICAgICAqIEluIG90aGVyIHdvcmRzLCBvcmcgYWRtaW5zIGNhbiBzdGlsbCBhc3NpZ24gdW5saW1pdGVkIG51bWJlciBvZiBrZXlzIHRvIHRoZWlyIGFsaWVuIHVzZXJzLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBhbGllbl9rZXlfY291bnRfdGhyZXNob2xkPzogbnVtYmVyIHwgbnVsbDtcbiAgICAgICAgICB9ICYge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGluZyB3aWxsIHN1Y2NlZWQgaWYgdGhlIGN1cnJlbnQgdmVyc2lvbiBtYXRjaGVzIHRoaXMgdmFsdWVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdmVyc2lvbj86IG51bWJlciB8IG51bGw7XG4gICAgICAgICAgfSlcbiAgICAgICAgfCBudWxsO1xuICAgICAgaGlzdG9yaWNhbF9kYXRhX2NvbmZpZ3VyYXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkhpc3RvcmljYWxEYXRhQ29uZmlndXJhdGlvblwiXSB8IG51bGw7XG4gICAgICBpZHBfY29uZmlndXJhdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRwQ29uZmlnXCJdIHwgbnVsbDtcbiAgICAgIGtleV9leHBvcnRfcmVxdWlyZW1lbnQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlY29uZEZhY3RvclJlcXVpcmVtZW50XCJdIHwgbnVsbDtcbiAgICAgIG1lbWJlcl9sb2dpbl9yZXF1aXJlbWVudD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kRmFjdG9yUmVxdWlyZW1lbnRcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGUgdGhpcyBvcmcncyBub3RpZmljYXRpb24gZW5kcG9pbnRzLiBOb3RpZmljYXRpb24gZW5kcG9pbnRzIGFyZSBleHBlY3RlZCB0byBiZVxuICAgICAgICogSFRUUFMgVVJMcywgd2hpY2ggYWNjZXB0IFBPU1QgcmVxdWVzdHMuIFRoZSBib2R5IG9mIHRoZSByZXF1ZXN0cyBzZW50IHRvIHRoZXNlIGVuZHBvaW50cyBhcmVcbiAgICAgICAqIGFyZSBmb3JtYXR0ZWQgaW4gSlNPTiBhbmQgaGF2ZSB0aGUgZm9sbG93aW5nIGZvcm1hdDpcbiAgICAgICAqXG4gICAgICAgKiBgYGBqc29uXG4gICAgICAgKiB7XG4gICAgICAgKiBcIm9yZ1wiOiBcIi4uLlwiLFxuICAgICAgICogXCJ1dGNfdGltZXN0YW1wXCI6IFwiLi4uXCIsXG4gICAgICAgKiBcIm9yZ19ldmVudFwiOiBcIi4uLlwiLFxuICAgICAgICogLi4uXG4gICAgICAgKiB9XG4gICAgICAgKiBgYGBcbiAgICAgICAqXG4gICAgICAgKiBgb3JnYCBpcyB0aGUgb3JnIGlkLCBgdXRjX3RpbWVzdGFtcGAgaXMgdGhlIFVUQyB0aW1lc3RhbXAgb2YgdGhlIGV2ZW50IGluIG1pbGxpc2Vjb25kcywgYW5kXG4gICAgICAgKiBgb3JnX2V2ZW50YCBpcyBhIHN0cmluZyBpZGVudGlmeWluZyB0aGUgdHlwZSBvZiBldmVudCB0aGF0IGhhcyBvY2N1cnJlZC4gVGhlIHJlc3Qgb2YgdGhlXG4gICAgICAgKiBmaWVsZHMgcHJvdmlkZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gdGhlIHR5cGUgb2YgdGhlIGV2ZW50LlxuICAgICAgICpcbiAgICAgICAqIEVuZHBvaW50cyBjYW4gb3B0aW9uYWxseSBpbmNsdWRlIGZpbHRlcnMgdG8gY3VzdG9taXplIHRoZSBvcmcgZXZlbnRzIHRoYXQgdGhleSBhcmUgbm90aWZpZWRcbiAgICAgICAqIGFib3V0LiBDdXJyZW50bHksIHRoZSBvbmx5IHN1cHBvcnRlZCBmaWx0ZXIgdHlwZSBpcyBgT25lT2ZgLCB3aGljaCBleHBlY3RzIGEgbGlzdCBvZiBvcmdcbiAgICAgICAqIGV2ZW50IHR5cGVzIHRvIHNlbmQgdG8gdGhlIGVuZHBvaW50LiBJZiBubyBmaWx0ZXIgaXMgY29uZmlndXJlZCwgdGhlIHN5c3RlbSBzZW5kcyBhbGwgb3JnXG4gICAgICAgKiBldmVudHMgdG8gdGhlIGVuZHBvaW50LlxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJ1cmw6XCI6IFwiaHR0cHM6Ly9leGFtcGxlLmNvbS9lbmRwb2ludDFcIlxuICAgICAgICogICB9LFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJmaWx0ZXJcIjoge1xuICAgICAgICogICAgICAgXCJPbmVPZlwiOiBbXG4gICAgICAgKiAgICAgICAgIFwiRXRoMkNvbmN1cnJlbnRBdHRlc3RhdGlvblNpZ25pbmdcIixcbiAgICAgICAqICAgICAgICAgXCJFdGgyQ29uY3VycmVudEJsb2NrU2lnbmluZ1wiXG4gICAgICAgKiAgICAgICBdXG4gICAgICAgKiAgICAgfSxcbiAgICAgICAqICAgICBcInVybDpcIjogXCJodHRwczovL2V4YW1wbGUuY29tL2VuZHBvaW50MlwiXG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgbm90aWZpY2F0aW9uX2VuZHBvaW50cz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTm90aWZpY2F0aW9uRW5kcG9pbnRDb25maWd1cmF0aW9uXCJdW10gfCBudWxsO1xuICAgICAgcGFzc2tleV9jb25maWd1cmF0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQYXNza2V5Q29uZmlnXCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlIHRoaXMgb3JnJ3MgcG9saWNpZXMgKG9sZCBwb2xpY2llcyB3aWxsIGJlIG92ZXJ3cml0dGVuISkuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIk1heERhaWx5VW5zdGFrZVwiOiA1XG4gICAgICAgKiAgIH0sXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIk9yaWdpbkFsbG93bGlzdFwiOiBbXG4gICAgICAgKiAgICAgICBcImh0dHBzOi8vZXhhbXBsZS5jb21cIlxuICAgICAgICogICAgIF1cbiAgICAgICAqICAgfSxcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiU291cmNlSXBBbGxvd2xpc3RcIjogW1xuICAgICAgICogICAgICAgXCIxMC4xLjIuMy84XCIsXG4gICAgICAgKiAgICAgICBcIjE2OS4yNTQuMTcuMS8xNlwiXG4gICAgICAgKiAgICAgXVxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHBvbGljeT86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdIHwgbnVsbDtcbiAgICAgIHBvbGljeV9lbmdpbmVfY29uZmlndXJhdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXBkYXRlT3JnUG9saWN5RW5naW5lQ29uZmlnc1wiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIGFsbCB1c2VyIGxvZ2lucyB3aWxsIHJlcXVpcmUgdGhlIGNsYWltIGBjdWJlc2lnbmVyX3Njb3BlX2NlaWxpbmdgIHRvIGJlIHByZXNlbnQgaW5cbiAgICAgICAqIHRoZSB1c2VyJ3MgdG9rZW4uIFRoaXMgY2xhaW0gaXMgYW4gYXJyYXkgb2Ygc2NvcGVzIChlLmcuIGBbIFwibWFuYWdlOmtleXM6bGlzdFwiLCBcInNpZ246ZXZtOnR4XCIgXWApLFxuICAgICAgICogd2hpY2ggZGVmaW5lIGEgbWF4aW11bSBzZXQgb2Ygc2NvcGVzIHRoZSB1c2VyIG1heSByZXF1ZXN0LiBJZiB0aGUgdXNlcidzIHRva2VuIGRvZXMgbm90IGNvbnRhaW5cbiAgICAgICAqIHRoaXMgY2xhaW0sIHRoZSBsb2dpbiB3aWxsIGJlIHJlamVjdGVkLlxuICAgICAgICpcbiAgICAgICAqIE93bmVycyBvZiB0aGUgb3JnIGFyZSBleGVtcHQgZnJvbSB0aGlzIHJlcXVpcmVtZW50LlxuICAgICAgICovXG4gICAgICByZXF1aXJlX3Njb3BlX2NlaWxpbmc/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlIHRoaXMgb3JnJ3MgVE9UUCBmYWlsdXJlIGxpbWl0LiBBZnRlciB0aGlzIG1hbnkgZmFpbHVyZXMsXG4gICAgICAgKiB0aGUgdXNlciBpcyByYXRlIGxpbWl0ZWQgdW50aWwgdGhlIG5leHQgMzAtc2Vjb25kIFRPVFAgd2luZG93LlxuICAgICAgICovXG4gICAgICB0b3RwX2ZhaWx1cmVfbGltaXQ/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGUgdGhpcyBvcmcncyB1c2VyLWV4cG9ydCBkZWxheSwgaS5lLiwgdGhlIGFtb3VudCBvZiB0aW1lXG4gICAgICAgKiAoaW4gc2Vjb25kcykgYmV0d2VlbiBhIHVzZXIncyBpbml0aWF0aW5nIGFuIGV4cG9ydCBhbmQgdGhlIHRpbWUgd2hlblxuICAgICAgICogZXhwb3J0IGlzIGFsbG93ZWQuIEZvciBzZWN1cml0eSwgdGhpcyBkZWxheSBjYW5ub3QgYmUgc2V0IHRvIGxlc3MgdGhhblxuICAgICAgICogMTcyODAwLCBpLmUuLCAyIGRheXMuXG4gICAgICAgKi9cbiAgICAgIHVzZXJfZXhwb3J0X2RlbGF5PzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0dXJuIHRoaXMgb3JnJ3MgdXNlciBleHBvcnQgb2ZmIChieSBwYXNzaW5nIGB0cnVlYCkgb3Igb24gKGJ5IHBhc3NpbmcgYGZhbHNlYCkuICovXG4gICAgICB1c2VyX2V4cG9ydF9kaXNhYmxlZD86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGUgdGhpcyBvcmcncyB1c2VyLWV4cG9ydCB3aW5kb3csIGkuZS4sIHRoZSBhbW91bnQgb2YgdGltZVxuICAgICAgICogKGluIHNlY29uZHMpIHRoYXQgZXhwb3J0IGlzIGFsbG93ZWQgYWZ0ZXIgdGhlIHVzZXItZXhwb3J0IGRlbGF5LiBBZnRlclxuICAgICAgICogdGhpcyBhbW91bnQgb2YgdGltZSwgdGhlIGV4cG9ydCBpcyBjYW5jZWxlZCBhbmQgbXVzdCBiZSByZS1pbml0aWF0ZWQuXG4gICAgICAgKiBGb3Igc2VjdXJpdHksIHRoaXMgd2luZG93IGNhbm5vdCBiZSBzZXQgdG8gZ3JlYXRlciB0aGFuIDI1OTIwMCwgaS5lLixcbiAgICAgICAqIDMgZGF5cy5cbiAgICAgICAqL1xuICAgICAgdXNlcl9leHBvcnRfd2luZG93PzogbnVtYmVyIHwgbnVsbDtcbiAgICB9O1xuICAgIFVwZGF0ZU9yZ1Jlc3BvbnNlOiB7XG4gICAgICBhbGllbl9sb2dpbl9yZXF1aXJlbWVudD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kRmFjdG9yUmVxdWlyZW1lbnRcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTUZBIHR5cGVzIHRoYXQgYXJlIGFsbG93ZWQgdG8gYmUgdXNlZCBmb3IgaW1wbGljaXRseSBzZWN1cml0eS1zZW5zaXRpdmVcbiAgICAgICAqIG9wZXJhdGlvbnMgKGxpa2UgbG9nZ2luZyBpbiwgYWRkaW5nIGFuIE1GQSBmYWN0b3IsIGV4cG9ydGluZyBrZXlzLCBldGMuKS5cbiAgICAgICAqL1xuICAgICAgYWxsb3dlZF9tZmFfdHlwZXM/OiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhVHlwZVwiXVtdO1xuICAgICAgfSB8IG51bGw7XG4gICAgICBjdXN0b21fY2hhaW5zPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDdXN0b21DaGFpbnNEYXRhXCJdIHwgbnVsbDtcbiAgICAgIGRlZmF1bHRfaW52aXRlX2tpbmQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkludml0ZUtpbmRcIl0gfCBudWxsO1xuICAgICAgZW1haWxfcHJlZmVyZW5jZXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVtYWlsUHJlZmVyZW5jZXNcIl0gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIHRoZSAnZW5hYmxlZCcgcHJvcGVydHkgKi9cbiAgICAgIGVuYWJsZWQ/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgIGV4dF9kYXRhPzpcbiAgICAgICAgfCAoe1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gUGVyIGFsaWVuIHVzZXIga2V5IGNvdW50IHRocmVzaG9sZCwgd2hpY2gsIG9uY2UgZXhjZWVkZWQsIGRpc2FsbG93cyBmdXJ0aGVyIGtleSBjcmVhdGlvbiBieSBhbGllbiB1c2Vycy5cbiAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgKiBUaGlzIHNldHRpbmcgaXMgY2hlY2tlZCBvbmx5IHdoZW4gYW4gYWxpZW4gdXNlciByZXF1ZXN0cyB0byBjcmVhdGUgb3IgaW1wb3J0IGEgbmV3IGtleS5cbiAgICAgICAgICAgICAqIEluIG90aGVyIHdvcmRzLCBvcmcgYWRtaW5zIGNhbiBzdGlsbCBhc3NpZ24gdW5saW1pdGVkIG51bWJlciBvZiBrZXlzIHRvIHRoZWlyIGFsaWVuIHVzZXJzLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBhbGllbl9rZXlfY291bnRfdGhyZXNob2xkPzogbnVtYmVyIHwgbnVsbDtcbiAgICAgICAgICB9ICYge1xuICAgICAgICAgICAgY3JlYXRlZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXSB8IG51bGw7XG4gICAgICAgICAgICBsYXN0X21vZGlmaWVkPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdIHwgbnVsbDtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIFZlcnNpb24gb2YgdGhpcyBvYmplY3RcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdmVyc2lvbj86IG51bWJlcjtcbiAgICAgICAgICB9ICYgUmVjb3JkPHN0cmluZywgbmV2ZXI+KVxuICAgICAgICB8IG51bGw7XG4gICAgICBoaXN0b3JpY2FsX2RhdGFfY29uZmlndXJhdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSGlzdG9yaWNhbERhdGFDb25maWd1cmF0aW9uXCJdIHwgbnVsbDtcbiAgICAgIGlkcF9jb25maWd1cmF0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZHBDb25maWdcIl0gfCBudWxsO1xuICAgICAga2V5X2V4cG9ydF9yZXF1aXJlbWVudD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kRmFjdG9yUmVxdWlyZW1lbnRcIl0gfCBudWxsO1xuICAgICAgbWVtYmVyX2xvZ2luX3JlcXVpcmVtZW50PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNvbmRGYWN0b3JSZXF1aXJlbWVudFwiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoZSBvcmcgKG11c3QgYmUgYWxwaGFudW1lcmljKVxuICAgICAgICogQGV4YW1wbGUgbXlfb3JnX25hbWVcbiAgICAgICAqL1xuICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IG5vdGlmaWNhdGlvbiBlbmRwb2ludCBjb25maWd1cmF0aW9uc1xuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJ1cmxcIjogXCJodHRwczovL2V4YW1wbGUuY29tL2VuZHBvaW50XCJcbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBub3RpZmljYXRpb25fZW5kcG9pbnRzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJOb3RpZmljYXRpb25FbmRwb2ludENvbmZpZ3VyYXRpb25cIl1bXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIG9yZ2FuaXphdGlvblxuICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICovXG4gICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIHBhc3NrZXlfY29uZmlndXJhdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUGFzc2tleUNvbmZpZ1wiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIG9yZy13aWRlIHBvbGljaWVzXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIk1heERhaWx5VW5zdGFrZVwiOiA1XG4gICAgICAgKiAgIH0sXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIk9yaWdpbkFsbG93bGlzdFwiOiBbXG4gICAgICAgKiAgICAgICBcImh0dHBzOi8vZXhhbXBsZS5jb21cIlxuICAgICAgICogICAgIF1cbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXSB8IG51bGw7XG4gICAgICBwb2xpY3lfZW5naW5lX2NvbmZpZ3VyYXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBvbGljeUVuZ2luZUNvbmZpZ3VyYXRpb25cIl0gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIHJlcXVpcmVfc2NvcGVfY2VpbGluZyAqL1xuICAgICAgcmVxdWlyZV9zY29wZV9jZWlsaW5nPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIHRoZSBUT1RQIGZhaWx1cmUgbGltaXRcbiAgICAgICAqL1xuICAgICAgdG90cF9mYWlsdXJlX2xpbWl0PzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgdXNlci1leHBvcnQgZGVsYXlcbiAgICAgICAqL1xuICAgICAgdXNlcl9leHBvcnRfZGVsYXk/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIHVzZXItZXhwb3J0IGRpc2FibGVkICovXG4gICAgICB1c2VyX2V4cG9ydF9kaXNhYmxlZD86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5ldyB2YWx1ZSBvZiB1c2VyLWV4cG9ydCB3aW5kb3dcbiAgICAgICAqL1xuICAgICAgdXNlcl9leHBvcnRfd2luZG93PzogbnVtYmVyIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBib2R5IGZvciB1cGRhdGluZyBhIG5hbWVkIHBvbGljeS4gKi9cbiAgICBVcGRhdGVQb2xpY3lSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBOZXcgQWNjZXNzLWNvbnRyb2wgZW50cmllcy5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiYWN0aW9uXCI6IFwiYXR0YWNoXCIsXG4gICAgICAgKiAgICAgXCJyZXNvdXJjZXNcIjogW1xuICAgICAgICogICAgICAge1xuICAgICAgICogICAgICAgICBcImtleV9pZFwiOiBcIipcIixcbiAgICAgICAqICAgICAgICAgXCJyb2xlX2lkXCI6IFwiUm9sZSNlNDI3YzI4YS05YzViLTQ5Y2MtYTI1Ny04NzhhZWE1OGEyMmNcIlxuICAgICAgICogICAgICAgfVxuICAgICAgICogICAgIF0sXG4gICAgICAgKiAgICAgXCJzdWJqZWN0c1wiOiBcIipcIlxuICAgICAgICogICB9LFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJhY3Rpb25cIjogXCJzaWduXCIsXG4gICAgICAgKiAgICAgXCJzdWJqZWN0c1wiOiBcIlJvbGUjZTQyN2MyOGEtOWM1Yi00OWNjLWEyNTctODc4YWVhNThhMjJjXCJcbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBhY2w/OiB1bmtub3duW10gfCBudWxsO1xuICAgICAgZWRpdF9wb2xpY3k/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVkaXRQb2xpY3lcIl0gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIG5ldyBtZXRhZGF0YS4gKi9cbiAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQSBuZXcgbmFtZSBmb3IgdGhlIHBvbGljeS4gKi9cbiAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIG5ldyBvd25lciBmb3IgdGhlIHBvbGljeS4gKi9cbiAgICAgIG93bmVyPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gTmV3IHBvbGljeSBydWxlcy4gKi9cbiAgICAgIHJ1bGVzPzogdW5rbm93bltdIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSByZXF1ZXN0IGZvciB1cGRhdGluZyBPcmctbGV2ZWwgcG9saWN5IHNlY3JldHMgKi9cbiAgICBVcGRhdGVQb2xpY3lTZWNyZXRzUmVxdWVzdDoge1xuICAgICAgZWRpdF9wb2xpY3k/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVkaXRQb2xpY3lcIl0gfCBudWxsO1xuICAgIH07XG4gICAgVXBkYXRlUm9sZVJlcXVlc3Q6IHtcbiAgICAgIGVkaXRfcG9saWN5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFZGl0UG9saWN5XCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlcyB0aGUgcm9sZSdzIGBlbmFibGVkYCBwcm9wZXJ0eSB0byB0aGlzIHZhbHVlLlxuICAgICAgICogT25jZSBkaXNhYmxlZCwgYSByb2xlIGNhbm5vdCBiZSB1c2VkOyBhbmQgaXQncyB0b2tlbnMgY2Fubm90IGJlIHVzZWQgZm9yIHNpZ25pbmcuXG4gICAgICAgKi9cbiAgICAgIGVuYWJsZWQ/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlIHRoaXMgcm9sZSdzIGtleSBwb2xpY2llcyAob2xkIHBvbGljaWVzIHdpbGwgYmUgb3ZlcndyaXR0ZW4hKS5cbiAgICAgICAqIE9ubHkgXCJkZW55XCIgc3R5bGUgcG9saWNpZXMgbWF5IGJlIHNldC5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiU291cmNlSXBBbGxvd2xpc3RcIjogW1xuICAgICAgICogICAgICAgXCIxMjMuNDU2Ljc4LjkvMTZcIlxuICAgICAgICogICAgIF1cbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBwb2xpY3k/OiB1bmtub3duW10gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGUgdGhpcyByb2xlJ3Mgc2V0dGluZ3MgZm9yIHJlc3RyaWN0aW5nIHdoaWNoIG1lbWJlciByb2xlcyBhcmUgYWxsb3dlZCB0b1xuICAgICAgICogcGVyZm9ybSBhY3Rpb25zIG9uIHRoaXMgcm9sZS5cbiAgICAgICAqIEBleGFtcGxlIHtcbiAgICAgICAqICAgXCJDcmVhdGVUb2tlblwiOiBbXG4gICAgICAgKiAgICAgXCJPd25lclwiXG4gICAgICAgKiAgIF1cbiAgICAgICAqIH1cbiAgICAgICAqL1xuICAgICAgcmVzdHJpY3RlZF9hY3Rpb25zPzoge1xuICAgICAgICBba2V5OiBzdHJpbmddOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1lbWJlclJvbGVcIl1bXTtcbiAgICAgIH0gfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IHRvIHVwZGF0ZSBhbiBleGlzdGluZyB1c2VyICovXG4gICAgVXBkYXRlVXNlck1lbWJlcnNoaXBSZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEVuYWJsZSBvciBkaXNhYmxlIHVzZXIgKi9cbiAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICByb2xlPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZW1iZXJSb2xlXCJdIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEZvcm1hdDogYmluYXJ5XG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSBTSEEtMjU2IGhhc2ggb2YgdGhlIG9iamVjdCBmb3IgYW4gW1VwbG9hZFJlcXVlc3RdLlxuICAgICAqL1xuICAgIFVwbG9hZE9iamVjdEhhc2g6IHN0cmluZztcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlcXVlc3QgZm9yIHVwbG9hZGluZyBhIHdhc20gcG9saWN5ICovXG4gICAgVXBsb2FkV2FzbVBvbGljeVJlcXVlc3Q6IHtcbiAgICAgIGhhc2g6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXBsb2FkT2JqZWN0SGFzaFwiXTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlc3BvbnNlIHRvIGEgcmVxdWVzdCBmb3IgdXBsb2FkaW5nIGEgd2FzbSBwb2xpY3kgKi9cbiAgICBVcGxvYWRXYXNtUG9saWN5UmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQSBzaWduZWQgVVJMIGZvciB1cGxvYWRpbmcgdGhlIHJlcXVlc3RlZCB3YXNtIHBvbGljeS4gKi9cbiAgICAgIHNpZ25lZF91cmw6IHN0cmluZztcbiAgICB9O1xuICAgIFVzZXJDb3VudERpbWVuc2lvbnM6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVXNlcidzIG1lbWJlcnNoaXAgaW4gdGhlIG9yZyAqL1xuICAgICAgbWVtYmVyc2hpcDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgbWV0cmljcyBtdXN0IGluY2x1ZGUgJ29yZ19pZCcgYXMgYSBkaW1lbnNpb24uICovXG4gICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSByZXF1ZXN0IHRvIGNvbXBsZXRlIGEgdXNlciBleHBvcnQgKi9cbiAgICBVc2VyRXhwb3J0Q29tcGxldGVSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGtleSB0byBiZSBleHBvcnRlZC4gVGhlIGtleS1pZCBtdXN0IGNvcnJlc3BvbmQgdG8gdGhlIG9uZSBpblxuICAgICAgICogdGhlIHNwZWNpZmllZCBleHBvcnQgcmVxdWVzdCwgYW5kIHRoZSBjYWxsZXIgbXVzdCBvd24gdGhpcyBrZXkuXG4gICAgICAgKiBAZXhhbXBsZSBLZXkjMHgzYzRkOTBDYzVBZjE2NDRDM0EzQjAxM0JhYTU0ODg5OTczODFEN0M4XG4gICAgICAgKi9cbiAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIE5JU1QgUC0yNTYgcHVibGljIGtleSAoYmFzZTY0LWVuY29kZWQgU0VDMSB3aXRoIG9yIHdpdGhvdXQgY29tcHJlc3Npb24pXG4gICAgICAgKiB0byB3aGljaCB0aGUgZXhwb3J0IHdpbGwgYmUgZW5jcnlwdGVkLiBJZiBhIHB1YmxpYyBrZXkgd2FzIHByb3ZpZGVkIHdoZW5cbiAgICAgICAqIGB1c2VyX2V4cG9ydF9pbml0YCB3YXMgY2FsbGVkLCB0aGlzIGtleSBtdXN0IG1hdGNoIHRoYXQgb25lLlxuICAgICAgICogQGV4YW1wbGUgQWtwTFQvM2RYQXBKelhTZHVhUFE3YXB5VDBBREJ3cWt0MWVzL2FUMGlXV2ZcbiAgICAgICAqL1xuICAgICAgcHVibGljX2tleTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBlbmNyeXB0ZWQgdXNlci1leHBvcnQgKi9cbiAgICBVc2VyRXhwb3J0Q29tcGxldGVSZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGV4cG9ydGVkIGtleSBtYXRlcmlhbCwgZW5jcnlwdGVkIHdpdGggQUVTLTI1Ni1HQ00gdW5kZXIgYSBrZXlcbiAgICAgICAqIGRlcml2ZWQgZnJvbSB0aGUgcHVibGljIGtleSBzdXBwbGllZCBpbiB0aGUgcmVxdWVzdCB2aWEgSFBLRSAoUkZDOTE4MClcbiAgICAgICAqIHdpdGggREhLRU0oUC0yNTYsIEhLREYtU0hBMjU2KSBhbmQgYmFzZTY0IGVuY29kZWQuXG4gICAgICAgKi9cbiAgICAgIGVuY3J5cHRlZF9rZXlfbWF0ZXJpYWw6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBlcGhlbWVyYWwgcHVibGljIGtleSB1c2VkIGZvciBIUEtFIGtleSBkZXJpdmF0aW9uIGFzIGJhc2U2NC1lbmNvZGVkXG4gICAgICAgKiB1bmNvbXByZXNzZWQgU0VDMSBzZXJpYWxpemF0aW9uLlxuICAgICAgICovXG4gICAgICBlcGhlbWVyYWxfcHVibGljX2tleTogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdXNlci1pZCB0byB3aGljaCB0aGlzIGtleSBiZWxvbmdzLiAqL1xuICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHJlcXVlc3QgdG8gaW5pdGlhdGUgYSB1c2VyIGV4cG9ydCAqL1xuICAgIFVzZXJFeHBvcnRJbml0UmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBrZXkgdG8gYmUgZXhwb3J0ZWQuIFRoaXMga2V5IG11c3QgYmUgb3duZWQgYnkgdGhlIGNhbGxlci5cbiAgICAgICAqIEBleGFtcGxlIEtleSMweDNjNGQ5MENjNUFmMTY0NEMzQTNCMDEzQmFhNTQ4ODk5NzM4MUQ3QzhcbiAgICAgICAqL1xuICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBbiBvcHRpb25hbCBOSVNUIFAtMjU2IHB1YmxpYyBrZXkgKGJhc2U2NC1lbmNvZGVkIFNFQzEgd2l0aCBvciB3aXRob3V0XG4gICAgICAgKiBjb21wcmVzc2lvbikgdG8gd2hpY2ggdGhlIGV4cG9ydCB3aWxsIGJlIGVuY3J5cHRlZC4gSWYgcHJvdmlkZWQsIHRoaXNcbiAgICAgICAqIHB1YmxpYyBrZXkgTVVTVCBiZSB0aGUgb25lIHVzZWQgdG8gZW5jcnlwdCB0aGUgZXhwb3J0IG9uY2UgdGhlIGRlbGF5IGhhc1xuICAgICAgICogZXhwaXJlZC4gT3RoZXJ3aXNlLCB0aGUgdXNlciBjYW4gcHJvdmlkZSBhbnkgcHVibGljIGtleSB3aGVuIGNvbXBsZXRpbmdcbiAgICAgICAqIHRoZSBleHBvcnQgcmVxdWVzdCBwb3N0IGRlbGF5LlxuICAgICAgICpcbiAgICAgICAqIFRoaXMgb3B0aW9uIG1heSBwcm92aWRlIGV4dHJhIHNlY3VyaXR5IHdoZW4gdGhlIHVzZXIgaGFzIGEgc2VjdXJlIGhhcmR3YXJlXG4gICAgICAgKiBkZXZpY2UgKGUuZy4sIGEgcGhvbmUncyBzZWN1cmUgZWxlbWVudCBvciBhIFl1YmlLZXkpIGluIHdoaWNoIGEgTklTVCBQLTI1NlxuICAgICAgICogc2VjcmV0IGtleSBjYW4gYmUgZ2VuZXJhdGVkLiBQcm92aWRpbmcgdGhlIGNvcnJlc3BvbmRpbmcgcHVibGljIGtleSBoZXJlXG4gICAgICAgKiBlbnN1cmVzIHRoYXQgb25seSB0aGF0IHNwZWNpZmljIGRldmljZSB3aWxsIGJlIGNhcGFibGUgb2YgZGVjcnlwdGluZ1xuICAgICAgICogdGhlIGV4cG9ydCBjaXBoZXJ0ZXh0LlxuICAgICAgICpcbiAgICAgICAqIElmIG5vIHNlY3VyZSBoYXJkd2FyZSBkZXZpY2UgaXMgYXZhaWxhYmxlIHRvIHN0b3JlIHRoZSBzZWNyZXQga2V5LCB0aGlzXG4gICAgICAgKiBvcHRpb24gU0hPVUxEIE5PVCBiZSB1c2VkIGJlY2F1c2Ugb2YgdGhlIHJpc2sgb2Ygc2VjcmV0IGtleSB0aGVmdCBkdXJpbmdcbiAgICAgICAqIHRoZSBleHBvcnQgZGVsYXkgcGVyaW9kLlxuICAgICAgICogQGV4YW1wbGUgQWtwTFQvM2RYQXBKelhTZHVhUFE3YXB5VDBBREJ3cWt0MWVzL2FUMGlXV2ZcbiAgICAgICAqL1xuICAgICAgcHVibGljX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXNwb25zZSB0byBhIHN1Y2Nlc3NmdWwgdXNlci1leHBvcnQgaW5pdCByZXF1ZXN0ICovXG4gICAgVXNlckV4cG9ydEluaXRSZXNwb25zZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VyRXhwb3J0UmVxdWVzdFwiXSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBrZXktaWQgYmVpbmcgcmVxdWVzdGVkLlxuICAgICAgICogQGV4YW1wbGUgS2V5IzB4M2M0ZDkwQ2M1QWYxNjQ0QzNBM0IwMTNCYWE1NDg4OTk3MzgxRDdDOFxuICAgICAgICovXG4gICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUGVuZGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0IGFzIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UuICovXG4gICAgVXNlckV4cG9ydFJlcXVlc3Q6IHtcbiAgICAgIGV4cF9lcG9jaDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG9yZy1pZCBpbiB3aGljaCB0aGUga2V5IGlzIGhvdXNlZC5cbiAgICAgICAqIEBleGFtcGxlIE9yZyNmMzYxZWQ2Yi01ZDE5LTRjY2YtYTRkNS1lYmE5MzVkYzBiOTBcbiAgICAgICAqL1xuICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgU0hBLTI1NiBoYXNoIG9mIHRoZSBwdWJsaWMga2V5IHByb3ZpZGVkIGF0IGV4cG9ydCBpbml0aWF0aW9uLFxuICAgICAgICogaWYgYW55LiBJZiBhIGtleSB3YXMgcHJvdmlkZWQsIG9ubHkgdGhhdCBrZXkgY2FuIGJlIHVzZWQgdG8gY29tcGxldGVcbiAgICAgICAqIHRoZSBleHBvcnQgcHJvY2VkdXJlLiBPdGhlcndpc2UsIGFueSBrZXkgY2FuIGJlIHVzZWQuXG4gICAgICAgKlxuICAgICAgICogSU1QT1JUQU5UOiBpZiBhIHB1YmxpYyBrZXkgaXMgc3VwcGxpZWQgYXQgZXhwb3J0IGluaXRpYXRpb24sIGl0IGlzXG4gICAgICAgKiBTVFJPTkdMWSBSRUNPTU1FTkRFRCB0aGF0IHRoZSBjb3JyZXNwb25kaW5nIHNlY3JldCBrZXkgYmUgc3RvcmVkIGluXG4gICAgICAgKiBhIHNlY3VyZSBoYXJkd2FyZSBkZXZpY2UsIGUuZy4sIGEgWXViaUtleSBvciBhIHBob25lJ3Mgc2VjdXJlIGVsZW1lbnQuXG4gICAgICAgKiBJZiBubyBzdWNoIGhhcmR3YXJlIGlzIGF2YWlsYWJsZSwgc3VwcGx5aW5nIGEgcHVibGljIGtleSBhdCBleHBvcnRcbiAgICAgICAqIGluaXRpYXRpb24gaXMgU1RST05HTFkgRElTQ09VUkFHRUQgYmVjYXVzZSBvZiB0aGUgcmlzayBvZiB0aGVmdCBkdXJpbmdcbiAgICAgICAqIHRoZSBleHBvcnQgZGVsYXkgcGVyaW9kLlxuICAgICAgICpcbiAgICAgICAqIChTZWUgYWxzbyB0aGUgY29tbWVudCBpbiB0aGUgYHB1YmxpY19rZXlgIGZpZWxkIG9mIGBVc2VySW5pdFJlcXVlc3RgLilcbiAgICAgICAqIEBleGFtcGxlIGRmNDU3YTk4ZDU1Mzg1NDBmNTRkMTMxNmI1OTdhMGYzOWI4ZDk2ZjQ4OGYxMGEyZTMxYTk1NWMxNDZmZGYxZDNcbiAgICAgICAqL1xuICAgICAgcHVibGljX2tleV9oYXNoPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIHZhbGlkX2Vwb2NoOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgfTtcbiAgICBVc2VySW5PcmdJbmZvOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdXNlcidzIGVtYWlsIChvcHRpb25hbClcbiAgICAgICAqIEBleGFtcGxlIGFsaWNlQGV4YW1wbGUuY29tXG4gICAgICAgKi9cbiAgICAgIGVtYWlsPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUgdXNlclxuICAgICAgICogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGZcbiAgICAgICAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGUgdXNlciBoYXMgZXZlciBzdWNjZXNzZnVsbHkgbG9nZ2VkIGluICovXG4gICAgICBpbml0aWFsaXplZD86IGJvb2xlYW47XG4gICAgICBtZW1iZXJzaGlwOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1lbWJlclJvbGVcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHVzZXIgbmFtZS4gKi9cbiAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgc3RhdHVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1lbWJlcnNoaXBTdGF0dXNcIl07XG4gICAgICB2ZXJpZmllZF9lbWFpbD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVmVyaWZpZWRFbWFpbFwiXSB8IG51bGw7XG4gICAgfTtcbiAgICBVc2VySW5PcmdJbmZvV2l0aElkZW50aXR5OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdXNlcidzIGVtYWlsIChvcHRpb25hbClcbiAgICAgICAqIEBleGFtcGxlIGFsaWNlQGV4YW1wbGUuY29tXG4gICAgICAgKi9cbiAgICAgIGVtYWlsPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUgdXNlclxuICAgICAgICogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGZcbiAgICAgICAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGUgdXNlciBoYXMgZXZlciBzdWNjZXNzZnVsbHkgbG9nZ2VkIGluICovXG4gICAgICBpbml0aWFsaXplZD86IGJvb2xlYW47XG4gICAgICBtZW1iZXJzaGlwOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1lbWJlclJvbGVcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHVzZXIgbmFtZS4gKi9cbiAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgc3RhdHVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1lbWJlcnNoaXBTdGF0dXNcIl07XG4gICAgICB2ZXJpZmllZF9lbWFpbD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVmVyaWZpZWRFbWFpbFwiXSB8IG51bGw7XG4gICAgfSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgdGhpcmQtcGFydHkgaWRlbnRpdGllcyB2aWEgd2hpY2ggdGhlIHVzZXIgd2FzIGZvdW5kICovXG4gICAgICBpZGVudGl0aWVzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZGVudGl0eUluZm9cIl1bXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBJbmZvcm1hdGlvbiBhYm91dCBhIHVzZXIncyBtZW1iZXJzaGlwIGluIGFuIG9yZ2FuaXphdGlvblxuICAgICAqICh3aXRob3V0IGluY2x1ZGluZyBhbnkgaW5mbyBhYm91dCB0aGUgdXNlcilcbiAgICAgKi9cbiAgICBVc2VySW5PcmdNZW1iZXJzaGlwOiB7XG4gICAgICBtZW1iZXJzaGlwOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1lbWJlclJvbGVcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcmdhbml6YXRpb24gaWRcbiAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAqL1xuICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICBzdGF0dXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyc2hpcFN0YXR1c1wiXTtcbiAgICB9O1xuICAgIFVzZXJJblJvbGVJbmZvOiB7XG4gICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICBVc2VySW5mbzoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgZW1haWxcbiAgICAgICAqIEBleGFtcGxlIGFsaWNlQGV4YW1wbGUuY29tXG4gICAgICAgKi9cbiAgICAgIGVtYWlsPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIG11bHRpLWZhY3RvciBhdXRoZW50aWNhdGlvbiBtZXRob2RzIGNvbmZpZ3VyZWQgZm9yIHRoaXMgdXNlciAqL1xuICAgICAgbWZhOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbmZpZ3VyZWRNZmFcIl1bXTtcbiAgICAgIG1mYV9wb2xpY3k/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVBvbGljeVwiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBuYW1lXG4gICAgICAgKiBAZXhhbXBsZSBBbGljZVxuICAgICAgICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlcHJlY2F0ZWRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBbGwgb3JnYW5pemF0aW9ucyB0aGUgdXNlciBiZWxvbmdzIHRvLiBEZXByZWNhdGVkIGluIGZhdm9yIG9mICdvcmdzJy5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAgXCJPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXCJcbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgb3JnX2lkczogc3RyaW5nW107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBvcmdhbml6YXRpb25zIHRoZSB1c2VyIGJlbG9uZ3MgdG8sIGluY2x1ZGluZyB0aGUgbWVtYmVyc2hpcCByb2xlIGluIGVhY2guICovXG4gICAgICBvcmdzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJJbk9yZ01lbWJlcnNoaXBcIl1bXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyXG4gICAgICAgKiBAZXhhbXBsZSBVc2VyI2MzYjkzNzljLTRlOGMtNDIxNi1iZDBhLTY1YWNlNTNjZjk4ZlxuICAgICAgICovXG4gICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgICB2ZXJpZmllZF9lbWFpbD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVmVyaWZpZWRFbWFpbFwiXSB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXNwb25zZSB0byB0aGUgdXNlci9vcmdzIGVuZHBvaW50ICovXG4gICAgVXNlck9yZ3NSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbGlzdCBvZiBvcmdzIHRoaXMgdXNlciBpcyBhIG1lbWJlciBvZiAqL1xuICAgICAgb3JnczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPcmdEYXRhXCJdW107XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQSBXZWJBdXRobiBSZWx5aW5nIFBhcnR5IG1heSByZXF1aXJlIHVzZXIgdmVyaWZpY2F0aW9uIGZvciBzb21lIG9mIGl0c1xuICAgICAqIG9wZXJhdGlvbnMgYnV0IG5vdCBmb3Igb3RoZXJzLCBhbmQgbWF5IHVzZSB0aGlzIHR5cGUgdG8gZXhwcmVzcyBpdHMgbmVlZHMuXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZW51bS11c2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnRcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIFVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudDogXCJyZXF1aXJlZFwiIHwgXCJkaXNjb3VyYWdlZFwiIHwgXCJwcmVmZXJyZWRcIjtcbiAgICBWZXJpZmllZEVtYWlsOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEVtYWlsIGFkZHJlc3MgKi9cbiAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBMYXN0IHRpbWUgdGhpcyByZWNvcmQgd2FzIHVwZGF0ZWQgKGluIHNlY29uZHMgc2luY2UgdW5peCBlcG9jaClcbiAgICAgICAqL1xuICAgICAgdXBkYXRlZF9hdDogbnVtYmVyO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEFuIGV4aXQgdm9sdW50YXJpbHkgc3VibWl0dGVkIGEgdmFsaWRhdG9yIHdobyB3aXNoZXMgdG8gd2l0aGRyYXcuXG4gICAgICogVGhlIHNjaGVtYSBmb3IgdGhpcyBtZXNzYWdlIGlzIGRlZmluZWRcbiAgICAgKiBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL2V0aGVyZXVtL2NvbnNlbnN1cy1zcGVjcy9ibG9iL3YxLjAuMS9zcGVjcy9waGFzZTAvYmVhY29uLWNoYWluLm1kI3NpZ25lZHZvbHVudGFyeWV4aXQpLlxuICAgICAqL1xuICAgIFZvbHVudGFyeUV4aXQ6IHtcbiAgICAgIGVwb2NoOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSW5kZXggb2YgdGhlIGV4aXRpbmcgdmFsaWRhdG9yLlxuICAgICAgICogQGV4YW1wbGUgMjU2XG4gICAgICAgKi9cbiAgICAgIHZhbGlkYXRvcl9pbmRleDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVzcG9uc2UgZnJvbSBpbnZva2luZyBhIFdhc20gcG9saWN5LiAqL1xuICAgIFdhc21Qb2xpY3lSZXNwb25zZTpcbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIHJlc3BvbnNlOiBcIkFsbG93XCI7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlYXNvbiBmb3IgdGhlIGRlbmlhbC4gKi9cbiAgICAgICAgICByZWFzb246IHN0cmluZztcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICByZXNwb25zZTogXCJEZW55XCI7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGVycm9yIGZyb20gdGhlIFBvbGljeSBFbmdpbmUuICovXG4gICAgICAgICAgZXJyb3I6IHN0cmluZztcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICByZXNwb25zZTogXCJFcnJvclwiO1xuICAgICAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSB3YXNtIHBvbGljeSBydWxlIHRoYXQgY2FuIGJlIGV4ZWN1dGVkIGluIHRoZSB3YXNtIGVuZ2luZS4gKi9cbiAgICBXYXNtUnVsZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgU0hBLTI1NiBoYXNoIG9mIGEgd2FzbSBwb2xpY3kgdGhhdCBjYW4gYmUgdXNlZCB0byBsb29rIGl0IHVwIGluIHRoZSBwb2xpY3kgc3RvcmUuICovXG4gICAgICBoYXNoOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBJZCBvZiB0aGUgcG9saWN5IHRoaXMgd2FzbSBydWxlIGJlbG9uZ3MgdG8uICovXG4gICAgICBwb2xpY3lfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBbGxvd2VkIHdlYmhvb2sgbWV0aG9kc1xuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgV2ViaG9va01ldGhvZDogXCJHRVRcIiB8IFwiUE9TVFwiO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcGF5bG9hZCB0aGF0IGlzIHNlbnQgdG8gdGhlIHdlYmhvb2suXG4gICAgICpcbiAgICAgKiBUaGUgd2ViaG9vayBzaG91bGQgcmVzcG9uZCB3aXRoIEhUVFAgc3RhdHVzIGNvZGUgMjAwIGlmIHRoZSBvcGVyYXRpb24gaXMgcGVybWl0dGVkLlxuICAgICAqXG4gICAgICogQWxsIG5vbi0yMDAgc3RhdHVzIGNvZGVzIGltcGx5IHRoYXQgdGhlIG9wZXJhdGlvbiBpcyBkZW5pZWQ7IGFueSByZXNwb25zZSBib2R5IHJldHVybmVkXG4gICAgICogYnkgdGhlIHdlYmhvb2sgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgZXJyb3IgcmVzcG9uc2Ugc2VudCBiYWNrIHRvIHRoZSBjbGllbnQuXG4gICAgICovXG4gICAgV2ViaG9va1BheWxvYWQ6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGFkZHJlc3MgKG1hdGVyaWFsIGlkKSBvZiB0aGUga2V5IHVzZWQgdG8gc2lnbiB0aGUgcmVxdWVzdCAqL1xuICAgICAga2V5X2FkZHJlc3M6IHN0cmluZztcbiAgICAgIGtleV90eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleVR5cGVcIl07XG4gICAgICBvcGVyYXRpb246IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT3BlcmF0aW9uS2luZFwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHBheWxvYWQgKGlmIGFueSkgb2YgdGhlIHNpZ24gb3BlcmF0aW9uICovXG4gICAgICByZXF1ZXN0PzogdW5rbm93bjtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUGFyYW1ldGVycyBmb3IgdGhlIFtEZW55OjpXZWJob29rXSBwb2xpY3kuICovXG4gICAgV2ViaG9va1BvbGljeVBhcmFtczoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBIVFRQIGhlYWRlcnMgdG8gc2V0ICovXG4gICAgICBoZWFkZXJzPzoge1xuICAgICAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gICAgICB9O1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBIVFRQIG1ldGhvZCB0byB1c2UuIERlZmF1bHRzIHRvIFBPU1QuICovXG4gICAgICBtZXRob2Q/OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDdWJlU2lnbmVyIG9wZXJhdGlvbnMgdG8gd2hpY2ggdGhpcyBwb2xpY3kgc2hvdWxkIGFwcGx5LlxuICAgICAgICogV2hlbiBvbWl0dGVkLCBhcHBsaWVzIHRvIGFsbCBvcGVyYXRpb25zLlxuICAgICAgICovXG4gICAgICByZXN0cmljdGVkX29wZXJhdGlvbnM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9wZXJhdGlvbktpbmRcIl1bXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGV4ZWN1dGlvbiB0aW1lb3V0IGluIHNlY29uZHM7IG11c3Qgbm90IGV4Y2VlZCA1IHNlY29uZHMuXG4gICAgICAgKi9cbiAgICAgIHRpbWVvdXQ/OiBudW1iZXI7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB1cmwgb2YgdGhlIHdlYmhvb2sgKi9cbiAgICAgIHVybDogc3RyaW5nO1xuICAgIH07XG4gICAgV2hlcmVBbmRXaGVuOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNvdXJjZUlwXCJdICYge1xuICAgICAgdGltZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgIH07XG4gIH07XG4gIHJlc3BvbnNlczoge1xuICAgIEFkZFRoaXJkUGFydHlVc2VyUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGYgKi9cbiAgICAgICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVzcG9uc2UgdG8gdGhlIGlkcCBhdXRoZW50aWNhdGUgZW5kcG9pbnQgKi9cbiAgICBBdXRoZW50aWNhdGlvblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBPSURDIHRva2VuIHRoYXQgY2FuIGJlIHVzZWQgdG8gYXV0aGVudGljYXRlIHdpdGggQ3ViZVNpZ25lciAqL1xuICAgICAgICAgIGlkX3Rva2VuOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgQmFieWxvbkNvdlNpZ25SZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWN5IGV2YWx1YXRpb24gdHJlZS4gKi9cbiAgICAgICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHNsYXNoLXVuYm9uZGluZyB0cmFuc2FjdGlvbiBzaWduYXR1cmVzIGFzIGFuIGFycmF5IG9mIGhleCBzdHJpbmdzIHdpdGggbm8gMHggcHJlZml4XG4gICAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgICAqICAgXCIwMmUyMWE3YjA1MTk1MzllZjY3MGY3OWQxYzI1YTU0ZjkwYjBjNmQ5ZmRiNTZhN2RlODEzZmIyMDcwMzMwMzJmZmZhZDhhYWFmZWIxYjc3ZGQ5ZWE4ZjE3ZGFkY2YyOTc2OTZiYmY1YTQxMzMyOTJmMzUxNWI4NmJiOWMyZDc4ZDljXCJcbiAgICAgICAgICAgKiBdXG4gICAgICAgICAgICovXG4gICAgICAgICAgc2xhc2hfdW5ib25kaW5nX3RyYW5zYWN0aW9uc19zaWduYXR1cmVzOiBzdHJpbmdbXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHNsYXNoaW5nIHRyYW5zYWN0aW9uIHNpZ25hdHVyZXMgYXMgYW4gYXJyYXkgb2YgaGV4IHN0cmluZ3Mgd2l0aCBubyAweCBwcmVmaXhcbiAgICAgICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgICAgICogICBcIjAzMDc1ZWNhOWQxNzZkMTYwNWQ2YzA5NmMxMTFlOWE0ZjhkODczOWFjOTcwOGMxZGYzZWQ1MTYxMDZlN2FiMTM4N2EzOTI0YTY2NTJhY2YyZTM1MjQzNTk3MzFjYTFmYmIzMzhhM2FmYjFhNjdmNmVhMTljMjA3YjZmZjQ2NmE1YWRcIixcbiAgICAgICAgICAgKiAgIFwiMDIyMjI0NDkzZjRjZmZhZDViODQwNzZkYjMyZGQ4YzQ5YTI4ZmY0OGFmNGUxOWUyYmNjOTk1M2ZmODAzNDdiYTZlODM0M2NmN2E0NGU3NGE5NmZmNzFlYTU5YTAzYjQwMTY2ZTg1YjBkMTM1NTk1NGUwNGE0NDI3ZGM4ZDYzN2ZmMFwiXG4gICAgICAgICAgICogXVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHNsYXNoaW5nX3RyYW5zYWN0aW9uc19zaWduYXR1cmVzOiBzdHJpbmdbXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHNpZ25hdHVyZSB0aGF0IGFsbG93cyBleHBhbmRpbmcgYSBzdGFrZSBieSBzcGVuZGluZyB0aGUgY3VycmVudCBhY3RpdmVcbiAgICAgICAgICAgKiBzdGFrZSB0cmFuc2FjdGlvbiBpbnRvIGEgbmV3IHN0YWtpbmcgdHJhbnNhY3Rpb24uIEEgdmFsdWUgaXMgcHJlc2VudCBpZmYgdGhlXG4gICAgICAgICAgICogY29ycmVzcG9uZGluZyByZXF1ZXN0IGluY2x1ZGVkIGEgYHN0YWtlX2V4cGFuc2lvbmAgdmFsdWUuXG4gICAgICAgICAgICogQGV4YW1wbGUgYjU3M2UzMTg4MDNmZDdhZWUxYmU1YjZiMThkNDk2Y2M2MGVjYzUyNDI5ZGJkNDc3YTg3OTIxN2MzZWQyNmE3OTVjYjRmNGU4ODBhYWZmM2E2YWQ2NjMzNWU1NDA0ZmE1MWNhZWI0OTY0ZjBjOWY3NTYyNzM3ODY0ZTNiZGU1YmNcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBzdGFrZV9leHBhbnNpb25fdHJhbnNhY3Rpb25fc2lnbmF0dXJlPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHVuYm9uZGluZyB0cmFuc2FjdGlvbiBzaWduYXR1cmUgYXMgaGV4IHN0cmluZyB3aXRoIG5vIDB4IHByZWZpeFxuICAgICAgICAgICAqIEBleGFtcGxlIGI1NzNlMzE4ODAzZmQ3YWVlMWJlNWI2YjE4ZDQ5NmNjNjBlY2M1MjQyOWRiZDQ3N2E4NzkyMTdjM2VkMjZhNzk1Y2I0ZjRlODgwYWFmZjNhNmFkNjYzMzVlNTQwNGZhNTFjYWViNDk2NGYwYzlmNzU2MjczNzg2NGUzYmRlNWJjXG4gICAgICAgICAgICovXG4gICAgICAgICAgdW5ib25kaW5nX3RyYW5zYWN0aW9uX3NpZ25hdHVyZTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEJhYnlsb25SZWdpc3RyYXRpb25SZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWN5IGV2YWx1YXRpb24gdHJlZS4gKi9cbiAgICAgICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIEJhYnlsb24gYWRkcmVzcyB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgc3Rha2luZyByZXdhcmRzIGZvciB0aGlzIGRlcG9zaXQuXG4gICAgICAgICAgICpcbiAgICAgICAgICAgKiBUaGlzIHZhbHVlIHdpbGwgY29ycmVzcG9uZCB0byB0aGUgYGJibl9hZGRyYCB2YWx1ZSBzcGVjaWZpZWQgaW4gdGhlIHJlcXVlc3QsXG4gICAgICAgICAgICogYnV0IGl0IHdpbGwgYWx3YXlzIGhhdmUgYSBgYmJuYCBodW1hbi1yZWFkYWJsZSBwYXJ0LlxuICAgICAgICAgICAqIEBleGFtcGxlIGJibjFuNWFubWMwa2tyaDcweWp5N2Y2ZjM5OWM3NHlkMDl4bDV0ZWZmbVxuICAgICAgICAgICAqL1xuICAgICAgICAgIGJibl9hZGRyOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBkZXBvc2l0IHRyYW5zYWN0aW9uIFBTQlQuIFRoaXMgUFNCVCBpbmNsdWRlcyBzaWduYXR1cmVzIG9uIGFueVxuICAgICAgICAgICAqIGlucHV0cyBjb250cm9sbGVkIGJ5IHRoZSBzdGFrZXIgdGFwcm9vdCBrZXkgc3BlY2lmaWVkIGluIHRoZSByZXF1ZXN0LlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGRlcG9zaXQ6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBkZXBvc2l0IHRyYW5zYWN0aW9uIGZlZSBpbiBzYXRzLlxuICAgICAgICAgICAqIEBleGFtcGxlIDEzMzdcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBkZXBvc2l0X2ZlZTogbnVtYmVyO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcHJvb2Ygb2YgcG9zc2Vzc2lvbiwgaS5lLiwgYSBCSVAzMjIgc2lnbmF0dXJlIG9uIHRoZSBzdGFrZXInc1xuICAgICAgICAgICAqIEJhYnlsb24gYWRkcmVzcyBzaWduZWQgYnkgdGhlIHN0YWtlciB0YXByb290IGtleS4gVGhpcyBpcyBhIEJpdGNvaW5cbiAgICAgICAgICAgKiB3aXRuZXNzIHN0YWNrIGluIEJpdGNvaW4gY29uc2Vuc3VzIGhleCBlbmNvZGluZy5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwb3A6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBzbGFzaC1kZXBvc2l0IHRyYW5zYWN0aW9uIGluIEJpdGNvaW4gY29uc2Vuc3VzIGhleCBlbmNvZGluZy4gKi9cbiAgICAgICAgICBzbGFzaF9kZXBvc2l0OiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFrZXIgdGFwcm9vdCBrZXkncyBzaWduYXR1cmUgb24gdGhlIHNsYXNoLWRlcG9zaXQgdHJhbnNhY3Rpb24uXG4gICAgICAgICAgICogVGhpcyBpcyBhIEJJUDM0MCBzaWduYXR1cmUgaW4gaGV4IGZvcm1hdC5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBzbGFzaF9kZXBvc2l0X3NpZzogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHNsYXNoLXVuYm9uZCB0cmFuc2FjdGlvbiBpbiBCaXRjb2luIGNvbnNlbnN1cyBoZXggZW5jb2RpbmcuICovXG4gICAgICAgICAgc2xhc2hfdW5ib25kOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFrZXIgdGFwcm9vdCBrZXkncyBzaWduYXR1cmUgb24gdGhlIHNsYXNoLXVuYm9uZCB0cmFuc2FjdGlvbi5cbiAgICAgICAgICAgKiBUaGlzIGlzIGEgQklQMzQwIHNpZ25hdHVyZSBpbiBoZXggZm9ybWF0LlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHNsYXNoX3VuYm9uZF9zaWc6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSAodW5zaWduZWQpIHVuYm9uZGluZyB0cmFuc2FjdGlvbiBpbiBCaXRjb2luIGNvbnNlbnN1cyBoZXggZW5jb2RpbmcuICovXG4gICAgICAgICAgdW5ib25kOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgQmFieWxvblN0YWtpbmdSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWN5IGV2YWx1YXRpb24gdHJlZS4gKi9cbiAgICAgICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB0cmFuc2FjdGlvbiBmZWUgaW4gc2F0c1xuICAgICAgICAgICAqIEBleGFtcGxlIDEzMzdcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBmZWU6IG51bWJlcjtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFBTQlQgaW4gZWl0aGVyIGhleCBvciBiYXNlNjQgc2VyaWFsaXphdGlvblxuICAgICAgICAgICAqIEBleGFtcGxlIDcwNzM2Mjc0ZmYwMTAwNWUuLi5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwc2J0OiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBCVEMgbWVzc2FnZSBzaWduaW5nIHJlc3BvbnNlICovXG4gICAgQnRjTWVzc2FnZVNpZ25SZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWN5IGV2YWx1YXRpb24gdHJlZS4gKi9cbiAgICAgICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBiYXNlNjQtZW5jb2RlZCBzaWduYXR1cmUgaW4gQklQMTM3IGZvcm1hdC4gKi9cbiAgICAgICAgICBzaWc6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBudW1iZXIgb2YgdXNlcnMgYW5kIGtleXMgaW4gYW4gb3JnLCBvcmdhbml6ZWQgYnkgdXNlciByb2xlIGFuZCBrZXkgdHlwZSAqL1xuICAgIENvbXB1dGVDb3VudHNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBIG1hcCBvZiBhIGBLZXlUeXBlYCB0byB0aGUgYW1vdW50IG9mIGtleXMgd2l0aCB0aGF0IHR5cGUgaW4gdGhlIG9yZy5cbiAgICAgICAgICAgKiBAZXhhbXBsZSB7XG4gICAgICAgICAgICogICBcIlNlY3BCdGNcIjogMyxcbiAgICAgICAgICAgKiAgIFwiU2VjcEV0aEFkZHJcIjogMVxuICAgICAgICAgICAqIH1cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBrZXlzOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBudW1iZXI7XG4gICAgICAgICAgfTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gQSBtYXAgb2YgYSBgTWVtYmVyUm9sZWAgdG8gdGhlIGFtb3VudCBvZiBudW1iZXIgb2YgdXNlcnMgd2l0aCB0aGF0IHJvbGUgaW4gdGhlIG9yZy5cbiAgICAgICAgICAgKiBAZXhhbXBsZSB7XG4gICAgICAgICAgICogICBcIk1lbWJlclwiOiAxMCxcbiAgICAgICAgICAgKiAgIFwiT3duZXJcIjogMVxuICAgICAgICAgICAqIH1cbiAgICAgICAgICAgKi9cbiAgICAgICAgICB1c2Vyczoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogbnVtYmVyO1xuICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBJbmZvcm1hdGlvbiBhYm91dCBhIENvbnRhY3QuICovXG4gICAgQ29udGFjdEluZm9SZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDb250YWN0XCJdICYge1xuICAgICAgICAgIGFkZHJlc3NlczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBZGRyZXNzTWFwXCJdO1xuICAgICAgICAgIGlkOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIENyZWF0ZUtleUltcG9ydEtleVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUltcG9ydEtleVwiXSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gQW4gYXR0ZXN0YXRpb24gZG9jdW1lbnQgZnJvbSBhIHNlY3VyZSBlbmNsYXZlLCBpbmNsdWRpbmcgYW5cbiAgICAgICAgICAgKiBSU0Egc2lnbmluZyBrZXkgdXNlZCB0byBzaWduIHRoZSBjb250ZW50cyBvZiB0aGlzIG1lc3NhZ2UuXG4gICAgICAgICAgICovXG4gICAgICAgICAgZW5jbGF2ZV9hdHRlc3RhdGlvbjogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBbiBSU0EtUFNTLVNIQTI1NiBzaWduYXR1cmUgb24gdGhlIHB1YmxpYyBrZXkgYW5kIGVuY3J5cHRlZFxuICAgICAgICAgICAqIHNlY3JldHMgYXR0ZXN0aW5nIHRvIHRoZWlyIGdlbmVyYXRpb24gaW5zaWRlIGEgc2VjdXJlIGVuY2xhdmUuXG4gICAgICAgICAgICovXG4gICAgICAgICAgZW5jbGF2ZV9zaWduYXR1cmU6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBDcmVhdGVLZXlSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGluZm8gYWJvdXQgdGhlIGNyZWF0ZWQga2V5cyAqL1xuICAgICAgICAgIGtleXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5mb1wiXVtdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcmVzcG9uc2UgdG8gW2NyZWF0ZV9pbXBvcnRfa2V5XSBjb250YWluaW5nIHRoZSBnZW5lcmF0ZWQga2V5IGFuZCBlbmNsYXZlXG4gICAgICogYXR0ZXN0YXRpb25zLlxuICAgICAqL1xuICAgIENyZWF0ZVBvbGljeUltcG9ydEtleVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUltcG9ydEtleVwiXSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gQW4gYXR0ZXN0YXRpb24gZG9jdW1lbnQgZnJvbSBhIHNlY3VyZSBlbmNsYXZlLCBpbmNsdWRpbmcgYW5cbiAgICAgICAgICAgKiBSU0Egc2lnbmluZyBrZXkgdXNlZCB0byBzaWduIHRoZSBjb250ZW50cyBvZiB0aGlzIG1lc3NhZ2UuXG4gICAgICAgICAgICovXG4gICAgICAgICAgZW5jbGF2ZV9hdHRlc3RhdGlvbjogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBbiBSU0EtUFNTLVNIQTI1NiBzaWduYXR1cmUgb24gdGhlIHB1YmxpYyBrZXkgYW5kIGVuY3J5cHRlZFxuICAgICAgICAgICAqIHNlY3JldHMgYXR0ZXN0aW5nIHRvIHRoZWlyIGdlbmVyYXRpb24gaW5zaWRlIGEgc2VjdXJlIGVuY2xhdmUuXG4gICAgICAgICAgICovXG4gICAgICAgICAgZW5jbGF2ZV9zaWduYXR1cmU6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBuZXdseSBjcmVhdGVkIHJvbGUgaW5mb3JtYXRpb24gKi9cbiAgICBDcmVhdGVSb2xlUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gQSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgcm9sZS5cbiAgICAgICAgICAgKiBAZXhhbXBsZSBteV9yb2xlXG4gICAgICAgICAgICovXG4gICAgICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUgbmV3bHkgY3JlYXRlZCByb2xlXG4gICAgICAgICAgICogQGV4YW1wbGUgUm9sZSNiZmUzZWNjYi03MzFlLTQzMGQtYjFlNS1hYzEzNjNlNmIwNmJcbiAgICAgICAgICAgKi9cbiAgICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0byBbQ3VzdG9tQ2hhaW5ScGNSZXF1ZXN0XSAqL1xuICAgIEN1c3RvbUNoYWluUnBjUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHVua25vd247XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVzdWx0IG9mIGEgRGlmZmllIEhlbGxtYW4ga2V5IGV4Y2hhbmdlICovXG4gICAgRGlmZmllSGVsbG1hblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiAoXG4gICAgICAgICAgfCB7XG4gICAgICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlc3VsdGluZyBwb2ludHMgYXMgYmFzZTY0LWVuY29kZWQgYnl0ZSBzdHJpbmdzIGluIGEga2V5LXR5cGUtLWRlcGVuZGVudCBmb3JtYXQuICovXG4gICAgICAgICAgICAgIHBvaW50czogc3RyaW5nW107XG4gICAgICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgICAgICByZXNwb25zZV90eXBlOiBcIm1hc2tlZFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIEEgY2lwaGVydGV4dCBjb250YWluaW5nIHRoZSByZXN1bHRpbmcgcG9pbnRzLiBUaGUgZW5jbG9zZWQgcGxhaW50ZXh0IGlzIGEgc2VxdWVuY2VcbiAgICAgICAgICAgICAgICogb2YgYmFzZTY0LWVuY29kZWQgYnl0ZSBzdHJpbmdzIGluIGEga2V5LXR5cGUtLWRlcGVuZGVudCBmb3JtYXQuXG4gICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICBlbmNyeXB0ZWRfc2hhcmVkX3NlY3JldHM6IHN0cmluZztcbiAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZXBoZW1lcmFsIHB1YmxpYyBrZXkgdXNlZCBmb3IgSFBLRSBrZXkgZGVyaXZhdGlvbiBpbiBiYXNlNjQtZW5jb2RlZFxuICAgICAgICAgICAgICAgKiB1bmNvbXByZXNzZWQgU0VDMSBzZXJpYWxpemF0aW9uLlxuICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgZXBoZW1lcmFsX3B1YmxpY19rZXk6IHN0cmluZztcbiAgICAgICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgICAgIHJlc3BvbnNlX3R5cGU6IFwiZW5jcnlwdGVkXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICkgJiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY3kgZXZhbHVhdGlvbiB0cmVlLiAqL1xuICAgICAgICAgIHBvbGljeV9ldmFsX3RyZWU/OiB1bmtub3duO1xuICAgICAgICB9ICYgUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSFRUUCByZXNwb25zZSB0byBhbiBlbWFpbCBPVFAgcmVxdWVzdC5cbiAgICAgKlxuICAgICAqIFRoaXMgcmVzcG9uc2UgY29udGFpbnMgYW4gT0lEQyB0b2tlbiB3aXRob3V0IGEgc2lnbmF0dXJlLlxuICAgICAqIFRoZSBzaWduYXR1cmUgaXMgc2VudCB0byB0aGUgZW5kLXVzZXIgaW4gYW4gZW1haWwuXG4gICAgICogVGhlIHRva2VuIGNhbiBiZSByZWNvbnN0cnVjdGVkIGJ5IGNvbmNhdGVuYXRpbmcgdGhlIGBwYXJ0aWFsX3Rva2VuYCB3aXRoIHRoZSBzaWduYXR1cmUuXG4gICAgICovXG4gICAgRW1haWxPdHBSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgT0lEQyB0b2tlbiB3aXRob3V0IHRoZSBzaWduYXR1cmUuXG4gICAgICAgICAgICogKFRoZSBzaWduYXR1cmUsIHdoaWNoIGlzIGFjdHVhbGx5IGEgTUFDLCBpcyBzZW50IHRvIHRoZSBlbmQtdXNlciBpbiBhbiBlbWFpbClcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwYXJ0aWFsX3Rva2VuOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgRW1wdHlJbXBsOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSBnZW5lcmF0ZWQgd2hlbiBjcmVhdGluZyBFT1RTIG5vbmNlcyAqL1xuICAgIEVvdHNDcmVhdGVOb25jZVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY3kgZXZhbHVhdGlvbiB0cmVlLiAqL1xuICAgICAgICAgIHBvbGljeV9ldmFsX3RyZWU/OiB1bmtub3duO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZ2VuZXJhdGVkIG5vbmNlcyBhcyBhbiBhcnJheSBvZiAweC1wcmVmaXhlZCBoZXggc3RyaW5nc1xuICAgICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICAgKiAgIFwiMHhiMzkzYmYzOWU3MWExNmQ3ODQ4NTNkNTgyNTVhMjk2MjIyYTk5ZmQzYzg3YWE3Y2EyMDZjNTIzMGMxODhmMWM3XCIsXG4gICAgICAgICAgICogICBcIjB4ZTAxOTM2NTg0YjRmMGMwZTk3ZjBkMzAxOGM0ZjlkYjJiZjdkZTQxMzk1YzY0MDNhNDhmZDBkZmYwZWY3YjQwZFwiXG4gICAgICAgICAgICogXVxuICAgICAgICAgICAqL1xuICAgICAgICAgIG5vbmNlczogc3RyaW5nW107XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0byBbRXNwbG9yYVJlcXVlc3RdICovXG4gICAgRXNwbG9yYVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB1bmtub3duO1xuICAgICAgfTtcbiAgICB9O1xuICAgIEV0aDFTaWduUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHBvbGljeSBldmFsdWF0aW9uIHRyZWUuICovXG4gICAgICAgICAgcG9saWN5X2V2YWxfdHJlZT86IHVua25vd247XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIFJMUCBlbmNvZGluZyBvZiB0aGUgdHJhbnNhY3Rpb24gYW5kIGl0cyBzaWduYXR1cmVcbiAgICAgICAgICAgKiBAZXhhbXBsZSAweDIyODk1MTE4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTIwMWQ1ODY1NmIwZTIyYWFhNjhmZGM2OTJkYjQxOTc5MDk4YzM4ODZlZDMzMDE1ZDc0NjdkZTkyMTE2MDljZGFjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzA4YjBjMjkwMDMyNGQzZmY5YWRmYmE3ZmRmZTVhZjNmOWIyY2RiZWVmN2IyODA0MzdiYmYxYjFjNTlhMDkzZDYxNWFmZTNlNWRmZWQ5NjIyYjU0MGNkZDliNDliM2M1YWQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0OTAxMWFkYmNjM2JjOWMwMzA3YmIwN2YzN2RkYTFhMWE5YzY5ZDJlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2MDkwM2RiODUyNTY3NGI4ZTc5MDRmOWI3ZDdkOWVjNTVhMGE0MmQzM2NmNThiZTI1NDY5YjBjMjFiYmI2ZDA2MTcyYmM1YmI1ZmQxYWVkOGU0ZjM1OTM2OTY4OTU4MTE2YjA2MTk1NTNjMmNiMWM1MmU3MzIzMDc0YzZmOGViM2Q1YTcwNzRmYzY1ODAxNDhkZjkwNzgzN2ZhM2IxNjRhZDdmYmMyMjg4ZGFkMWU4YTViMDIxMDk1YjU3YzhhMzZkNFxuICAgICAgICAgICAqL1xuICAgICAgICAgIHJscF9zaWduZWRfdHg6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBGaWRvQXNzZXJ0Q2hhbGxlbmdlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiAoY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDaGFsbGVuZ2VQaWVjZXNcIl0gJiB7XG4gICAgICAgICAgb3B0aW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnNcIl07XG4gICAgICAgIH0pICYge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBjaGFsbGVuZ2UuIE11c3QgYmUgc3VwcGxpZWQgd2hlbiBhbnN3ZXJpbmcgdGhlIGNoYWxsZW5nZS4gKi9cbiAgICAgICAgICBjaGFsbGVuZ2VfaWQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gU2VudCBieSB0aGUgc2VydmVyIHRvIHRoZSBjbGllbnQuIENvbnRhaW5zIHRoZSBjaGFsbGVuZ2UgZGF0YSB0aGF0IG11c3QgYmVcbiAgICAgKiB1c2VkIHRvIGdlbmVyYXRlIGEgbmV3IGNyZWRlbnRpYWxcbiAgICAgKi9cbiAgICBGaWRvQ3JlYXRlQ2hhbGxlbmdlUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IChjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNoYWxsZW5nZVBpZWNlc1wiXSAmIHtcbiAgICAgICAgICBvcHRpb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnNcIl07XG4gICAgICAgIH0pICYge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBjaGFsbGVuZ2UuIE11c3QgYmUgc3VwcGxpZWQgd2hlbiBhbnN3ZXJpbmcgdGhlIGNoYWxsZW5nZS4gKi9cbiAgICAgICAgICBjaGFsbGVuZ2VfaWQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBHZXRVc2VyQnlFbWFpbFJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFR5cGljYWxseSwgdGhpcyBhcnJheSBpcyBlaXRoZXIgZW1wdHkgKGlmIG5vIHVzZXIgd2l0aCBhIGdpdmVuIGVtYWlsIHdhcyBmb3VuZClcbiAgICAgICAgICAgKiBvciBjb250YWlucyBhIHNpbmdsZSBlbGVtZW50LCBpLmUuLCB0aGUgdXNlciB3aXRoIGEgZ2l2ZW4gZW1haWwuXG4gICAgICAgICAgICovXG4gICAgICAgICAgdXNlcnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckluT3JnSW5mb1dpdGhJZGVudGl0eVwiXVtdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEdldFVzZXJCeU9pZGNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIHVzZXI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJJbk9yZ0luZm9XaXRoSWRlbnRpdHlcIl0gfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBQcm9vZiB0aGF0IGFuIGVuZC11c2VyIHByb3ZpZGVkIEN1YmVTaWduZXIgd2l0aCBhIHZhbGlkIGF1dGggdG9rZW5cbiAgICAgKiAoZWl0aGVyIGFuIE9JREMgdG9rZW4gb3IgYSBDdWJlU2lnbmVyIHNlc3Npb24gdG9rZW4pXG4gICAgICovXG4gICAgSWRlbnRpdHlQcm9vZjoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIGF1ZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXVkXCJdIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGVtYWlsIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXNlclxuICAgICAgICAgICAqIEBleGFtcGxlIHVzZXJAZW1haWwuY29tXG4gICAgICAgICAgICovXG4gICAgICAgICAgZW1haWw/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIGV4cF9lcG9jaDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgICAgIGlkZW50aXR5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPaWRjSWRlbnRpdHlcIl0gfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdXNlcm5hbWUgKGlmIGFueSkgYXNzb2NpYXRlZCB3aXRoIHRoZSB1c2VyXG4gICAgICAgICAgICogQGV4YW1wbGUgY3ViaXN0ZGV2XG4gICAgICAgICAgICovXG4gICAgICAgICAgcHJlZmVycmVkX3VzZXJuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICB1c2VyX2luZm8/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkN1YmVTaWduZXJVc2VySW5mb1wiXSB8IG51bGw7XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBvcGFxdWUgaWRlbnRpZmllciBmb3IgdGhlIHByb29mICovXG4gICAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXN1bHQgb2YgaW52b2tpbmcgYSBXYXNtIHBvbGljeS4gKi9cbiAgICBJbnZva2VQb2xpY3lSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIHJlc3BvbnNlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIldhc21Qb2xpY3lSZXNwb25zZVwiXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGJ5dGVzIHdyaXR0ZW4gdG8gYHN0ZGVycmAsIGVuY29kZWQgYXMgYSBoZXgtc3RyaW5nLlxuICAgICAgICAgICAqIEluIG1vc3QgY2FzZXMsIHRoZXNlIGJ5dGVzIGNvcnJlc3BvbmQgdG8gYSBVVEYtOC1lbmNvZGVkIGBTdHJpbmdgLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHN0ZGVycjogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgYnl0ZXMgd3JpdHRlbiB0byBgc3Rkb3V0YCwgZW5jb2RlZCBhcyBhIGhleC1zdHJpbmcuXG4gICAgICAgICAgICogSW4gbW9zdCBjYXNlcywgdGhlc2UgYnl0ZXMgY29ycmVzcG9uZCB0byBhIFVURi04LWVuY29kZWQgYFN0cmluZ2AuXG4gICAgICAgICAgICovXG4gICAgICAgICAgc3Rkb3V0OiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgSnJwY1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJlc3BvbnNlXCJdICYgUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSBKU09OIFdlYiBLZXkgc2V0IGRlc2NyaWJpbmcgdGhlIGtleSB1c2VkIHRvIHNpZ24gSlNPTiBXZWIgVG9rZW5zICovXG4gICAgSndrU2V0UmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBrZXlzIGluY2x1ZGVkIGluIHRoaXMgc2V0ICovXG4gICAgICAgICAga2V5czogUmVjb3JkPHN0cmluZywgbmV2ZXI+W107XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBEZXJpdmF0aW9uLXJlbGF0ZWQgbWV0YWRhdGEgZm9yIGtleXMgZGVyaXZlZCBmcm9tIGEgbG9uZy1saXZlZCBtbmVtb25pYyAqL1xuICAgIEtleURlcml2YXRpb25JbmZvOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgZGVyaXZhdGlvbiBwYXRoIHVzZWQgdG8gZGVyaXZlIHRoaXMga2V5ICovXG4gICAgICAgICAgZGVyaXZhdGlvbl9wYXRoOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbW5lbW9uaWMtaWQgb2YgdGhlIGtleSdzIHBhcmVudCBtbmVtb25pYyAqL1xuICAgICAgICAgIG1uZW1vbmljX2lkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHdyYXBwZWQga2V5LWltcG9ydCBrZXkgKi9cbiAgICBLZXlJbXBvcnRLZXk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEJhc2U2NC1lbmNvZGVkLCBlbmNyeXB0ZWQgZGF0YSBrZXkuICovXG4gICAgICAgICAgZGtfZW5jOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBFeHBpcmF0aW9uIHRpbWVzdGFtcCBleHByZXNzZWQgYXMgc2Vjb25kcyBzaW5jZSB0aGUgVU5JWCBlcG9jaC5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBleHBpcmVzOiBudW1iZXI7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBlcGhlbWVyYWwgcHVibGljIGtleSB0byB3aGljaCBhbiBpbXBvcnRlZCBrZXkgc2hvdWxkIGJlIGVuY3J5cHRlZC5cbiAgICAgICAgICAgKiBUaGlzIGlzIGEgUDM4NCBwdWJsaWMga2V5IGluIGJhc2U2NC1lbmNvZGVkIHVuY29tcHJlc3NlZCBTRUNHIGZvcm1hdC5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBCYXNlNjQtZW5jb2RlZCwgZW5jcnlwdGVkIHNlY3JldCBrZXkuICovXG4gICAgICAgICAgc2tfZW5jOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgS2V5SW5Sb2xlSW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBLZXkgSURcbiAgICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMHg4ZTM0ODQ2ODdlNjZjZGQyNmNmMDRjMzY0NzYzM2FiNGYzNTcwMTQ4XG4gICAgICAgICAgICovXG4gICAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICAgICAga2V5X2luZm8/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluZm9cIl0gfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBQb2xpY2llcyB0aGF0IGFyZSBjaGVja2VkIGJlZm9yZSB0aGlzIGtleSBpcyB1c2VkIG9uIGJlaGFsZiBvZiB0aGlzIHJvbGVcbiAgICAgICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgICAgICogICB7XG4gICAgICAgICAgICogICAgIFwiVHhSZWNlaXZlclwiOiBcIjB4OGM1OTQ2OTFjMGU1OTJmZmEyMWYxNTNhMTZhZTQxZGI1YmVmY2FhYVwiXG4gICAgICAgICAgICogICB9LFxuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcIlR4RGVwb3NpdFwiOiB7XG4gICAgICAgICAgICogICAgICAgXCJraW5kXCI6IFwiQ2Fub25pY2FsXCJcbiAgICAgICAgICAgKiAgICAgfVxuICAgICAgICAgICAqICAgfVxuICAgICAgICAgICAqIF1cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gUm9sZSBJRFxuICAgICAgICAgICAqIEBleGFtcGxlIFJvbGUjZTQyN2MyOGEtOWM1Yi00OWNjLWEyNTctODc4YWVhNThhMjJjXG4gICAgICAgICAgICovXG4gICAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEtleUluZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ29tbW9uRmllbGRzXCJdICYge1xuICAgICAgICAgIGRlcml2YXRpb25faW5mbz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5RGVyaXZhdGlvbkluZm9cIl0gfCBudWxsO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGUga2V5IGlzIGVuYWJsZWQgKG9ubHkgZW5hYmxlZCBrZXlzIG1heSBiZSB1c2VkIGZvciBzaWduaW5nKSAqL1xuICAgICAgICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUga2V5OiBcIktleSNcIiBmb2xsb3dlZCBieSBhIHVuaXF1ZSBpZGVudGlmaWVyIHNwZWNpZmljIHRvXG4gICAgICAgICAgICogdGhlIHR5cGUgb2Yga2V5IChzdWNoIGFzIGEgcHVibGljIGtleSBmb3IgQkxTIG9yIGFuIGV0aGVyZXVtIGFkZHJlc3MgZm9yIFNlY3ApXG4gICAgICAgICAgICogQGV4YW1wbGUgS2V5IzB4OGUzNDg0Njg3ZTY2Y2RkMjZjZjA0YzM2NDc2MzNhYjRmMzU3MDE0OFxuICAgICAgICAgICAqL1xuICAgICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgICAgIGtleV90eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleVR5cGVcIl07XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEEgdW5pcXVlIGlkZW50aWZpZXIgc3BlY2lmaWMgdG8gdGhlIHR5cGUgb2Yga2V5LCBzdWNoIGFzIGEgcHVibGljIGtleSBvciBhbiBldGhlcmV1bSBhZGRyZXNzXG4gICAgICAgICAgICogQGV4YW1wbGUgMHg4ZTM0ODQ2ODdlNjZjZGQyNmNmMDRjMzY0NzYzM2FiNGYzNTcwMTQ4XG4gICAgICAgICAgICovXG4gICAgICAgICAgbWF0ZXJpYWxfaWQ6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gT3duZXIgb2YgdGhlIGtleVxuICAgICAgICAgICAqIEBleGFtcGxlIFVzZXIjYzNiOTM3OWMtNGU4Yy00MjE2LWJkMGEtNjVhY2U1M2NmOThmXG4gICAgICAgICAgICovXG4gICAgICAgICAgb3duZXI6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gS2V5IHBvbGljeVxuICAgICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICAgKiAgIFwiQWxsb3dSYXdCbG9iU2lnbmluZ1wiLFxuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcIlJlcXVpcmVNZmFcIjoge1xuICAgICAgICAgICAqICAgICAgIFwiY291bnRcIjogMVxuICAgICAgICAgICAqICAgICB9XG4gICAgICAgICAgICogICB9XG4gICAgICAgICAgICogXVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHBvbGljeTogdW5rbm93bltdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGtleSBwcm92ZW5hbmNlLiAqL1xuICAgICAgICAgIHByb3ZlbmFuY2U/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCwgc2VyaWFsaXplZCBwdWJsaWMga2V5LiBUaGUgZm9ybWF0IHVzZWQgZGVwZW5kcyBvbiB0aGUga2V5IHR5cGU6XG4gICAgICAgICAgICogLSBTZWNwMjU2azEga2V5cyB1c2UgNjUtYnl0ZSB1bmNvbXByZXNzZWQgU0VDRyBmb3JtYXQ7XG4gICAgICAgICAgICogLSBTdGFyayBrZXlzIHVzZSAzMy1ieXRlIGNvbXByZXNzZWQgU0VDRyBmb3JtYXQ7XG4gICAgICAgICAgICogLSBCTFMga2V5cyB1c2UgNDgtYnl0ZSBjb21wcmVzc2VkIEJMUzEyLTM4MSAoWkNhc2gpIGZvcm1hdDtcbiAgICAgICAgICAgKiAtIEVkMjU1MTkga2V5cyB1c2UgdGhlIGNhbm9uaWNhbCAzMi1ieXRlIGVuY29kaW5nIHNwZWNpZmllZCBpbiBSRkMgODAzMi5cbiAgICAgICAgICAgKiBAZXhhbXBsZSAweDA0ZDI2ODhiNmJjMmNlN2Y5ODc5YjllNzQ1ZjNjNGRjMTc3OTA4YzVjZWYwYzFiNjRjZmYxOWFlN2ZmMjdkZWU2MjNjNjRmZTlkOWMzMjVjN2ZiYmM3NDhiYmQ1ZjYwN2NlMTRkZDgzZTI4ZWJiYmI3ZDNlN2YyZmZiNzBhNzk0MzFcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwdXJwb3NlIGZvciB3aGljaCB0aGUga2V5IGNhbiBiZSB1c2VkIChlLmcuLCBjaGFpbiBpZCBmb3Igd2hpY2ggdGhlIGtleSBpcyBhbGxvd2VkIHRvIHNpZ24gbWVzc2FnZXMpXG4gICAgICAgICAgICogQGV4YW1wbGUgRXRoMlZhbGlkYXRvcigxKVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHB1cnBvc2U6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZWdpb24gYWZmaW5pdHkgZm9yIHRoaXMga2V5ICovXG4gICAgICAgICAgcmVnaW9uPzogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgcmV0dXJuZWQgd2hlbiByZXF1ZXN0aW5nIGEga2V5IGF0dGVzdGF0aW9uLiAqL1xuICAgIEtleUluZm9Kd3Q6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEEgSlNPTiBXZWIgVG9rZW4gd2hvc2UgY2xhaW1zIGNvbnRhaW4gdGhlIGBLZXlJbmZvYCBzdHJ1Y3R1cmUuICovXG4gICAgICAgICAgand0OiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgS2V5SW5mb3M6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBrZXlzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluZm9cIl1bXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoaXJkLXBhcnR5IGlkZW50aXRpZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSB1c2VyJ3MgYWNjb3VudCAqL1xuICAgIExpc3RJZGVudGl0aWVzUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBpZGVudGl0aWVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkZW50aXR5SW5mb1wiXVtdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIExpc3RNZmFSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIHBlbmRpbmcgTUZBIHJlcXVlc3RzICovXG4gICAgICAgICAgbWZhX3JlcXVlc3RzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVJlcXVlc3RJbmZvXCJdW107XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgcGVuZGluZyBNTUkgcmVxdWVzdHMgY3JlYXRlZCBieSB0aGUgY3VycmVudCB1c2VyLiAqL1xuICAgIExpc3RQZW5kaW5nTWVzc2FnZXNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIHBlbmRpbmcgbWVzc2FnZXMgZm9yIGEgdXNlci4gKi9cbiAgICAgICAgICBwZW5kaW5nX21lc3NhZ2VzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBlbmRpbmdNZXNzYWdlSW5mb1wiXVtdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmV0dXJuZWQgYXMgYSByZXNwb25zZSBmcm9tIG11bHRpcGxlIHJvdXRlcyAoZS5nLiwgJ2dldCBtZmEnLCAnYXBwcm92ZSBtZmEnLCAnYXBwcm92ZSB0b3RwJykuICovXG4gICAgTWZhUmVxdWVzdEluZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBjcmVhdGVkX2F0PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHNlc3Npb24gaWRlbnRpdHkgKHVzZXIgb3Igcm9sZSkgdGhhdCBjcmVhdGVkIHRoaXMgcmVxdWVzdC4gKi9cbiAgICAgICAgICBjcmVhdGVkX2J5OiBzdHJpbmc7XG4gICAgICAgICAgZXhwaXJlc19hdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQXBwcm92YWwgcmVxdWVzdCBJRC4gKi9cbiAgICAgICAgICBpZDogc3RyaW5nO1xuICAgICAgICAgIG5vdF92YWxpZF91bnRpbD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gTUZBIHBvbGljeSBwcm92ZW5hbmNlXG4gICAgICAgICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwcm92ZW5hbmNlOiBcIktleVwiIHwgXCJLZXlJblJvbGVcIiB8IFwiUm9sZVwiIHwgXCJVc2VyXCIgfCBcIkVkaXRQb2xpY3lcIjtcbiAgICAgICAgICByZWNlaXB0PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSZWNlaXB0XCJdIHwgbnVsbDtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZWdpb24gdGhpcyBNRkEgcmVxdWVzdCB3YXMgY3JlYXRlZCBpbi4gIEl0IGNhbiBvbmx5IGJlIHJlZGVlbWVkIGZyb20gdGhlIHNhbWUgcmVnaW9uLiAqL1xuICAgICAgICAgIHJlZ2lvbj86IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCBjb250YWlucyB0aGUgSURzIG9mIGFsbCBNRkEgcmVxdWVzdHMgKGluY2x1ZGluZyB0aGlzIG9uZSEpIHRoYXRcbiAgICAgICAgICAgKiB3ZXJlIGdlbmVyYXRlZCBhdCBvbmNlIGZvciB0aGUgc2FtZSBDdWJlU2lnbmVyIG9wZXJhdGlvbi5cbiAgICAgICAgICAgKlxuICAgICAgICAgICAqIElmIG5vdCBzZXQsIGl0IG1lYW5zIHRoYXQgdGhpcyB3YXMgdGhlIGxvbmUgTUZBIHJlcXVlc3QgZ2VuZXJhdGVkIGZvciBgcmVxdWVzdGAuXG4gICAgICAgICAgICpcbiAgICAgICAgICAgKiBUaGlzIGlzIHVzZWZ1bCBzbyB0aGF0IGEgY2xpZW50IGNhbiBkaXNjb3ZlciBhbGwgdGhlIE1GQXMgd2hvc2UgcmVjZWlwdHMgbXVzdFxuICAgICAgICAgICAqIGJlIHN1Ym1pdHRlZCB0b2dldGhlciB0byBjYXJyeSBvdXQgdGhlIG9yaWdpbmFsIEN1YmVTaWduZXIgb3BlcmF0aW9uLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHJlbGF0ZWRfaWRzPzogc3RyaW5nW107XG4gICAgICAgICAgcmVxdWVzdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJIdHRwUmVxdWVzdFwiXTtcbiAgICAgICAgICBzdGF0dXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU3RhdHVzXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gYWJvdXQgYSBuZXcgc2Vzc2lvbiwgcmV0dXJuZWQgZnJvbSBtdWx0aXBsZSBlbmRwb2ludHMgKGUuZy4sIGxvZ2luLCByZWZyZXNoLCBldGMuKS4gKi9cbiAgICBOZXdTZXNzaW9uUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFNlc3Npb24gZXhwaXJhdGlvbiAoaW4gc2Vjb25kcyBzaW5jZSBVTklYIGVwb2NoKSwgYmV5b25kIHdoaWNoIGl0IGNhbm5vdCBiZSByZWZyZXNoZWQuXG4gICAgICAgICAgICogQGV4YW1wbGUgMTcwMTg3OTY0MFxuICAgICAgICAgICAqL1xuICAgICAgICAgIGV4cGlyYXRpb24/OiBudW1iZXI7XG4gICAgICAgICAgb3JnX2lkPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXSB8IG51bGw7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUb2tlbiB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlZnJlc2ggdGhpcyBzZXNzaW9uLiAqL1xuICAgICAgICAgIHJlZnJlc2hfdG9rZW46IHN0cmluZztcbiAgICAgICAgICBzZXNzaW9uX2luZm86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2xpZW50U2Vzc2lvbkluZm9cIl07XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIE5ldyB0b2tlbiB0byBiZSB1c2VkIGZvciBhdXRoZW50aWNhdGlvbi4gUmVxdWVzdHMgdG8gc2lnbmluZyBlbmRwb2ludHNcbiAgICAgICAgICAgKiBzaG91bGQgaW5jbHVkZSB0aGlzIHZhbHVlIGluIHRoZSBgQXV0aG9yaXphdGlvbmAgaGVhZGVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHRva2VuOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBvcmctZXhwb3J0IGNpcGhlcnRleHQgcmV0cmlldmVkIHZpYSB0aGUgb3JnLWV4cG9ydCBBUEkuICovXG4gICAgT3JnRXhwb3J0UmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEEgYmFzZTY0LWVuY29kZWQgZXhwb3J0IGNpcGhlcnRleHQuICovXG4gICAgICAgICAgY2lwaGVydGV4dDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIE9yZ0luZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhUmVxdWlyZW1lbnRzXCJdICYge1xuICAgICAgICAgIGFjY2Vzc19tb2RlbDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2Nlc3NNb2RlbFwiXTtcbiAgICAgICAgICBjdXN0b21fY2hhaW5zPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDdXN0b21DaGFpbnNEYXRhXCJdIHwgbnVsbDtcbiAgICAgICAgICBkZWZhdWx0X2ludml0ZV9raW5kPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJbnZpdGVLaW5kXCJdO1xuICAgICAgICAgIGVtYWlsX3ByZWZlcmVuY2VzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFbWFpbFByZWZlcmVuY2VzXCJdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hlbiBmYWxzZSwgYWxsIGNyeXB0b2dyYXBoaWMgb3BlcmF0aW9ucyBpbnZvbHZpbmcga2V5cyBpbiB0aGlzIG9yZyBhcmUgZGlzYWJsZWQuICovXG4gICAgICAgICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAgICAgICBleHRfZGF0YT86XG4gICAgICAgICAgICB8ICh7XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBQZXIgYWxpZW4gdXNlciBrZXkgY291bnQgdGhyZXNob2xkLCB3aGljaCwgb25jZSBleGNlZWRlZCwgZGlzYWxsb3dzIGZ1cnRoZXIga2V5IGNyZWF0aW9uIGJ5IGFsaWVuIHVzZXJzLlxuICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICogVGhpcyBzZXR0aW5nIGlzIGNoZWNrZWQgb25seSB3aGVuIGFuIGFsaWVuIHVzZXIgcmVxdWVzdHMgdG8gY3JlYXRlIG9yIGltcG9ydCBhIG5ldyBrZXkuXG4gICAgICAgICAgICAgICAgICogSW4gb3RoZXIgd29yZHMsIG9yZyBhZG1pbnMgY2FuIHN0aWxsIGFzc2lnbiB1bmxpbWl0ZWQgbnVtYmVyIG9mIGtleXMgdG8gdGhlaXIgYWxpZW4gdXNlcnMuXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgYWxpZW5fa2V5X2NvdW50X3RocmVzaG9sZD86IG51bWJlciB8IG51bGw7XG4gICAgICAgICAgICAgIH0gJiB7XG4gICAgICAgICAgICAgICAgY3JlYXRlZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXSB8IG51bGw7XG4gICAgICAgICAgICAgICAgbGFzdF9tb2RpZmllZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXSB8IG51bGw7XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBWZXJzaW9uIG9mIHRoaXMgb2JqZWN0XG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgdmVyc2lvbj86IG51bWJlcjtcbiAgICAgICAgICAgICAgfSAmIFJlY29yZDxzdHJpbmcsIG5ldmVyPilcbiAgICAgICAgICAgIHwgbnVsbDtcbiAgICAgICAgICBoaXN0b3JpY2FsX2RhdGFfY29uZmlndXJhdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSGlzdG9yaWNhbERhdGFDb25maWd1cmF0aW9uXCJdO1xuICAgICAgICAgIGlkcF9jb25maWd1cmF0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZHBDb25maWdcIl07XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEZXByZWNhdGVkOiB0aGlzIGZpZWxkIHNob3VsZCBiZSBpZ25vcmVkLiAqL1xuICAgICAgICAgIGtleV9pbXBvcnRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG9yZ2FuaXphdGlvbidzIHVuaXZlcnNhbGx5IHVuaXF1ZSBrZXktd3JhcHBpbmcta2V5IGlkZW50aWZpZXIuXG4gICAgICAgICAgICogVGhpcyB2YWx1ZSBpcyByZXF1aXJlZCB3aGVuIHNldHRpbmcgdXAga2V5IGV4cG9ydC5cbiAgICAgICAgICAgKiBAZXhhbXBsZSBtcmstZmNlMDk1MjVlODE1ODdkMjM1MjBmMTFlMDdlMmU5ZDlcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBrd2tfaWQ6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gRGF0ZS90aW1lIChpbiBVVEMpIHdoZW4gbGFzdCAndW5zdGFrZScgd2FzIHBlcmZvcm1lZC4gVW5peCBlcG9jaCBpZiBub25lLlxuICAgICAgICAgICAqIEBleGFtcGxlIFRPRE9cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X3Vuc3Rha2U6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEhvdyBtYW55ICd1bnN0YWtlJyBjYWxscyBoYXBwZW5lZCBvbiB0aGUgZGF5IHdoZW4gYGxhc3RfdW5zdGFrZWAgd2FzIHBlcmZvcm1lZC5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X3Vuc3Rha2VfZGF5X2NvdW50OiBudW1iZXI7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIG1ldHJpY3MgYXJlIGNvbGxlY3RlZCBmb3IgdGhpcyBvcmcgKi9cbiAgICAgICAgICBtZXRyaWNzX2VuYWJsZWQ/OiBib29sZWFuO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIG9yZ1xuICAgICAgICAgICAqIEBleGFtcGxlIG15X29yZ19uYW1lXG4gICAgICAgICAgICovXG4gICAgICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyBub3RpZmljYXRpb24gZW5kcG9pbnRzLCB3aGljaCBhcmUgSFRUUFMgVVJMcyBhcmUgbm90aWZpZWQgYWJvdXQgYVxuICAgICAgICAgICAqIGNvbmZpZ3VyYWJsZSBzZXQgb2YgZXZlbnRzIGluIGFuIG9yZ2FuaXphdGlvbi4gRm9yIGVhY2ggZXZlbnQsIEN1YmVTaWduZXIgc2VuZHMgYSBQT1NUXG4gICAgICAgICAgICogcmVxdWVzdCB3aXRoIGEgSlNPTi1mb3JtYXR0ZWQgYm9keSB0aGF0IGNvbnRhaW5zIHRoZSBldmVudCBkZXRhaWxzLlxuICAgICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICAgKiAgIHtcbiAgICAgICAgICAgKiAgICAgXCJhcm5cIjogXCJhcm46YXdzOnNuczp1cy1lYXN0LTE6MDEyMzQ1Njc4OTAxOk9yZ0V2ZW50c1RvcGljOjEyMzQ1Njc4LTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMVwiLFxuICAgICAgICAgICAqICAgICBcImNvbmZpZ1wiOiB7XG4gICAgICAgICAgICogICAgICAgXCJ1cmxcIjogXCJodHRwczovL2V4YW1wbGUuY29tL2VuZHBvaW50MVwiXG4gICAgICAgICAgICogICAgIH0sXG4gICAgICAgICAgICogICAgIFwic3RhdHVzXCI6IFwiQ29uZmlybWVkXCJcbiAgICAgICAgICAgKiAgIH0sXG4gICAgICAgICAgICogICB7XG4gICAgICAgICAgICogICAgIFwiYXJuXCI6IFwiYXJuOmF3czpzbnM6dXMtZWFzdC0xOjAxMjM0NTY3ODkwMTpPcmdFdmVudHNUb3BpYzoxMjM0NTY3OC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDJcIixcbiAgICAgICAgICAgKiAgICAgXCJjb25maWdcIjoge1xuICAgICAgICAgICAqICAgICAgIFwiZmlsdGVyXCI6IHtcbiAgICAgICAgICAgKiAgICAgICAgIFwiT25lT2ZcIjogW1xuICAgICAgICAgICAqICAgICAgICAgICBcIkV0aDJDb25jdXJyZW50QXR0ZXN0YXRpb25TaWduaW5nXCIsXG4gICAgICAgICAgICogICAgICAgICAgIFwiRXRoMkNvbmN1cnJlbnRCbG9ja1NpZ25pbmdcIlxuICAgICAgICAgICAqICAgICAgICAgXVxuICAgICAgICAgICAqICAgICAgIH0sXG4gICAgICAgICAgICogICAgICAgXCJ1cmxcIjogXCJodHRwczovL2V4YW1wbGUuY29tL2VuZHBvaW50MlwiXG4gICAgICAgICAgICogICAgIH0sXG4gICAgICAgICAgICogICAgIFwic3RhdHVzXCI6IFwiUGVuZGluZ1wiXG4gICAgICAgICAgICogICB9XG4gICAgICAgICAgICogXVxuICAgICAgICAgICAqL1xuICAgICAgICAgIG5vdGlmaWNhdGlvbl9lbmRwb2ludHM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk5vdGlmaWNhdGlvbkVuZHBvaW50XCJdW107XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgb3JnYW5pemF0aW9uXG4gICAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgICAqL1xuICAgICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAgIHBhc3NrZXlfY29uZmlndXJhdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUGFzc2tleUNvbmZpZ1wiXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gT3JnLXdpZGUgcG9saWNpZXMgdGhhdCBhcmUgY2hlY2tlZCBiZWZvcmUgYSBrZXkgaXMgdXNlZCBmb3Igc2lnbmluZ1xuICAgICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICAgKiAgIHtcbiAgICAgICAgICAgKiAgICAgXCJNYXhEYWlseVVuc3Rha2VcIjogNVxuICAgICAgICAgICAqICAgfVxuICAgICAgICAgICAqIF1cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXTtcbiAgICAgICAgICBwb2xpY3lfZW5naW5lX2NvbmZpZ3VyYXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBvbGljeUVuZ2luZUNvbmZpZ3VyYXRpb25cIl07XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3JnYW5pemF0aW9uJ3MgY3VycmVudGx5IGNvbmZpZ3VyZWQgVE9UUCBmYWlsdXJlIGxpbWl0LCBpLmUuLCB0aGUgbnVtYmVyXG4gICAgICAgICAgICogb2YgdGltZXMgYSB1c2VyIGNhbiBwcm92aWRlIGFuIGluY29ycmVjdCBUT1RQIGNvZGUgYmVmb3JlIGJlaW5nIHJhdGUgbGltaXRlZC5cbiAgICAgICAgICAgKiBUaGlzIHZhbHVlIGNhbiBiZSBiZXR3ZWVuIDEgYW5kIDUgKGluY2x1c2l2ZSkuXG4gICAgICAgICAgICovXG4gICAgICAgICAgdG90cF9mYWlsdXJlX2xpbWl0OiBudW1iZXI7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3JnYW5pemF0aW9uJ3MgY3VycmVudGx5IGNvbmZpZ3VyZWQgdXNlci1leHBvcnQgZGVsYXksIGkuZS4sIHRoZSBtaW5pbXVtXG4gICAgICAgICAgICogYW1vdW50IG9mIHRpbWUgKGluIHNlY29uZHMpIGJldHdlZW4gd2hlbiBhIHVzZXItZXhwb3J0IGlzIGluaXRpYXRlZCBhbmQgd2hlblxuICAgICAgICAgICAqIGl0IG1heSBiZSBjb21wbGV0ZWQuIChUaGlzIHZhbHVlIGlzIG1lYW5pbmdsZXNzIGZvciBvcmdhbml6YXRpb25zIHRoYXQgdXNlXG4gICAgICAgICAgICogb3JnLXdpZGUgZXhwb3J0LilcbiAgICAgICAgICAgKi9cbiAgICAgICAgICB1c2VyX2V4cG9ydF9kZWxheTogbnVtYmVyO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hldGhlciB1c2VyIGV4cG9ydCBpcyBkaXNhYmxlZCAqL1xuICAgICAgICAgIHVzZXJfZXhwb3J0X2Rpc2FibGVkPzogYm9vbGVhbjtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyBjdXJyZW50bHkgY29uZmlndXJlZCB1c2VyLWV4cG9ydCB3aW5kb3csIGkuZS4sIHRoZSBhbW91bnRcbiAgICAgICAgICAgKiBvZiB0aW1lIChpbiBzZWNvbmRzKSBiZXR3ZWVuIHdoZW4gdGhlIHVzZXItZXhwb3J0IGRlbGF5IGlzIGNvbXBsZXRlZCBhbmQgd2hlblxuICAgICAgICAgICAqIHRoZSB1c2VyIGV4cG9ydCByZXF1ZXN0IGhhcyBleHBpcmVkIGFuZCBjYW4gbm8gbG9uZ2VyIGJlIGNvbXBsZXRlZC4gKFRoaXMgdmFsdWVcbiAgICAgICAgICAgKiBpcyBtZWFuaW5nbGVzcyBmb3Igb3JnYW5pemF0aW9ucyB0aGF0IHVzZSBvcmctd2lkZSBleHBvcnQuKVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHVzZXJfZXhwb3J0X3dpbmRvdzogbnVtYmVyO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgb2ZmaWNpYWwgd2ViYXBwIG9yaWdpbiBpcyBhdXRvbWF0aWNhbGx5IGFsbG93ZWQgKi9cbiAgICAgICAgICB3ZWJhcHBfZW5hYmxlZD86IGJvb2xlYW47XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUGFnaW5hdGVkQXVkaXRMb2dSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQXVkaXQgbG9nIGVudHJpZXMgKi9cbiAgICAgICAgICBlbnRyaWVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF1ZGl0TG9nRW50cnlcIl1bXTtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUGFnaW5hdGVkR2V0VXNlcnNJbk9yZ1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbGlzdCBvZiB1c2VycyBpbiB0aGUgb3JnICovXG4gICAgICAgICAgdXNlcnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckluT3JnSW5mb1wiXVtdO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBQYWdpbmF0ZWRMaXN0Q29udGFjdHNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQSBsaXN0IG9mIGNvbnRhY3RzIGluIHRoZSBvcmdhbml6YXRpb24sIG1hdGNoaW5nIGFueSBwcm92aWRlZCBxdWVyaWVzLiAqL1xuICAgICAgICAgIGNvbnRhY3RzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbnRhY3RJbmZvUmVzcG9uc2VcIl1bXTtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUGFnaW5hdGVkTGlzdEhpc3RvcmljYWxUeFJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBIaXN0b3JpY2FsIHRyYW5zYWN0aW9ucyBzaWduZWQgd2l0aCB0aGUgcmVxdWVzdGVkIGtleSwgc29ydGVkIGZyb20gbW9zdCB0byBsZWFzdCByZWNlbnQuICovXG4gICAgICAgICAgdHhzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkhpc3RvcmljYWxUeFwiXVtdO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBQYWdpbmF0ZWRMaXN0S2V5Um9sZXNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIHJvbGVzIHRoZSBrZXkgaXMgaW4gKi9cbiAgICAgICAgICByb2xlczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJblJvbGVJbmZvXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZExpc3RLZXlzUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBrZXlzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluZm9cIl1bXTtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUGFnaW5hdGVkTGlzdFBvbGljaWVzUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBPcmcncyBuYW1lZCBwb2xpY2llcy4gKi9cbiAgICAgICAgICBwb2xpY2llczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQb2xpY3lJbmZvXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZExpc3RSb2xlS2V5c1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwga2V5cyBpbiBhIHJvbGUgKi9cbiAgICAgICAgICBrZXlzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluUm9sZUluZm9cIl1bXTtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUGFnaW5hdGVkTGlzdFJvbGVVc2Vyc1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgdXNlcnMgaW4gYSByb2xlICovXG4gICAgICAgICAgdXNlcnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckluUm9sZUluZm9cIl1bXTtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUGFnaW5hdGVkTGlzdFJvbGVzUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCByb2xlcyBpbiBhbiBvcmdhbml6YXRpb24uICovXG4gICAgICAgICAgcm9sZXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUm9sZUluZm9cIl1bXTtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUGFnaW5hdGVkUG9saWN5TG9nc1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcG9saWN5IGV4ZWN1dGlvbiBsb2dzICovXG4gICAgICAgICAgbG9nczoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICAgICAgICAgIH1bXTtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUGFnaW5hdGVkUXVlcnlNZXRyaWNzUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFkdmlzb3J5IG1lc3NhZ2VzIChlLmcuLCBpZiBtYXggbnVtYmVyIG9mIHJlc3VsdHMgaXMgcmVhY2hlZCkuICovXG4gICAgICAgICAgbWVzc2FnZXM/OiBzdHJpbmdbXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwZXJpb2QgZm9yIHdoaWNoIHRoZSBzdGF0aXN0aWMgaXMgY29tcHV0ZWQsIGlmIGFueSAobm90IGFsbCBtZXRyaWNzIHN1cHBvcnQgc3BsaXR0aW5nIHRoZSByZXF1ZXN0ZWQgdGltZSByYW5nZSBpbnRvIGJpbnMpLlxuICAgICAgICAgICAqIElmIHNldCwgZXF1YWxzIHRvIHRoZSB2YWx1ZSBmcm9tIHRoZSByZXF1ZXN0IHJvdW5kZWQgdXAgdG8gdGhlIGNsb3Nlc3QgbXVsdGlwbGUgb2YgNjAuXG4gICAgICAgICAgICovXG4gICAgICAgICAgcGVyaW9kPzogbnVtYmVyO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gU29tZSBtZXRyaWNzIGNhbiBvcHRpb25hbGx5IHJldHVybiB0aGUgcmF3IGRhdGEsIHdoZW4gcmVxdWVzdGVkLiAqL1xuICAgICAgICAgIHJhd19kYXRhOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gICAgICAgICAgfVtdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQ29tcHV0ZWQgZGF0YSBwb2ludHMuICovXG4gICAgICAgICAgcmVzdWx0czoge1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgZGF0YSBwb2ludHMsIG9uZSBmb3IgZWFjaCB0aW1lIHBlcmlvZCAodGltZSBwZXJpb2RzIGZvciB3aGljaCB0aGUgdmFsdWUgaXMgMCBhcmUgb21pdHRlZCkuICovXG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IG51bWJlcjtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBtZXRyaWMgZGltZW5zaW9ucy4gKi9cbiAgICAgICAgICAgIGRpbWVuc2lvbnM6IHtcbiAgICAgICAgICAgICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9W107XG4gICAgICAgICAgc3RhdD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT3JnTWV0cmljU3RhdFwiXSB8IG51bGw7XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZFNlc3Npb25zUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBsaXN0IG9mIHNlc3Npb25zICovXG4gICAgICAgICAgc2Vzc2lvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vzc2lvbkluZm9cIl1bXTtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUGFnaW5hdGVkVXNlckV4cG9ydExpc3RSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIGV4cG9ydF9yZXF1ZXN0czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VyRXhwb3J0SW5pdFJlc3BvbnNlXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhc3NrZXlBc3NlcnRDaGFsbGVuZ2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IChjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNoYWxsZW5nZVBpZWNlc1wiXSAmIHtcbiAgICAgICAgICBvcHRpb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uc1wiXTtcbiAgICAgICAgfSkgJiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGNoYWxsZW5nZS4gTXVzdCBiZSBzdXBwbGllZCB3aGVuIGFuc3dlcmluZyB0aGUgY2hhbGxlbmdlLiAqL1xuICAgICAgICAgIGNoYWxsZW5nZV9pZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRXh0ZW5kZWQgaW5mb3JtYXRpb24gYWJvdXQgYW4gZXhpc3RpbmcgTU1JIHJlcXVlc3QuICovXG4gICAgUGVuZGluZ01lc3NhZ2VJbmZvOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgbWV0YWRhdGE6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTW1pTWV0YWRhdGFcIl07XG4gICAgICAgICAgc2lnbmVkTWVzc2FnZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2lnbmVkTWVzc2FnZVwiXSB8IG51bGw7XG4gICAgICAgICAgdHJhbnNhY3Rpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRyYW5zYWN0aW9uQW5kU3RhdHVzXCJdIHwgbnVsbDtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICBjcmVhdGVkX2F0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICAgICAgZXhwaXJlc19hdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBwZW5kaW5nIG1lc3NhZ2UgKi9cbiAgICAgICAgICBpZDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGlkZW50aXR5IChhIHVzZXIgb3IgYSByb2xlIGlkKSB3aGljaCBjcmVhdGVkIHRoaXMgbWVzc2FnZS4gKi9cbiAgICAgICAgICBpZGVudGl0eTogc3RyaW5nO1xuICAgICAgICAgIG1lc3NhZ2VfZWlwMTkxPzoge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gRnJvbSBhZGRyZXNzLCBoZXgtZW5jb2RlZCwgd2l0aCBsZWFkaW5nICcweCdcbiAgICAgICAgICAgICAqIEBleGFtcGxlIDB4MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIChpbmNsdWRpbmcgYSAnMHgnIHByZWZpeCkgbWVzc2FnZSB0byBzaWduLiAqL1xuICAgICAgICAgICAgbWVzc2FnZTogc3RyaW5nO1xuICAgICAgICAgIH0gfCBudWxsO1xuICAgICAgICAgIG1lc3NhZ2VfZWlwNzEyPzoge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gRnJvbSBhZGRyZXNzLCBoZXgtZW5jb2RlZCwgd2l0aCBsZWFkaW5nICcweCdcbiAgICAgICAgICAgICAqIEBleGFtcGxlIDB4MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgICAgICAgICBkYXRhOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlR5cGVkRGF0YVwiXTtcbiAgICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgICAgdmVyc2lvbjogXCJ2M1wiIHwgXCJ2NFwiO1xuICAgICAgICAgIH0gfCBudWxsO1xuICAgICAgICAgIG1lc3NhZ2VfdHg/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlR5cGVkVHJhbnNhY3Rpb25cIl0gfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRXh0ZW5kZWQgaW5mb3JtYXRpb24gYWJvdXQgYW4gZXhpc3RpbmcgTU1JIG1lc3NhZ2UsIGluY2x1ZGluZyB0aGUgc2lnbmF0dXJlLiAqL1xuICAgIFBlbmRpbmdNZXNzYWdlU2lnblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiAoe1xuICAgICAgICAgIG1ldGFkYXRhOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1taU1ldGFkYXRhXCJdO1xuICAgICAgICAgIHNpZ25lZE1lc3NhZ2U/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNpZ25lZE1lc3NhZ2VcIl0gfCBudWxsO1xuICAgICAgICAgIHRyYW5zYWN0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUcmFuc2FjdGlvbkFuZFN0YXR1c1wiXSB8IG51bGw7XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgY3JlYXRlZF9hdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgICAgIGV4cGlyZXNfYXQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgcGVuZGluZyBtZXNzYWdlICovXG4gICAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBpZGVudGl0eSAoYSB1c2VyIG9yIGEgcm9sZSBpZCkgd2hpY2ggY3JlYXRlZCB0aGlzIG1lc3NhZ2UuICovXG4gICAgICAgICAgaWRlbnRpdHk6IHN0cmluZztcbiAgICAgICAgICBtZXNzYWdlX2VpcDE5MT86IHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIEZyb20gYWRkcmVzcywgaGV4LWVuY29kZWQsIHdpdGggbGVhZGluZyAnMHgnXG4gICAgICAgICAgICAgKiBAZXhhbXBsZSAweDAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYWRkcmVzczogc3RyaW5nO1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCAoaW5jbHVkaW5nIGEgJzB4JyBwcmVmaXgpIG1lc3NhZ2UgdG8gc2lnbi4gKi9cbiAgICAgICAgICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICAgICAgICB9IHwgbnVsbDtcbiAgICAgICAgICBtZXNzYWdlX2VpcDcxMj86IHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIEZyb20gYWRkcmVzcywgaGV4LWVuY29kZWQsIHdpdGggbGVhZGluZyAnMHgnXG4gICAgICAgICAgICAgKiBAZXhhbXBsZSAweDAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYWRkcmVzczogc3RyaW5nO1xuICAgICAgICAgICAgZGF0YTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUeXBlZERhdGFcIl07XG4gICAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICAgIHZlcnNpb246IFwidjNcIiB8IFwidjRcIjtcbiAgICAgICAgICB9IHwgbnVsbDtcbiAgICAgICAgICBtZXNzYWdlX3R4PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUeXBlZFRyYW5zYWN0aW9uXCJdIHwgbnVsbDtcbiAgICAgICAgfSkgJlxuICAgICAgICAgIFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgc3RydWN0IGNvbnRhaW5pbmcgYWxsIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBhIHNwZWNpZmljIHZlcnNpb24gb2YgYSBwb2xpY3kuICovXG4gICAgUG9saWN5SW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGFjY2Vzcy1jb250cm9sIGVudHJpZXMgZm9yIHRoZSBwb2xpY3kuICovXG4gICAgICAgICAgYWNsPzogdW5rbm93bltdIHwgbnVsbDtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEEgbGlzdCBvZiBlbnRpdGllcyAoa2V5cywgcm9sZXMsIGV0Yy4pIHRoZSBwb2xpY3kgaXMgYXR0YWNoZWQgdG8uICovXG4gICAgICAgICAgYXR0YWNoZWRfdG86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUG9saWN5QXR0YWNoZWRUb0lkXCJdW107XG4gICAgICAgICAgY3JlYXRlZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgICAgIGVkaXRfcG9saWN5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFZGl0UG9saWN5XCJdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVXNlci1kZWZpbmVkIG1ldGFkYXRhIGZvciB0aGUgbmFtZWQgcG9saWN5LiAqL1xuICAgICAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBuYW1lIG9mIHRoZSBwb2xpY3kuICovXG4gICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICAgIG93bmVyOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHBvbGljeSBpZCAqL1xuICAgICAgICAgIHBvbGljeV9pZDogc3RyaW5nO1xuICAgICAgICAgIHBvbGljeV90eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBvbGljeVR5cGVcIl07XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcG9saWN5IHJ1bGUuICovXG4gICAgICAgICAgcnVsZXM6IHVua25vd25bXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwb2xpY3kgcnVsZSdzIHZlcnNpb24uXG4gICAgICAgICAgICovXG4gICAgICAgICAgdmVyc2lvbjogbnVtYmVyO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBQb2xpY3lSZXN1bHRSZXNwb25zZSBpcyBhIHdyYXBwZXIgb24gUG9saWN5UmVzdWx0IHdpdGggdHdvIGltcG9ydGFudFxuICAgICAqIHByb3BlcnRpZXM6XG4gICAgICogKiBkZXJpdmVzIE9rVG9Mb2dSZXNwb25zZSwgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBpbiB0aGUgcm9ja2V0IGhhbmRsZXIuXG4gICAgICogKiBkZXJpdmVzIFRvU2NoZW1hIGFuZCBUb1Jlc3BvbnNlLCB3aXRoIHRoZSBgdmFsYCBmaWVsZCB3aXRoIHZhbHVlX3R5cGVcbiAgICAgKiBPYmplY3QsIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byBwcm92aWRlIGFsbCBvZiB0aGUgT3BlbkFQSSB0eXBlXG4gICAgICogZGVzY3JpcHRpb25zIG9mIGEgUG9saWN5UmVzdWx0LlxuICAgICAqXG4gICAgICogVGhlIFBvbGljeVJlc3VsdCBpbmNsdWRlcyBlbnVtcyBhbmQgb3RoZXIgc3RhbmRhcmQgdHlwZXMgKGUuZy5cbiAgICAgKiBzdGQ6OnRpbWU6OkludGVydmFsKSB3aGljaCBhcmUgbm9udHJpdmlhbCB0byByZXByZXNlbnQgaW4gT3BlbkFQSS4gU2luY2VcbiAgICAgKiB0aGlzIGVuZHBvaW50IGlzIGp1c3QgZm9yIHRlc3RpbmcsIHdlIGRvbid0IHJlYWxseSBjYXJlIGFib3V0IGhvdyBhY2N1cmF0ZVxuICAgICAqIHRoZSBzY2hlbWEgaXMsIGFuZCBjYW4gbGVhbiBvbiBzZXJkZV9qc29uIHdoZW4gZGVjb2RpbmcgdGhpcyByZXNwb25zZSB0byBhXG4gICAgICogUG9saWN5UmVzdWx0IGluIGEgY2xpZW50LiBOb3RlIHRoYXQgdGhlcmUgaXMgYSBidWcgaW4gdXRvaXBhIHdoZXJlIHRoZVxuICAgICAqIHZhbHVlX3R5cGUgYW5ub3RhdGlvbiB3aWxsIG5vdCB3b3JrIGZvciBhIHR1cGxlLXN0cnVjdCwgb25seSBhIHN0cnVjdCB3aXRoXG4gICAgICogZmllbGRzLlxuICAgICAqL1xuICAgIFBvbGljeVJlc3VsdFJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgdmFsOiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHN0cnVjdCBjb250YWluaW5nIGFsbCBub24tc2VjcmV0IGluZm9ybWF0aW9uIGFib3V0IHBvbGljeSBzZWNyZXRzLiAqL1xuICAgIFBvbGljeVNlY3JldHNJbmZvOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbW1vbkZpZWxkc1wiXSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmFtZXMgb2YgdGhlIHNlY3JldHMuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbmFtZXM6IHN0cmluZ1tdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHBvbGljeSBzZWNyZXRzLiAqL1xuICAgICAgICAgIHNlY3JldHM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2VjcmV0SW5mb1wiXVtdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgdG8gYSBQU0JUIHNpZ25pbmcgcmVxdWVzdCAqL1xuICAgIFBzYnRTaWduUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHBvbGljeSBldmFsdWF0aW9uIHRyZWUuICovXG4gICAgICAgICAgcG9saWN5X2V2YWxfdHJlZT86IHVua25vd247XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBQU0JUIGluIHN0YW5kYXJkIGhleCBzZXJpYWxpemF0aW9uLCB3aXRob3V0IGxlYWRpbmcgXCIweFwiLlxuICAgICAgICAgICAqIEBleGFtcGxlIDcwNzM2Mjc0ZmYwMTAwNWUuLi5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwc2J0OiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBQdWJsaWMgaW5mb3JtYXRpb24gYWJvdXQgYW4gb3JnYW5pemF0aW9uLiAqL1xuICAgIFB1YmxpY09yZ0luZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEV4cGxpY2l0bHkgY29uZmlndXJlZCAoYWxsb3dsaXN0ZWQpIE9wZW5JRCBwcm92aWRlcnMgZm9yIGFuIG9yZyAqL1xuICAgICAgICAgIG9pZGNfaXNzdWVyczoge1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBJbnRlbmRlZCBhdWRpZW5jZXMgKGNsaWVudCBJRHMpICovXG4gICAgICAgICAgICBhdWRpZW5jZXM6IHN0cmluZ1tdO1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBJc3N1ZXIgVVJMICovXG4gICAgICAgICAgICBpc3N1ZXI6IHN0cmluZztcbiAgICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgaXNzdWVyIG5pY2tuYW1lICovXG4gICAgICAgICAgICBuaWNrbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB1c2VyIHJvbGVzIGFsbG93ZWQgdG8gdXNlIHRoaXMgSURQICovXG4gICAgICAgICAgICB1c2VyczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZW1iZXJSb2xlXCJdW107XG4gICAgICAgICAgfVtdO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBPcmcgaWRlbnRpZmllclxuICAgICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgbG9nZ2luZyBpbiB3aXRoIGp1c3QgYSBwYXNza2V5IGlzIGFsbG93ZWQgKi9cbiAgICAgICAgICBwYXNza2V5X2xvZ2luX2VuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbWV0cmljIGRhdGEgcG9pbnRzLiAqL1xuICAgIFF1ZXJ5TWV0cmljc1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBZHZpc29yeSBtZXNzYWdlcyAoZS5nLiwgaWYgbWF4IG51bWJlciBvZiByZXN1bHRzIGlzIHJlYWNoZWQpLiAqL1xuICAgICAgICAgIG1lc3NhZ2VzPzogc3RyaW5nW107XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcGVyaW9kIGZvciB3aGljaCB0aGUgc3RhdGlzdGljIGlzIGNvbXB1dGVkLCBpZiBhbnkgKG5vdCBhbGwgbWV0cmljcyBzdXBwb3J0IHNwbGl0dGluZyB0aGUgcmVxdWVzdGVkIHRpbWUgcmFuZ2UgaW50byBiaW5zKS5cbiAgICAgICAgICAgKiBJZiBzZXQsIGVxdWFscyB0byB0aGUgdmFsdWUgZnJvbSB0aGUgcmVxdWVzdCByb3VuZGVkIHVwIHRvIHRoZSBjbG9zZXN0IG11bHRpcGxlIG9mIDYwLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHBlcmlvZD86IG51bWJlcjtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFNvbWUgbWV0cmljcyBjYW4gb3B0aW9uYWxseSByZXR1cm4gdGhlIHJhdyBkYXRhLCB3aGVuIHJlcXVlc3RlZC4gKi9cbiAgICAgICAgICByYXdfZGF0YToge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICAgICAgICAgIH1bXTtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIENvbXB1dGVkIGRhdGEgcG9pbnRzLiAqL1xuICAgICAgICAgIHJlc3VsdHM6IHtcbiAgICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGRhdGEgcG9pbnRzLCBvbmUgZm9yIGVhY2ggdGltZSBwZXJpb2QgKHRpbWUgcGVyaW9kcyBmb3Igd2hpY2ggdGhlIHZhbHVlIGlzIDAgYXJlIG9taXR0ZWQpLiAqL1xuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICBba2V5OiBzdHJpbmddOiBudW1iZXI7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbWV0cmljIGRpbWVuc2lvbnMuICovXG4gICAgICAgICAgICBkaW1lbnNpb25zOiB7XG4gICAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHN0cmluZztcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVtdO1xuICAgICAgICAgIHN0YXQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9yZ01ldHJpY1N0YXRcIl0gfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFJvbGVJbmZvOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbW1vbkZpZWxkc1wiXSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGUgcm9sZSBpcyBlbmFibGVkXG4gICAgICAgICAgICogQGV4YW1wbGUgdHJ1ZVxuICAgICAgICAgICAqL1xuICAgICAgICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEZXByZWNhdGVkIFRoZSBDdWJlU2lnbmVyIElEcyBvZiBhdCBtb3N0IDEwMCBrZXlzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJvbGUgKi9cbiAgICAgICAgICBrZXlzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJblJvbGVJbmZvXCJdW10gfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRoZSBjdXJyZW50IHVzZXIgaXMgYSBtZW1iZXIgb2YgdGhlIHJvbGUuIFRoaXMgaXMgYWx3YXlzIHRydWUsXG4gICAgICAgICAgICogZXhjZXB0IGZvciBvd25lcnMgd2hvIGNhbiBzZWUgcm9sZXMgdGhleSBhcmUgbm90IG1lbWJlcnMgb2YuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbWVtYmVyOiBib29sZWFuO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIHJvbGUgKG11c3QgYmUgYWxwaGFudW1lcmljKVxuICAgICAgICAgICAqIEBleGFtcGxlIG15X3JvbGVcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gUG9saWN5IHRoYXQgaXMgY2hlY2tlZCB3aGVuZXZlciBhIGtleSBpcyBhY2Nlc3NlZCBmb3Igc2lnbmluZyB2aWEgdGhpcyByb2xlLlxuICAgICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICAgKiAgIHtcbiAgICAgICAgICAgKiAgICAgXCJTb3VyY2VJcEFsbG93bGlzdFwiOiBbXG4gICAgICAgICAgICogICAgICAgXCIxMjMuNDU2Ljc4LjkvMTZcIlxuICAgICAgICAgICAqICAgICBdXG4gICAgICAgICAgICogICB9LFxuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcIlJlcXVpcmVNZmFcIjoge1xuICAgICAgICAgICAqICAgICAgIFwiY291bnRcIjogMVxuICAgICAgICAgICAqICAgICB9XG4gICAgICAgICAgICogICB9XG4gICAgICAgICAgICogXVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHBvbGljeT86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdO1xuICAgICAgICAgIHJlc3RyaWN0ZWRfYWN0aW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSZXN0cmljdGVkQWN0aW9uc01hcFwiXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSByb2xlXG4gICAgICAgICAgICogQGV4YW1wbGUgUm9sZSNiZmUzZWNjYi03MzFlLTQzMGQtYjFlNS1hYzEzNjNlNmIwNmJcbiAgICAgICAgICAgKi9cbiAgICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEZXByZWNhdGVkLiBUaGUgbGlzdCBvZiBhdCBtb3N0IDEwMCB1c2VycyB3aXRoIGFjY2VzcyB0byB0aGUgcm9sZS4gKi9cbiAgICAgICAgICB1c2Vycz86IHN0cmluZ1tdIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBTZXNzaW9uSW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZXNzaW9uTWV0YWRhdGFcIl0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGlvbiBkYXRlIChpbiBzZWNvbmRzIHNpbmNlIHVuaXggZXBvY2gpXG4gICAgICAgICAgICovXG4gICAgICAgICAgY3JlYXRlZF9hdDogbnVtYmVyO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gRXhwaXJhdGlvbiBkYXRlIChpbiBzZWNvbmRzIHNpbmNlIHVuaXggZXBvY2gpXG4gICAgICAgICAgICovXG4gICAgICAgICAgZXhwOiBudW1iZXI7XG4gICAgICAgICAgbGFzdF91c2VkPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJXaGVyZUFuZFdoZW5cIl0gfCBudWxsO1xuICAgICAgICAgIGxpZmV0aW1lcz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUmF0Y2hldENvbmZpZ1wiXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gQSBodW1hbi1yZWFkYWJsZSBkZXNjcmlwdGlvbiBmb3IgdGhlIHNlc3Npb25cbiAgICAgICAgICAgKiBAZXhhbXBsZSBPSURDIGxvZ2luIHNlc3Npb25cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwdXJwb3NlOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIExpc3RzIHVzZXIgcGVybWlzc2lvbiBhbmQgYWNjZXNzIGZvciB0aGUgc2Vzc2lvblxuICAgICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICAgKiAgIFwic2lnbjoqXCIsXG4gICAgICAgICAgICogICBcIm1hbmFnZTptZmE6dm90ZTpjc1wiXG4gICAgICAgICAgICogXVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHNjb3Blcz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2NvcGVcIl1bXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gU2Vzc2lvbiBJRC4gVW5pcXVlbHkgaWRlbnRpZmllcyB0aGUgc2Vzc2lvbiwgYnV0IGNhbm5vdCBiZSB1c2VkIGZvciBhdXRoLlxuICAgICAgICAgICAqIEBleGFtcGxlIDc3YWFkMjEwMGMzNjFmNDk3NjM1ZGQwMDVjNGQxNTc4MWUyZTVkZjRiOWY0NWQ4ZTc0ZjM3NDI1Y2JjMzBiOWVcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBzZXNzaW9uX2lkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVzcG9uc2UgZnJvbSBhbnkgb3BlcmF0aW9uIG9wZXJhdGluZyBvbiBtdWx0aXBsZSBzZXNzaW9ucyAqL1xuICAgIFNlc3Npb25zUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBsaXN0IG9mIHNlc3Npb25zICovXG4gICAgICAgICAgc2Vzc2lvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vzc2lvbkluZm9cIl1bXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBTaWduUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHBvbGljeSBldmFsdWF0aW9uIHRyZWUuICovXG4gICAgICAgICAgcG9saWN5X2V2YWxfdHJlZT86IHVua25vd247XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaGV4LWVuY29kZWQgcmVzdWx0aW5nIHNpZ25hdHVyZS4gKi9cbiAgICAgICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJldHVybmVkIHVwb24gYSBzdWNjZXNzZnVsIFNJV0UgYXV0aGVudGljYXRpb24uICovXG4gICAgU2l3ZUNvbXBsZXRlUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBPSURDIHRva2VuIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHVzZXIgd2l0aCB0aGUgcmVxdWVzdGVkIFNJV0UgaWRlbnRpdHkuICovXG4gICAgICAgICAgaWRfdG9rZW46IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQSBjaGFsbGVuZ2UgcmV0dXJuZWQgaW4gcmVzcG9uc2UgdG8gYSBTaWduLUluIHdpdGggRXRoZXJldW0gcmVxdWVzdC5cbiAgICAgKlxuICAgICAqIENvbnRhaW5zIGEgbWVzc2FnZSB0aGF0IHRoZSBjbGllbnQgbXVzdCBzaWduIGZvbGxvd2luZyBFSVAtMTkxXG4gICAgICogd2l0aCB0aGUgcmVxdWVzdGVkIGtleSBpbiBvcmRlciB0byBjb21wbGV0ZSBhdXRoZW50aWNhdGlvbi5cbiAgICAgKlxuICAgICAqIFRoZSBjbGllbnQgaGFzIHVudGlsIHRoZSBtZXNzYWdlIGV4cGlyZXMgKGJ1dCBubyBtb3JlIHRoYW4gNSBtaW51dGVzKSB0byBjb21wbGV0ZSB0aGUgY2hhbGxlbmdlLlxuICAgICAqL1xuICAgIFNpd2VJbml0UmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgY2hhbGxlbmdlICh0byBpbmNsdWRlIGluIHRoZSByZXF1ZXN0IHdoZW4gY2FsbGluZyB0aGUgUEFUQ0ggKCdjb21wbGV0ZScpIGVuZHBvaW50KSAqL1xuICAgICAgICAgIGNoYWxsZW5nZV9pZDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG1lc3NhZ2UgdG8gc2lnbiBmb2xsb3dpbmcgdGhlIEVJUC0xOTEgc3RhbmRhcmQuICovXG4gICAgICAgICAgbWVzc2FnZTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFN0YWtlUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6ICh7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY3kgZXZhbHVhdGlvbiB0cmVlLiAqL1xuICAgICAgICAgIHBvbGljeV9ldmFsX3RyZWU/OiB1bmtub3duO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIGRlcG9zaXRfdHg6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRGVwb3NpdFR4blwiXTtcbiAgICAgICAgfSkgJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB2YWxpZGF0b3Iga2V5IGlkIChcIktleSMuLi5cIilcbiAgICAgICAgICAgKiBAZXhhbXBsZSBLZXkjZGIxNzMxZjgtMzY1OS00NWMwLTg4NWItZTExZTFmNWI3YmUyXG4gICAgICAgICAgICovXG4gICAgICAgICAgY3JlYXRlZF92YWxpZGF0b3Jfa2V5X2lkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgVGVsZWdyYW1BdXRoUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBPSURDIHRva2VuIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyB0ZWxlZ3JhbSB1c2VyICovXG4gICAgICAgICAgaWRfdG9rZW46IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gT0F1dGgyIHN0YW5kYXJkIFRva2VuIFJlc3BvbnNlLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM2NzQ5I3NlY3Rpb24tNC4yLjJcbiAgICAgKi9cbiAgICBUb2tlblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgYWNjZXNzIHRva2VuIGlzc3VlZCBieSB0aGUgYXV0aG9yaXphdGlvbiBzZXJ2ZXIuICovXG4gICAgICAgICAgYWNjZXNzX3Rva2VuOiBzdHJpbmc7XG4gICAgICAgICAgZXhwaXJlc19pbjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNvbmRzXCJdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gT0lEQyB0b2tlbiBpc3N1ZWQgYnkgQ3ViaXN0LCBjb250YWluaW5nIHVzZXIgaW5mb3JtYXRpb24gKi9cbiAgICAgICAgICBpZF90b2tlbj86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVmcmVzaCB0b2tlbiBpc3N1ZWQgYnkgdGhlIGF1dGhvcml6YXRpb24gc2VydmVyLiAqL1xuICAgICAgICAgIHJlZnJlc2hfdG9rZW4/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHR5cGUgb2YgdGhlIHRva2VuIGlzc3VlZC4gVmFsdWUgaXMgY2FzZSBpbnNlbnNpdGl2ZS4gKi9cbiAgICAgICAgICB0b2tlbl90eXBlOiBzdHJpbmc7XG4gICAgICAgICAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbiAgICAgICAgfSAmIFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICAgIH07XG4gICAgfTtcbiAgICBUb3RwSW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIFRPVFAgY2hhbGxlbmdlLlxuICAgICAgICAgICAqIEBleGFtcGxlIFRvdHBDaGFsbGVuZ2UjNzg5MmViYmEtNTYzZS00ODViLWJiN2QtZTI2MjY3MzYzMjg2XG4gICAgICAgICAgICovXG4gICAgICAgICAgdG90cF9pZDogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBTdGFuZGFyZCBUT1RQIHVybCB3aGljaCBpbmNsdWRlcyBldmVyeXRoaW5nIG5lZWRlZCB0byBpbml0aWFsaXplIFRPVFAuXG4gICAgICAgICAgICogQGV4YW1wbGUgb3RwYXV0aDovL3RvdHAvQ3ViaXN0OmFsaWNlLSU0MGV4YW1wbGUuY29tP3NlY3JldD1EQUhGN0tDT1RRV1NPTUs0WEZFTU5IWE80SjQzM09ENyZpc3N1ZXI9Q3ViaXN0XG4gICAgICAgICAgICovXG4gICAgICAgICAgdG90cF91cmw6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgcmVzcG9uc2UgdG8gc2lnbiBhbiBldGgyIHVuc3Rha2UgcmVxdWVzdC4gKi9cbiAgICBVbnN0YWtlUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBtZXNzYWdlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlZvbHVudGFyeUV4aXRcIl07XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEJMUyBzaWduYXR1cmUuXG4gICAgICAgICAgICogQGV4YW1wbGUgMHg5MTBjN2NkNTM3ZWQ5MWNjOGM0YTgyZjNjYmQ4MzJlOWJlOGMyNGEyMmU5Yzg2ZGY0NzlmN2NlNDIwMjVlYTZhMDk2MTliNDE4YjY2NmEwNjBlMjYwZDJhYWUzMWI4ZTUwZTlkMDVjYTM0NDJjN2VlZDNiNTA3ZTUyMDdlMTQ2NzQyNzVmNjhjMmJhODRjNGJmNmI4ZGQzNjRhMzA0YWNhYzhjZmFiMzY4MWUyNTE0YjQ0MDBmOTI0MmJjNjExNjRcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHBvbGljeSBldmFsdWF0aW9uIHRyZWUuICovXG4gICAgICAgICAgcG9saWN5X2V2YWxfdHJlZT86IHVua25vd247XG4gICAgICAgIH0gJiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4gICAgICB9O1xuICAgIH07XG4gICAgVXBkYXRlT3JnUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBhbGllbl9sb2dpbl9yZXF1aXJlbWVudD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kRmFjdG9yUmVxdWlyZW1lbnRcIl0gfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBNRkEgdHlwZXMgdGhhdCBhcmUgYWxsb3dlZCB0byBiZSB1c2VkIGZvciBpbXBsaWNpdGx5IHNlY3VyaXR5LXNlbnNpdGl2ZVxuICAgICAgICAgICAqIG9wZXJhdGlvbnMgKGxpa2UgbG9nZ2luZyBpbiwgYWRkaW5nIGFuIE1GQSBmYWN0b3IsIGV4cG9ydGluZyBrZXlzLCBldGMuKS5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBhbGxvd2VkX21mYV90eXBlcz86IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhVHlwZVwiXVtdO1xuICAgICAgICAgIH0gfCBudWxsO1xuICAgICAgICAgIGN1c3RvbV9jaGFpbnM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkN1c3RvbUNoYWluc0RhdGFcIl0gfCBudWxsO1xuICAgICAgICAgIGRlZmF1bHRfaW52aXRlX2tpbmQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkludml0ZUtpbmRcIl0gfCBudWxsO1xuICAgICAgICAgIGVtYWlsX3ByZWZlcmVuY2VzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFbWFpbFByZWZlcmVuY2VzXCJdIHwgbnVsbDtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgdGhlICdlbmFibGVkJyBwcm9wZXJ0eSAqL1xuICAgICAgICAgIGVuYWJsZWQ/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgICAgICBleHRfZGF0YT86XG4gICAgICAgICAgICB8ICh7XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBQZXIgYWxpZW4gdXNlciBrZXkgY291bnQgdGhyZXNob2xkLCB3aGljaCwgb25jZSBleGNlZWRlZCwgZGlzYWxsb3dzIGZ1cnRoZXIga2V5IGNyZWF0aW9uIGJ5IGFsaWVuIHVzZXJzLlxuICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICogVGhpcyBzZXR0aW5nIGlzIGNoZWNrZWQgb25seSB3aGVuIGFuIGFsaWVuIHVzZXIgcmVxdWVzdHMgdG8gY3JlYXRlIG9yIGltcG9ydCBhIG5ldyBrZXkuXG4gICAgICAgICAgICAgICAgICogSW4gb3RoZXIgd29yZHMsIG9yZyBhZG1pbnMgY2FuIHN0aWxsIGFzc2lnbiB1bmxpbWl0ZWQgbnVtYmVyIG9mIGtleXMgdG8gdGhlaXIgYWxpZW4gdXNlcnMuXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgYWxpZW5fa2V5X2NvdW50X3RocmVzaG9sZD86IG51bWJlciB8IG51bGw7XG4gICAgICAgICAgICAgIH0gJiB7XG4gICAgICAgICAgICAgICAgY3JlYXRlZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXSB8IG51bGw7XG4gICAgICAgICAgICAgICAgbGFzdF9tb2RpZmllZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXSB8IG51bGw7XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBWZXJzaW9uIG9mIHRoaXMgb2JqZWN0XG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgdmVyc2lvbj86IG51bWJlcjtcbiAgICAgICAgICAgICAgfSAmIFJlY29yZDxzdHJpbmcsIG5ldmVyPilcbiAgICAgICAgICAgIHwgbnVsbDtcbiAgICAgICAgICBoaXN0b3JpY2FsX2RhdGFfY29uZmlndXJhdGlvbj86XG4gICAgICAgICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSGlzdG9yaWNhbERhdGFDb25maWd1cmF0aW9uXCJdXG4gICAgICAgICAgICB8IG51bGw7XG4gICAgICAgICAgaWRwX2NvbmZpZ3VyYXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkcENvbmZpZ1wiXSB8IG51bGw7XG4gICAgICAgICAga2V5X2V4cG9ydF9yZXF1aXJlbWVudD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kRmFjdG9yUmVxdWlyZW1lbnRcIl0gfCBudWxsO1xuICAgICAgICAgIG1lbWJlcl9sb2dpbl9yZXF1aXJlbWVudD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kRmFjdG9yUmVxdWlyZW1lbnRcIl0gfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoZSBvcmcgKG11c3QgYmUgYWxwaGFudW1lcmljKVxuICAgICAgICAgICAqIEBleGFtcGxlIG15X29yZ19uYW1lXG4gICAgICAgICAgICovXG4gICAgICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgbm90aWZpY2F0aW9uIGVuZHBvaW50IGNvbmZpZ3VyYXRpb25zXG4gICAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcInVybFwiOiBcImh0dHBzOi8vZXhhbXBsZS5jb20vZW5kcG9pbnRcIlxuICAgICAgICAgICAqICAgfVxuICAgICAgICAgICAqIF1cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBub3RpZmljYXRpb25fZW5kcG9pbnRzPzpcbiAgICAgICAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJOb3RpZmljYXRpb25FbmRwb2ludENvbmZpZ3VyYXRpb25cIl1bXVxuICAgICAgICAgICAgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIG9yZ2FuaXphdGlvblxuICAgICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgICBwYXNza2V5X2NvbmZpZ3VyYXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBhc3NrZXlDb25maWdcIl0gfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIG9yZy13aWRlIHBvbGljaWVzXG4gICAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcIk1heERhaWx5VW5zdGFrZVwiOiA1XG4gICAgICAgICAgICogICB9LFxuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcIk9yaWdpbkFsbG93bGlzdFwiOiBbXG4gICAgICAgICAgICogICAgICAgXCJodHRwczovL2V4YW1wbGUuY29tXCJcbiAgICAgICAgICAgKiAgICAgXVxuICAgICAgICAgICAqICAgfVxuICAgICAgICAgICAqIF1cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXSB8IG51bGw7XG4gICAgICAgICAgcG9saWN5X2VuZ2luZV9jb25maWd1cmF0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQb2xpY3lFbmdpbmVDb25maWd1cmF0aW9uXCJdIHwgbnVsbDtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgcmVxdWlyZV9zY29wZV9jZWlsaW5nICovXG4gICAgICAgICAgcmVxdWlyZV9zY29wZV9jZWlsaW5nPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIHRoZSBUT1RQIGZhaWx1cmUgbGltaXRcbiAgICAgICAgICAgKi9cbiAgICAgICAgICB0b3RwX2ZhaWx1cmVfbGltaXQ/OiBudW1iZXIgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5ldyB2YWx1ZSBvZiB1c2VyLWV4cG9ydCBkZWxheVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHVzZXJfZXhwb3J0X2RlbGF5PzogbnVtYmVyIHwgbnVsbDtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgdXNlci1leHBvcnQgZGlzYWJsZWQgKi9cbiAgICAgICAgICB1c2VyX2V4cG9ydF9kaXNhYmxlZD86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5ldyB2YWx1ZSBvZiB1c2VyLWV4cG9ydCB3aW5kb3dcbiAgICAgICAgICAgKi9cbiAgICAgICAgICB1c2VyX2V4cG9ydF93aW5kb3c/OiBudW1iZXIgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlc3BvbnNlIHRvIGEgcmVxdWVzdCBmb3IgdXBsb2FkaW5nIGEgd2FzbSBwb2xpY3kgKi9cbiAgICBVcGxvYWRXYXNtUG9saWN5UmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEEgc2lnbmVkIFVSTCBmb3IgdXBsb2FkaW5nIHRoZSByZXF1ZXN0ZWQgd2FzbSBwb2xpY3kuICovXG4gICAgICAgICAgc2lnbmVkX3VybDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gZW5jcnlwdGVkIHVzZXItZXhwb3J0ICovXG4gICAgVXNlckV4cG9ydENvbXBsZXRlUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGV4cG9ydGVkIGtleSBtYXRlcmlhbCwgZW5jcnlwdGVkIHdpdGggQUVTLTI1Ni1HQ00gdW5kZXIgYSBrZXlcbiAgICAgICAgICAgKiBkZXJpdmVkIGZyb20gdGhlIHB1YmxpYyBrZXkgc3VwcGxpZWQgaW4gdGhlIHJlcXVlc3QgdmlhIEhQS0UgKFJGQzkxODApXG4gICAgICAgICAgICogd2l0aCBESEtFTShQLTI1NiwgSEtERi1TSEEyNTYpIGFuZCBiYXNlNjQgZW5jb2RlZC5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlbmNyeXB0ZWRfa2V5X21hdGVyaWFsOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBlcGhlbWVyYWwgcHVibGljIGtleSB1c2VkIGZvciBIUEtFIGtleSBkZXJpdmF0aW9uIGFzIGJhc2U2NC1lbmNvZGVkXG4gICAgICAgICAgICogdW5jb21wcmVzc2VkIFNFQzEgc2VyaWFsaXphdGlvbi5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlcGhlbWVyYWxfcHVibGljX2tleTogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHVzZXItaWQgdG8gd2hpY2ggdGhpcyBrZXkgYmVsb25ncy4gKi9cbiAgICAgICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVzcG9uc2UgdG8gYSBzdWNjZXNzZnVsIHVzZXItZXhwb3J0IGluaXQgcmVxdWVzdCAqL1xuICAgIFVzZXJFeHBvcnRJbml0UmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckV4cG9ydFJlcXVlc3RcIl0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBrZXktaWQgYmVpbmcgcmVxdWVzdGVkLlxuICAgICAgICAgICAqIEBleGFtcGxlIEtleSMweDNjNGQ5MENjNUFmMTY0NEMzQTNCMDEzQmFhNTQ4ODk5NzM4MUQ3QzhcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBVc2VySW5PcmdJbmZvOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1c2VyJ3MgZW1haWwgKG9wdGlvbmFsKVxuICAgICAgICAgICAqIEBleGFtcGxlIGFsaWNlQGV4YW1wbGUuY29tXG4gICAgICAgICAgICovXG4gICAgICAgICAgZW1haWw/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIHVzZXJcbiAgICAgICAgICAgKiBAZXhhbXBsZSBVc2VyI2MzYjkzNzljLTRlOGMtNDIxNi1iZDBhLTY1YWNlNTNjZjk4ZlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRoZSB1c2VyIGhhcyBldmVyIHN1Y2Nlc3NmdWxseSBsb2dnZWQgaW4gKi9cbiAgICAgICAgICBpbml0aWFsaXplZD86IGJvb2xlYW47XG4gICAgICAgICAgbWVtYmVyc2hpcDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZW1iZXJSb2xlXCJdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgdXNlciBuYW1lLiAqL1xuICAgICAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIHN0YXR1czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZW1iZXJzaGlwU3RhdHVzXCJdO1xuICAgICAgICAgIHZlcmlmaWVkX2VtYWlsPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJWZXJpZmllZEVtYWlsXCJdIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBVc2VySW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBlbWFpbFxuICAgICAgICAgICAqIEBleGFtcGxlIGFsaWNlQGV4YW1wbGUuY29tXG4gICAgICAgICAgICovXG4gICAgICAgICAgZW1haWw/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIG11bHRpLWZhY3RvciBhdXRoZW50aWNhdGlvbiBtZXRob2RzIGNvbmZpZ3VyZWQgZm9yIHRoaXMgdXNlciAqL1xuICAgICAgICAgIG1mYTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDb25maWd1cmVkTWZhXCJdW107XG4gICAgICAgICAgbWZhX3BvbGljeT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhUG9saWN5XCJdIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbmFtZVxuICAgICAgICAgICAqIEBleGFtcGxlIEFsaWNlXG4gICAgICAgICAgICovXG4gICAgICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlcHJlY2F0ZWRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gQWxsIG9yZ2FuaXphdGlvbnMgdGhlIHVzZXIgYmVsb25ncyB0by4gRGVwcmVjYXRlZCBpbiBmYXZvciBvZiAnb3JncycuXG4gICAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgICAqICAgXCJPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXCJcbiAgICAgICAgICAgKiBdXG4gICAgICAgICAgICovXG4gICAgICAgICAgb3JnX2lkczogc3RyaW5nW107XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgb3JnYW5pemF0aW9ucyB0aGUgdXNlciBiZWxvbmdzIHRvLCBpbmNsdWRpbmcgdGhlIG1lbWJlcnNoaXAgcm9sZSBpbiBlYWNoLiAqL1xuICAgICAgICAgIG9yZ3M6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckluT3JnTWVtYmVyc2hpcFwiXVtdO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlclxuICAgICAgICAgICAqIEBleGFtcGxlIFVzZXIjYzNiOTM3OWMtNGU4Yy00MjE2LWJkMGEtNjVhY2U1M2NmOThmXG4gICAgICAgICAgICovXG4gICAgICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgICAgICAgIHZlcmlmaWVkX2VtYWlsPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJWZXJpZmllZEVtYWlsXCJdIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXNwb25zZSB0byB0aGUgdXNlci9vcmdzIGVuZHBvaW50ICovXG4gICAgVXNlck9yZ3NSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGxpc3Qgb2Ygb3JncyB0aGlzIHVzZXIgaXMgYSBtZW1iZXIgb2YgKi9cbiAgICAgICAgICBvcmdzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9yZ0RhdGFcIl1bXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgcGFyYW1ldGVyczogbmV2ZXI7XG4gIHJlcXVlc3RCb2RpZXM6IG5ldmVyO1xuICBoZWFkZXJzOiBuZXZlcjtcbiAgcGF0aEl0ZW1zOiBuZXZlcjtcbn1cblxuZXhwb3J0IHR5cGUgJGRlZnMgPSBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG5cbmV4cG9ydCB0eXBlIGV4dGVybmFsID0gUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuXG5leHBvcnQgaW50ZXJmYWNlIG9wZXJhdGlvbnMge1xuICAvKipcbiAgICogVXNlciBJbmZvXG4gICAqIEBkZXNjcmlwdGlvbiBVc2VyIEluZm9cbiAgICpcbiAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IHVzZXIuXG4gICAqXG4gICAqIFBSRUZFUiBgR0VUIC92MC9vcmdzL3tvcmdfaWR9L3VzZXIvbWVgXG4gICAqL1xuICBhYm91dE1lTGVnYWN5OiB7XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJVc2VySW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBKV0tTIGVuZHBvaW50IGZvciB0aGUgYXR0ZXN0YXRpb24ga2V5XG4gICAqIEBkZXNjcmlwdGlvbiBKV0tTIGVuZHBvaW50IGZvciB0aGUgYXR0ZXN0YXRpb24ga2V5XG4gICAqXG4gICAqIFJldHVybnMgdGhlIHB1YmxpYyBrZXkgdXNlZCB0byBzaWduIEtleSBpbmZvIGF0dGVzdGF0aW9ucy5cbiAgICovXG4gIGF0dGVzdGF0aW9uSndrU2V0OiB7XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJKd2tTZXRSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IGFjY2Vzc2libGUgb3JnYW5pemF0aW9ucy5cbiAgICogQGRlc2NyaXB0aW9uIExpc3QgYWNjZXNzaWJsZSBvcmdhbml6YXRpb25zLlxuICAgKlxuICAgKiBVbmF1dGhlbnRpY2F0ZWQgZW5kcG9pbnQgZm9yIHJldHJpZXZpbmcgYWxsIG9yZ2FuaXphdGlvbnMgYWNjZXNzaWJsZSB0byBhIHVzZXIuXG4gICAqIFRoaXMgaW5mb3JtYXRpb24gaXMgZW1haWxlZCB0byB0aGUgcHJvdmlkZWQgZW1haWwgYWRkcmVzcy5cbiAgICovXG4gIGVtYWlsX215X29yZ3M6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeToge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBlbWFpbCBvZiB0aGUgdXNlclxuICAgICAgICAgKiBAZXhhbXBsZSBhbGljZUBleGFtcGxlLmNvbVxuICAgICAgICAgKi9cbiAgICAgICAgZW1haWw6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiAoSU5URVJOQUwpIFNlbnRyeSBBUEkgUHJveHlcbiAgICogQGRlc2NyaXB0aW9uIChJTlRFUk5BTCkgU2VudHJ5IEFQSSBQcm94eVxuICAgKi9cbiAgc2VudHJ5QXBpQ2FsbFB1YmxpYzoge1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwidGV4dC9wbGFpblwiOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSldLUyBlbmRwb2ludCBmb3IgTU1JXG4gICAqIEBkZXNjcmlwdGlvbiBKV0tTIGVuZHBvaW50IGZvciBNTUlcbiAgICpcbiAgICogUmV0dXJucyB0aGUgcHVibGljIGtleSB1c2VkIHRvIHNpZ24gSlNPTiBXZWIgVG9rZW5zIGZvciBNTUkuXG4gICAqL1xuICBtbWlKd2tTZXQ6IHtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkp3a1NldFJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIE1NSSBKU09OLVJQQyBlbmRwb2ludFxuICAgKiBAZGVzY3JpcHRpb24gTU1JIEpTT04tUlBDIGVuZHBvaW50XG4gICAqXG4gICAqIEhhbmRsZXIgZm9yIGFsbCBbTU1JIEpTT04tUlBDXShodHRwczovL2RvY3MubWV0YW1hc2staW5zdGl0dXRpb25hbC5pby9jdXN0b2RpYW4taW50ZWdyYXRpb24vaW50ZWdyYXRpb24tZG9jcy9hcGkvbWV0aG9kcylcbiAgICogcmVxdWVzdHMuXG4gICAqL1xuICBtbWk6IHtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiSnJwY1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFRva2VuIHJlZnJlc2ggZW5kcG9pbnQsIGNvbXBsaWFudCB3aXRoIE9BdXRoLlxuICAgKiBAZGVzY3JpcHRpb24gVG9rZW4gcmVmcmVzaCBlbmRwb2ludCwgY29tcGxpYW50IHdpdGggT0F1dGguXG4gICAqXG4gICAqIFRoZSBib2R5IGNvbnRlbnQgdHlwZSBjYW4gYmUgZWl0aGVyICdhcHBsaWNhdGlvbi9qc29uJyBvciAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJy5cbiAgICovXG4gIG9hdXRoMlRva2VuUmVmcmVzaDoge1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRva2VuUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlRva2VuUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IE9yZ1xuICAgKiBAZGVzY3JpcHRpb24gR2V0IE9yZ1xuICAgKlxuICAgKiBSZXRyaWV2ZXMgaW5mb3JtYXRpb24gYWJvdXQgYW4gb3JnYW5pemF0aW9uLlxuICAgKi9cbiAgZ2V0T3JnOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiT3JnSW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBVcGRhdGUgT3JnXG4gICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgT3JnXG4gICAqXG4gICAqIFVwZGF0ZSBvcmdhbml6YXRpb24gYXR0cmlidXRlcyAoZW5hYmxlZCBmbGFnLCBuYW1lLCBhbmQgcG9saWNpZXMpLlxuICAgKi9cbiAgdXBkYXRlT3JnOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVwZGF0ZU9yZ1JlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJVcGRhdGVPcmdSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBRdWVyeSB0aGUgYXVkaXQgbG9nLlxuICAgKiBAZGVzY3JpcHRpb24gUXVlcnkgdGhlIGF1ZGl0IGxvZy5cbiAgICovXG4gIHF1ZXJ5QXVkaXRMb2c6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXVkaXRMb2dSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGFnaW5hdGVkQXVkaXRMb2dSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBBc3NvY2lhdGUgYW4gT0lEQyBpZGVudGl0eSB3aXRoIGFuIGFyYml0cmFyeSB1c2VyIGluIG9yZyA8c2Vzc2lvbi5vcmc+LlxuICAgKiBAZGVzY3JpcHRpb24gQXNzb2NpYXRlIGFuIE9JREMgaWRlbnRpdHkgd2l0aCBhbiBhcmJpdHJhcnkgdXNlciBpbiBvcmcgPHNlc3Npb24ub3JnPi5cbiAgICovXG4gIGF1dGhNaWdyYXRpb25JZGVudGl0eUFkZDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNaWdyYXRlSWRlbnRpdHlSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIERpc3NvY2lhdGUgYW4gT0lEQyBpZGVudGl0eSBmcm9tIGFuIGFyYml0cmFyeSB1c2VyIGluIG9yZyA8c2Vzc2lvbi5vcmc+LlxuICAgKiBAZGVzY3JpcHRpb24gRGlzc29jaWF0ZSBhbiBPSURDIGlkZW50aXR5IGZyb20gYW4gYXJiaXRyYXJ5IHVzZXIgaW4gb3JnIDxzZXNzaW9uLm9yZz4uXG4gICAqL1xuICBhdXRoTWlncmF0aW9uSWRlbnRpdHlSZW1vdmU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWlncmF0ZUlkZW50aXR5UmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBVcGRhdGUgZXhpc3RpbmcgdXNlcnMnIHByb2ZpbGVzLiBDdXJyZW50bHkgc3VwcG9ydHMgb25seSAocmUpc2V0dGluZyBlbWFpbHMuXG4gICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgZXhpc3RpbmcgdXNlcnMnIHByb2ZpbGVzLiBDdXJyZW50bHkgc3VwcG9ydHMgb25seSAocmUpc2V0dGluZyBlbWFpbHMuXG4gICAqL1xuICBhdXRoTWlncmF0aW9uVXNlclVwZGF0ZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNaWdyYXRlVXBkYXRlVXNlcnNSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gYSBzZXJpYWxpemVkIEF2YWxhbmNoZSBDL1gvUC1DaGFpbiBNZXNzYWdlXG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIGEgc2VyaWFsaXplZCBBdmFsYW5jaGUgQy9YL1AtQ2hhaW4gTWVzc2FnZVxuICAgKlxuICAgKiBTaWducyBhbiBBdmFsYW5jaGUgbWVzc2FnZSB3aXRoIGEgZ2l2ZW4gU2VjcEV0aCAoQy1DaGFpbiBtZXNzYWdlcykgb3JcbiAgICogU2VjcEF2YSAoWC0gYW5kIFAtQ2hhaW4gbWVzc2FnZXMpIGtleS4gQ3VycmVudGx5IHNpZ25pbmcgQy1DaGFpbiBtZXNzYWdlc1xuICAgKiB3aXRoIFNlY3BFdGgga2V5IG11c3QgYWxzbyBiZSBleHBsaWNpdGx5IGFsbG93ZWQgdmlhIGBBbGxvd1Jhd0Jsb2JTaWduaW5nYFxuICAgKiBwb2xpY3kuXG4gICAqXG4gICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgKi9cbiAgYXZhU2VyaWFsaXplZFR4U2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBBdmFsYW5jaGUgY2hhaW5cbiAgICAgICAgICogQGV4YW1wbGUgUFxuICAgICAgICAgKi9cbiAgICAgICAgYXZhX2NoYWluOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gQXZhbGFuY2hlIGFkZHJlc3MgaW4gYmVjaDMyIG9yIEVUSCBmb3JtYXRcbiAgICAgICAgICogQGV4YW1wbGUgMHhCMzFmNjZBQTNDMWU3ODUzNjNGMDg3NUExQjc0RTI3Yjg1RkQ2NmM3XG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBdmFTZXJpYWxpemVkVHhTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlNpZ25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogU2lnbiBKU09OLWVuY29kZWQgQXZhbGFuY2hlIFgtIG9yIFAtQ2hhaW4gTWVzc2FnZVxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBKU09OLWVuY29kZWQgQXZhbGFuY2hlIFgtIG9yIFAtQ2hhaW4gTWVzc2FnZVxuICAgKlxuICAgKiBTaWducyBhbiBBdmFsYW5jaGUgbWVzc2FnZSB3aXRoIGEgZ2l2ZW4gU2VjcEF2YSBrZXkuXG4gICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgKi9cbiAgYXZhU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBBdmFsYW5jaGUgYmVjaDMyIGFkZHJlc3MgZm9ybWF0IHdpdGhvdXQgdGhlIGNoYWluIHByZWZpeFxuICAgICAgICAgKiBAZXhhbXBsZSBhdmF4MWFtNHc2aGZydm1oM2FrZHV6a2p0aHJ0Z3RxYWZhbGNlNmFuOGNyXG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBdmFTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlNpZ25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogU2lnbiBCYWJ5bG9uIENvdmVuYW50IENvbW1pdHRlZSBSZXF1ZXN0XG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIEJhYnlsb24gQ292ZW5hbnQgQ29tbWl0dGVlIFJlcXVlc3RcbiAgICpcbiAgICogU2lnbnMgdHJhbnNhY3Rpb25zIHJlbGV2YW50IHRvIGEgQmFieWxvbiBjb3ZlbmFudCBjb21taXR0ZWUgc2lnbmVyLFxuICAgKiBpLmUuLCBTY2hub3JyIGFuZCBhZGFwdG9yIHNpZ25hdHVyZXMgZm9yIHRoZSB1bmJvbmRpbmcsIHNsYXNoaW5nLCBhbmRcbiAgICogc2xhc2gtdW5ib25kaW5nIG91dHB1dHMgb2YgYSBCYWJ5bG9uIHN0YWtpbmcgdHJhbnNhY3Rpb24uXG4gICAqL1xuICBiYWJ5bG9uQ292U2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBoZXgtZW5jb2RlZCBwdWJsaWMga2V5XG4gICAgICAgICAqIEBleGFtcGxlIDB4MDNlMzgxMDZkZDc2NjU2YmM2OGQwMjg5OGVkZTFhOTExZGY4Yzc5M2U0NmFjNGViMzdkMjZjMjY2YWFlNWQyYTVhXG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCYWJ5bG9uQ292U2lnblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJCYWJ5bG9uQ292U2lnblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDcmVhdGUgRU9UUyBub25jZXNcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBFT1RTIG5vbmNlc1xuICAgKlxuICAgKiBHZW5lcmF0ZXMgYSBzZXQgb2YgQmFieWxvbiBFT1RTIG5vbmNlcyBmb3IgYSBzcGVjaWZpZWQgY2hhaW4taWQsIHN0YXJ0aW5nIGF0IGFcbiAgICogc3BlY2lmaWVkIGJsb2NrIGhlaWdodC5cbiAgICovXG4gIGNyZWF0ZUVvdHNOb25jZXM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgcHVibGljIGtleSBvZiB0aGUgRU9UUyBrZXlcbiAgICAgICAgICogQGV4YW1wbGUgMHg0NTdmMGYyNGNmYjA2YzNjMzU4NzRiYmQxZjU5YjU3MTgwYTVhOWQ3ZTFmNjkyOTI4MDgzOWM4MzBmNWMxNDdmXG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFb3RzQ3JlYXRlTm9uY2VSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW90c0NyZWF0ZU5vbmNlUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIGFuIEVPVFMgc2lnbmF0dXJlXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgYW4gRU9UUyBzaWduYXR1cmVcbiAgICpcbiAgICogR2VuZXJhdGVzIGFuIEVPVFMgc2lnbmF0dXJlIGZvciB0aGUgc3BlY2lmaWVkIGNoYWluLWlkLCBibG9jayBoZWlnaHQsIGFuZCBtZXNzYWdlLlxuICAgKi9cbiAgZW90c1NpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgcHVibGljIGtleSBvZiB0aGUgRU9UUyBrZXlcbiAgICAgICAgICogQGV4YW1wbGUgMHg0NTdmMGYyNGNmYjA2YzNjMzU4NzRiYmQxZjU5YjU3MTgwYTVhOWQ3ZTFmNjkyOTI4MDgzOWM4MzBmNWMxNDdmXG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFb3RzU2lnblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gQmFieWxvbiBTdGFraW5nIFJlZ2lzdHJhdGlvblxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBCYWJ5bG9uIFN0YWtpbmcgUmVnaXN0cmF0aW9uXG4gICAqXG4gICAqIENyZWF0ZXMgYW5kIHNpZ25zIHRoZSBkYXRhIG5lZWRlZCB0byByZWdpc3RlciBhIFBoYXNlLTIgb3IgUGhhc2UtM1xuICAgKiBCYWJ5bG9uIHN0YWtlLiBUaGlzIGluY2x1ZGVzIHRoZSBkZXBvc2l0IGFuZCB1bmJvbmRpbmcgdHJhbnNhY3Rpb25zLFxuICAgKiB0d28gc2xhc2hpbmcgdHJhbnNhY3Rpb25zLCB0aGUgc2xhc2hpbmcgc2lnbmF0dXJlcywgYW5kIHRoZSBwcm9vZiBvZlxuICAgKiBwb3NzZXNzaW9uLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgaXQgaXMgYWxzbyBwb3NzaWJsZSB0byBnZW5lcmF0ZSB0aGlzIHJlZ2lzdHJhdGlvbiBkYXRhIGJ5XG4gICAqIG1ha2luZyBmb3VyIGNhbGxzIHRvIHRoZSBCYWJ5bG9uIHN0YWtpbmcgQVBJLCBwbHVzIG9uZSBjYWxsIHRvIHRoZVxuICAgKiBQU0JUIHNpZ25pbmcgQVBJIHRvIGdlbmVyYXRlIHRoZSBCSVAtMzIyIHByb29mIG9mIHBvc3Nlc3Npb24uIFRoZVxuICAgKiByZWdpc3RyYXRpb24gQVBJIGdlbmVyYXRlcyB0aGUgc2FtZSBkYXRhIGJ1dCBpcyBlYXNpZXIgdG8gdXNlLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgdGhpcyBhY3Rpb24gY2FuIG9ubHkgYmUgY2FsbGVkIHdpdGggYSBUYXByb290IGtleS4gSWYgeW91clxuICAgKiBkZXBvc2l0IHRyYW5zYWN0aW9uIHNwZW5kcyBVVFhPcyB0aGF0IGFyZSBjb250cm9sbGVkIGJ5IG90aGVyIGtleXMsXG4gICAqIHlvdSBjYW4gc3VibWl0IHRoZSAnZGVwb3NpdCcgUFNCVCB0byB0aGUgUFNCVCBzaWduaW5nIEFQSSBvbmUgb3IgbW9yZVxuICAgKiB0aW1lcyB0byBnZW5lcmF0ZSB0aGUgcmVxdWlyZWQgc2lnbmF0dXJlcy5cbiAgICpcbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIGNvbnN1bHQgdGhlXG4gICAqIFtCYWJ5bG9uIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9iYWJ5bG9ubGFicy1pby9iYWJ5bG9uL2Jsb2IvcmVsZWFzZS92MS54L2RvY3MvcmVnaXN0ZXItYml0Y29pbi1zdGFrZS5tZCkuXG4gICAqXG4gICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgKi9cbiAgYmFieWxvblJlZ2lzdHJhdGlvbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBiZWNoMzIgZW5jb2Rpbmcgb2YgdGhlIHB1YmxpYyBrZXlcbiAgICAgICAgICogQGV4YW1wbGUgdGIxcGU0Zmd5bjg3cHdrdTJ4ZHB0YzJkdGFlcXp5eDh3eDg5Y3FhNnludHU4dGQ0OWZscHQ1d3E1azZoYXVcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJhYnlsb25SZWdpc3RyYXRpb25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQmFieWxvblJlZ2lzdHJhdGlvblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIEJhYnlsb24gU3Rha2luZyBUcmFuc2FjdGlvblxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBCYWJ5bG9uIFN0YWtpbmcgVHJhbnNhY3Rpb25cbiAgICpcbiAgICogQ3JlYXRlcyBhbmQgc2lnbnMgdHJhbnNhY3Rpb25zIHJlbGF0ZWQgdG8gQmFieWxvbiBzdGFraW5nIChpLmUuLFxuICAgKiBkZXBvc2l0LCBlYXJseSB1bmJvbmQsIHdpdGhkcmF3YWwpLiBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgUHJlLVNpZ25lZFxuICAgKiBCaXRjb2luIFRyYW5zYWN0aW9uIChQU0JUKSwgYXMgZGVmaW5lZCBpbiBCSVAtMTc0LCB3aGljaCBtYXRjaGVzIHRoZVxuICAgKiBmb3JtYXQgdXNlZCBpbiBtb3N0IEJhYnlsb24gdG9vbGluZy5cbiAgICpcbiAgICogVGhlICdkZXBvc2l0JyBhY3Rpb24gY2FuIGJlIHVzZWQgd2l0aCBlaXRoZXIgU2Vnd2l0IChpLmUuLCBTZWNwQnRjL1NlY3BCdGNUZXN0KVxuICAgKiBvciBUYXByb290IChpLmUuLCBUYXByb290QnRjL1RhcHJvb3RCdGNUZXN0KSBrZXlzLiBUaGUgcmVtYWluaW5nIGFjdGlvbnMgY2FuIGJlXG4gICAqIHVzZWQgb25seSB3aXRoIFRhcHJvb3Qga2V5cy5cbiAgICpcbiAgICogVGhpcyBpcyBhIHByZS1yZWxlYXNlIGZlYXR1cmUuXG4gICAqL1xuICBiYWJ5bG9uU3Rha2luZzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBiZWNoMzIgZW5jb2Rpbmcgb2YgdGhlIHB1YmxpYyBrZXlcbiAgICAgICAgICogQGV4YW1wbGUgdGIxcGU0Zmd5bjg3cHdrdTJ4ZHB0YzJkdGFlcXp5eDh3eDg5Y3FhNnludHU4dGQ0OWZscHQ1d3E1azZoYXVcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJhYnlsb25TdGFraW5nUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkJhYnlsb25TdGFraW5nUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gYSBCaXRjb2luIG1lc3NhZ2UuXG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIGEgQml0Y29pbiBtZXNzYWdlLlxuICAgKlxuICAgKiBTaWducyBhIG1lc3NhZ2UgdXNpbmcgQklQMTM3IG1lc3NhZ2Ugc2lnbmluZyB3aXRoIGEgZ2l2ZW4gU2VjcDI1NmsxIGtleS5cbiAgICovXG4gIGJ0Y01lc3NhZ2VTaWduOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEFkZHJlc3Mgb2YgYSBTZWd3aXQgb3IgTGVnYWN5IGJpdGNvaW4ga2V5XG4gICAgICAgICAqIEBleGFtcGxlIGJjMXEzcjM1dTR0aDc4aDA2ZDY0bXdtcDN2cHU4cW16eWEwNXBxOGZ3bFxuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQnRjTWVzc2FnZVNpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQnRjTWVzc2FnZVNpZ25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogU2lnbiBhIFBhcnRpYWxseSBTaWduZWQgQml0Y29pbiBUcmFuc2FjdGlvbiAoUFNCVClcbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gYSBQYXJ0aWFsbHkgU2lnbmVkIEJpdGNvaW4gVHJhbnNhY3Rpb24gKFBTQlQpXG4gICAqXG4gICAqIFNpZ25zIGFsbCBpbnB1dHMgb2YgdGhlIHN1cHBsaWVkIFBTQlQgdjAgKEJJUC0xNzQpIHRoYXQgcGVydGFpbiB0byB0aGVcbiAgICogJ3B1YmtleScgc3BlY2lmaWVkIGluIHRoZSByZXF1ZXN0LCB3aGljaCBjYW4gYmUgZWl0aGVyIGEgVGFwcm9vdCBvciBhXG4gICAqIFNlZ3dpdCBrZXkuIEZvciBTZWd3aXQga2V5cywgQ3ViZVNpZ25lci1zcGVjaWZpYyBkZXRlcm1pbmlzdGljIHR3ZWFraW5nXG4gICAqIGNhbiBiZSBhcHBsaWVkIHRvICdwdWJrZXknIGJlZm9yZSBzaWduaW5nLCBvbiBhIHBlci1pbnB1dCBiYXNpcy4gKFNlZSB0aGVcbiAgICogQ3ViZVNpZ25lciBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIFNlZ3dpdCB0d2Vha2luZy4pXG4gICAqXG4gICAqIFdoZW4gY2FsbGluZyB3aXRoIGEgc2Vnd2l0IGtleSB0aGUgcmVxdWlyZWQgc2NvcGUgaXMgJ3NpZ246YnRjOnBzYnQ6c2Vnd2l0Jy5cbiAgICogRm9yIGEgdGFwcm9vdCBrZXksIHRoZSBzY29wZSBpcyAnc2lnbjpidGM6cHNidDp0YXByb290Jy4gRWl0aGVyIHR5cGUgb2Yga2V5XG4gICAqIGNhbiBiZSB1c2VkIHdpdGggdGhlICdzaWduOmJ0Yzpwc2J0JyBzY29wZS5cbiAgICpcbiAgICogVGhpcyBpcyBhIHByZS1yZWxlYXNlIGZlYXR1cmUuXG4gICAqL1xuICBwc2J0U2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBiZWNoMzIobSktZW5jb2RlZCBzZWd3aXQgb3IgdGFwcm9vdCBhZGRyZXNzXG4gICAgICAgICAqIEBleGFtcGxlIGJjMXAyd3NsZGV6NW11ZDJ5YW0yOXEyMndnZmg5NDM5c3BnZHV2Y3Q4M2szcG01MGZjeGE1ZHBzNTloNHo1XG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQc2J0U2lnblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQc2J0U2lnblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIEJpdGNvaW4gU2Vnd2l0IFRyYW5zYWN0aW9uXG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIEJpdGNvaW4gU2Vnd2l0IFRyYW5zYWN0aW9uXG4gICAqXG4gICAqIFNpZ25zIGEgQml0Y29pbiBTZWd3aXQgdHJhbnNhY3Rpb24gd2l0aCBhIGdpdmVuIGtleS5cbiAgICogVGhpcyBpcyBhIHByZS1yZWxlYXNlIGZlYXR1cmUuXG4gICAqL1xuICBidGNTaWduOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIGJlY2gzMi1lbmNvZGVkIHNlZ3dpdCBhZGRyZXNzXG4gICAgICAgICAqIEBleGFtcGxlIGJjMXE1cDVxa2FlNzdseTgwa3I0cHlmeXRkcW03cmYwOGRkaGRlamw5Z1xuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQnRjU2lnblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gQml0Y29pbiBUYXByb290IFRyYW5zYWN0aW9uXG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIEJpdGNvaW4gVGFwcm9vdCBUcmFuc2FjdGlvblxuICAgKlxuICAgKiBTaWducyBhIEJpdGNvaW4gVGFwcm9vdCB0cmFuc2FjdGlvbiB3aXRoIGEgZ2l2ZW4ga2V5LlxuICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICovXG4gIGJ0Y1RhcHJvb3RTaWduOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIGJlY2gzMm0tZW5jb2RlZCB0YXByb290IGFkZHJlc3NcbiAgICAgICAgICogQGV4YW1wbGUgYmMxcDJ3c2xkZXo1bXVkMnlhbTI5cTIyd2dmaDk0MzlzcGdkdXZjdDgzazNwbTUwZmN4YTVkcHM1OWg0ejVcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRhcHJvb3RTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlNpZ25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBDb250YWN0c1xuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBDb250YWN0c1xuICAgKlxuICAgKiBMaXN0IGFsbCBjb250YWN0cyBpbiB0aGUgb3JnLlxuICAgKiBBbnkgb3JnIG1lbWJlciBpcyBhbGxvd2VkIHRvIGxpc3QgYWxsIGNvbnRhY3RzIGluIHRoZSBvcmcuXG4gICAqXG4gICAqICMjIFNlYXJjaCBDb25kaXRpb25cbiAgICogVGhlIHNlYXJjaCBjb25kaXRpb24gaXMgb3B0aW9uYWwuXG4gICAqXG4gICAqIC0gSWYgdGhlIHNlYXJjaCBjb25kaXRpb24gc3RhcnRzIHdpdGggXCJsYWJlbDouLi5cIiwgdGhpcyBsaXN0IHdpbGwgb25seSBob2xkIGNvbnRhY3RzIHdpdGhcbiAgICogdGhlIGxhYmVsIHByb3ZpZGVkIGFmdGVyIHRoZSBcIjpcIi4gRm9yIGV4YW1wbGUsIFwibGFiZWw6Y3ViaXN0OmVyYzIwX3Rva2VuXCIgd291bGQgcmV0dXJuIGNvbnRhY3RzIHRoYXRcbiAgICogaG9sZCB0aGUgbGFiZWwgXCJjdWJpc3Q6ZXJjMjBfdG9rZW5cIi5cbiAgICpcbiAgICogLSBPdGhlcndpc2UsIHRoZSByZXN1bHQgd2lsbCBjb250YWluIG9ubHkgdGhlIGNvbnRhY3RzIHdobyBoYXZlIGFuIGFkZHJlc3Mgc3RhcnRpbmcgd2l0aCwgb3JcbiAgICogZXF1YWxpbmcsIHRoZSBnaXZlbiBzZWFyY2ggc3RyaW5nLiBGb3IgZXhhbXBsZSwgXCIweGVlXCIgd291bGQgcmV0dXJuIGFsbCBjb250YWN0cyBob2xkaW5nIGFuXG4gICAqIGFkZHJlc3Mgc3RhcnRpbmcgd2l0aCBcIjB4ZWVcIi4gVGhlIHNlYXJjaCBpcyBjYXNlLWluc2Vuc2l0aXZlLlxuICAgKlxuICAgKiBJZiBhIHNlYXJjaCB0ZXJtIGlzIGRlZmluZWQsIHdlIGRvIG5vdCBndWFyYW50ZWVcbiAgICogdGhlIG51bWJlciBvZiByZXN1bHRzIGluIGEgcGFnZS4gVGhlIGJlaGF2aW9yIG9mIHRoaXMgcGFyYW1ldGVyIG1heSBjaGFuZ2VcbiAgICogaW4gdGhlIGZ1dHVyZSAoZm9yIGV4YW1wbGUsIG1ha2luZyByZXN1bHRzIG1vcmUgc3RyaWN0bHkgcGFnaW5hdGVkIG9yXG4gICAqIHBlcmZvcm1pbmcgYSBmdXp6eSBzZWFyY2ggcmF0aGVyIHRoYW4gYSBwcmVmaXggc2VhcmNoKS5cbiAgICovXG4gIGxpc3RDb250YWN0czoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBJZiB0aGUgYWN0dWFsIG51bWJlciBvZiByZXR1cm5lZCBpdGVtcyBtYXkgYmUgbGVzcyB0aGF0IHRoaXMsIGV2ZW4gaWYgdGhlcmUgZXhpc3QgbW9yZVxuICAgICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgICAqIGluc3BlY3QgdGhlIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnQgb2YgdGhlIHBhZ2UuICBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZzsgb3RoZXJ3aXNlLCBvbmx5IHNwZWNpZnkgYVxuICAgICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnN0YXJ0XCI/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEVpdGhlciAnbGFiZWw6Li4uJywgd2hpY2ggbGlzdHMgY29udGFjdHMgd2l0aCB0aGUgbGFiZWwgcHJvdmlkZWQgYWZ0ZXIgdGhlICc6Jy4gT3IsIGFuIGVudGlyZSBhZGRyZXNzLCBvciBwcmVmaXggb2YgYW4gYWRkcmVzcywgdGhhdCByZXR1cm5lZCBjb250YWN0cyBtdXN0IGhhdmUuIFdoZW4gc2VhcmNoaW5nIGJ5IGFkZHJlc3MsIGl0IG11c3QgYmUgYXQgbGVhc3QgMyBjaGFyYWN0ZXJzLiAqL1xuICAgICAgICBzZWFyY2g/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZExpc3RDb250YWN0c1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENyZWF0ZSBDb250YWN0XG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgQ29udGFjdFxuICAgKlxuICAgKiBDcmVhdGVzIGEgbmV3IGNvbnRhY3QgaW4gdGhlIG9yZ2FuaXphdGlvbi13aWRlIGFkZHJlc3MgYm9vay4gVGhlXG4gICAqIHVzZXIgbWFraW5nIHRoZSByZXF1ZXN0IGlzIHRoZSBvd25lciBvZiB0aGUgY29udGFjdCwgZ2l2aW5nIHRoZW0gZWRpdCBhY2Nlc3NcbiAgICogdG8gdGhlIGNvbnRhY3QgYWxvbmcgd2l0aCB0aGUgb3JnIG93bmVycy5cbiAgICovXG4gIGNyZWF0ZUNvbnRhY3Q6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3JlYXRlQ29udGFjdFJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJDb250YWN0SW5mb1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIExvb2t1cCBDb250YWN0cyBieSBBZGRyZXNzXG4gICAqIEBkZXNjcmlwdGlvbiBMb29rdXAgQ29udGFjdHMgYnkgQWRkcmVzc1xuICAgKlxuICAgKiBSZXR1cm5zIGFsbCBjb250YWN0cyBpbiB0aGUgb3JnIHRoYXQgaGF2ZSB0aGUgZ2l2ZW4gYWRkcmVzcy5cbiAgICpcbiAgICogV2hlbiBxdWVyeWluZyB3aXRoIGFuIEVWTSBhZGRyZXNzIHdpdGhvdXQgYSBjaGFpbiwgdGhpcyBlbmRwb2ludCByZXR1cm5zXG4gICAqIGNvbnRhY3RzIHdpdGggdGhhdCBhZGRyZXNzIG9uICphbnkqIGNoYWluLCBpbmNsdWRpbmcgdGhvc2Ugd2l0aG91dCBhIGNoYWluXG4gICAqIGRlZmluZWQuXG4gICAqL1xuICBsb29rdXBDb250YWN0c0J5QWRkcmVzczoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDb250YWN0QWRkcmVzc0RhdGFcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRMaXN0Q29udGFjdHNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBHZXQgQ29udGFjdFxuICAgKiBAZGVzY3JpcHRpb24gR2V0IENvbnRhY3RcbiAgICpcbiAgICogUmV0dXJucyB0aGUgcHJvcGVydGllcyBvZiBhIENvbnRhY3QuXG4gICAqL1xuICBnZXRDb250YWN0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIENvbnRhY3RcbiAgICAgICAgICogQGV4YW1wbGUgQ29udGFjdCMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGNvbnRhY3RfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkNvbnRhY3RJbmZvUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRGVsZXRlIENvbnRhY3RcbiAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBDb250YWN0XG4gICAqXG4gICAqIERlbGV0ZSBhIGNvbnRhY3QsIHNwZWNpZmllZCBieSBpdHMgSUQuXG4gICAqXG4gICAqIE9ubHkgdGhlIGNvbnRhY3Qgb3duZXIgYW5kIG9yZyBvd25lcnMgYXJlIGFsbG93ZWQgdG8gZGVsZXRlIGNvbnRhY3RzLlxuICAgKiBBZGRpdGlvbmFsbHksIHRoZSBjb250YWN0J3MgZWRpdCBwb2xpY3kgKGlmIHNldCkgbXVzdCBwZXJtaXQgdGhlIGRlbGV0aW9uLlxuICAgKi9cbiAgZGVsZXRlQ29udGFjdDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBDb250YWN0XG4gICAgICAgICAqIEBleGFtcGxlIENvbnRhY3QjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBjb250YWN0X2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRW1wdHlcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogVXBkYXRlIENvbnRhY3RcbiAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBDb250YWN0XG4gICAqXG4gICAqIFVwZGF0ZXMgYW4gZXhpc3RpbmcgY29udGFjdCBpbiB0aGUgb3JnYW5pemF0aW9uLXdpZGUgYWRkcmVzcyBib29rLiBPbmx5XG4gICAqIHRoZSBjb250YWN0IG93bmVyIG9yIGFuIG9yZyBvd25lciBjYW4gdXBkYXRlIGNvbnRhY3RzLlxuICAgKlxuICAgKiAqVXBkYXRlcyB3aWxsIG92ZXJ3cml0ZSB0aGUgZXhpc3RpbmcgdmFsdWUgb2YgdGhlIGZpZWxkLipcbiAgICovXG4gIHVwZGF0ZUNvbnRhY3Q6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgQ29udGFjdFxuICAgICAgICAgKiBAZXhhbXBsZSBDb250YWN0IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgY29udGFjdF9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVwZGF0ZUNvbnRhY3RSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQ29udGFjdEluZm9SZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBHZXQgY3VycmVudCBjb3VudHMgb2YgdXNlcnMgYW5kIGtleXMgd2l0aGluIGFuIG9yZy5cbiAgICogQGRlc2NyaXB0aW9uIEdldCBjdXJyZW50IGNvdW50cyBvZiB1c2VycyBhbmQga2V5cyB3aXRoaW4gYW4gb3JnLlxuICAgKi9cbiAgY291bnRzOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQ29tcHV0ZUNvdW50c1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIERlcml2ZSBLZXkgRnJvbSBMb25nLUxpdmVkIE1uZW1vbmljXG4gICAqIEBkZXByZWNhdGVkXG4gICAqIEBkZXNjcmlwdGlvbiBEZXJpdmUgS2V5IEZyb20gTG9uZy1MaXZlZCBNbmVtb25pY1xuICAgKlxuICAgKiBEZXJpdmVzIGEga2V5IG9mIGEgc3BlY2lmaWVkIHR5cGUgdXNpbmcgYSBzdXBwbGllZCBkZXJpdmF0aW9uIHBhdGggYW5kIGFuXG4gICAqIGV4aXN0aW5nIGxvbmctbGl2ZWQgbW5lbW9uaWMuXG4gICAqL1xuICBkZXJpdmVLZXlMZWdhY3k6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRGVyaXZlS2V5UmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkNyZWF0ZUtleVJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIERlcml2ZSBLZXkgRnJvbSBOZXcgT3IgRXhpc3RpbmcgTG9uZy1MaXZlZCBNbmVtb25pY1xuICAgKiBAZGVzY3JpcHRpb24gRGVyaXZlIEtleSBGcm9tIE5ldyBPciBFeGlzdGluZyBMb25nLUxpdmVkIE1uZW1vbmljXG4gICAqXG4gICAqIFVzZXMgZWl0aGVyIGEgbmV3IG9yIGV4aXN0aW5nIGxvbmctbGl2ZWQgbW5lbW9uaWMgdG8gZGVyaXZlIGtleXMgb2ZcbiAgICogb25lIG9yIG1vcmUgc3BlY2lmaWVkIHR5cGVzIHZpYSBzcGVjaWZpZWQgZGVyaXZhdGlvbiBwYXRocy5cbiAgICovXG4gIGRlcml2ZUtleToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJEZXJpdmVLZXlzUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkNyZWF0ZUtleVJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENvbXB1dGUgRGlmZmllIEhlbGxtYW4gc2hhcmVkIHNlY3JldFxuICAgKiBAZGVzY3JpcHRpb24gQ29tcHV0ZSBEaWZmaWUgSGVsbG1hbiBzaGFyZWQgc2VjcmV0XG4gICAqXG4gICAqIEZvciBhIHNldCBvZiBlbGxpcHRpYyBjdXJ2ZSBwb2ludHMgKFBfMSwgLi4uLCBQX2kpLCBjb21wdXRlcyB0aGUgRGlmZmllIEhlbGxtYW5cbiAgICogc2hhcmVkIHNlY3JldCAoUV8xLCAuLi4sIFFpKSA9IChzayAqIFBfMSwgLi4uIHNrICogUF9pKSwgZm9yIHNrIHRoZSBzZWNyZXQga2V5LlxuICAgKiBQb2ludHMgYXJlIHNwZWNpZmllZCBpbiBhIGN1cnZlLWRlcGVuZGVudCBmb3JtYXQuIFNlZSBDdWJlU2lnbmVyIGRvY3VtZW50YXRpb25cbiAgICogZm9yIG1vcmUgZGV0YWlscy5cbiAgICpcbiAgICogVGhlIHVzZXIgY2FuIG9wdGlvbmFsbHkgc3BlY2lmeSBhIE5JU1QgUC0yNTYgcHVibGljIGtleSwgaW4gd2hpY2ggY2FzZSB0aGUgcmVzdWx0XG4gICAqIHdpbGwgYmUgZW5jcnlwdGVkIHRvIHRoZSBwdWJsaWMga2V5IHVzaW5nIFJGQzkxODAgSFBLRShQLTI1NiwgSEtERi1TSEEyNTYpIHdpdGhcbiAgICogQUVTLTI1Ni1HQ00gYXMgdGhlIHN5bW1ldHJpYyBjaXBoZXIuIEluIHRoaXMgY2FzZSwgdGhlIHJlc3VsdGluZyBjaXBoZXJ0ZXh0IHdpbGxcbiAgICogY29udGFpbiBhIHNlcmlhbGl6ZWQgSlNPTiBibG9iIGNvbnRhaW5pbmcgdGhlIHZlY3RvciBvZiBzaGFyZWQgc2VjcmV0cyBpbiB0aGUgc2FtZVxuICAgKiBvcmRlciB0aGV5IHdlcmUgc3BlY2lmaWVkIGluIHRoZSByZXF1ZXN0LlxuICAgKlxuICAgKiBJZiB0aGUgdXNlciBkb2VzIG5vdCBzcGVjaWZ5IGEgcHVibGljIGtleSwgdGhlIHJlc3VsdGluZyBzaGFyZWQgc2VjcmV0cyB3aWxsIGJlXG4gICAqIHJldHVybmVkIHVuZW5jcnlwdGVkLiBJbiB0aGlzIGNhc2UsIHRoZSBjYWxsZXIgc2hvdWxkIHNhbXBsZSBhIHJhbmRvbSB2YWx1ZSByXG4gICAqIG1vZHVsbyB0aGUgZ3JvdXAgb3JkZXIgYW5kIG1hc2sgdGhlIHJlcXVlc3RlZCBwb2ludHMgYXMgKHIgKiBQXzEsIC4uLiwgciAqIFBfaSkuXG4gICAqIFRoZSByZXN1bHQgd2lsbCBiZSAociAqIHNrICogUF8xLCAuLi4sIHIgKiBzayAqIFBfaSksIHdoaWNoIGNhbiBiZSB1bm1hc2tlZCBieVxuICAgKiBmaXJzdCBjb21wdXRpbmcgcl4tMSwgdGhlIG11bHRpcGxpY2F0aXZlIGludmVyc2Ugb2YgciBtb2R1bG8gdGhlIGdyb3VwIG9yZGVyLFxuICAgKiB0aGVuIGNvbXB1dGluZyBhIHNjYWxhciBtdWx0aXBsaWNhdGlvbiBvZiBlYWNoIHJldHVybmVkIHBvaW50IHdpdGggcl4tMS5cbiAgICpcbiAgICogVGhlcmUgaXMgbGl0dGxlIHByYWN0aWNhbCBzZWN1cml0eSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlc2UgdHdvIGFwcHJvYWNoZXMuIFRoZVxuICAgKiBjbGllbnQgaXMgZnJlZSB0byBjaG9vc2UgdGhlIG9uZSB0aGF0IGlzIGVhc2llciBmcm9tIGFuIGltcGxlbWVudGF0aW9uIHBlcnNwZWN0aXZlLlxuICAgKi9cbiAgZGlmZmllSGVsbG1hbkV4Y2hhbmdlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIEtleVxuICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJEaWZmaWVIZWxsbWFuUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkRpZmZpZUhlbGxtYW5SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICBjb25maWd1cmVFbWFpbDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGljaCBlbWFpbCB0byBjb25maWd1cmUgKi9cbiAgICAgICAgcHVycG9zZTpcbiAgICAgICAgICB8IFwib3RwXCJcbiAgICAgICAgICB8IFwibWZhX3Jlc2V0XCJcbiAgICAgICAgICB8IFwib3RwX21mYVwiXG4gICAgICAgICAgfCBcImFsaWVuX3Bhc3N3b3JkX3Jlc2V0XCJcbiAgICAgICAgICB8IFwibWVtYmVyX3Bhc3N3b3JkX3Jlc2V0XCJcbiAgICAgICAgICB8IFwiYWxpZW5faW52aXRlXCJcbiAgICAgICAgICB8IFwibWVtYmVyX2ludml0ZVwiXG4gICAgICAgICAgfCBcIndlbGNvbWVcIjtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDb25maWd1cmVFbWFpbFJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogU2lnbiBFSVAtMTkxIERhdGFcbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gRUlQLTE5MSBEYXRhXG4gICAqXG4gICAqIFNpZ25zIGEgbWVzc2FnZSB1c2luZyBFSVAtMTkxIHBlcnNvbmFsX3NpZ24gd2l0aCBhIGdpdmVuIFNlY3AyNTZrMSBrZXkuXG4gICAqL1xuICBlaXAxOTFTaWduOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIEVWTSBhZGRyZXNzIG9mIHRoZSBTZWNwMjU2azEga2V5XG4gICAgICAgICAqIEBleGFtcGxlIDB4NDkwMTFhZGJDQzNiQzljMDMwN0JCMDdGMzdEZGExYTFhOWM2OWQyRVxuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRWlwMTkxU2lnblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gRUlQLTcxMiBUeXBlZCBEYXRhXG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIEVJUC03MTIgVHlwZWQgRGF0YVxuICAgKlxuICAgKiBTaWducyB0eXBlZCBkYXRhIGFjY29yZGluZyB0byBFSVAtNzEyIHdpdGggYSBnaXZlbiBTZWNwMjU2azEga2V5LlxuICAgKi9cbiAgZWlwNzEyU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCBFVk0gYWRkcmVzcyBvZiB0aGUgU2VjcDI1NmsxIGtleVxuICAgICAgICAgKiBAZXhhbXBsZSAweDQ5MDExYWRiQ0MzYkM5YzAzMDdCQjA3RjM3RGRhMWExYTljNjlkMkVcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVpcDcxMlNpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU2lnblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBHZXQgYW4gT3JnLUV4cG9ydCBDaXBoZXJ0ZXh0XG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgYW4gT3JnLUV4cG9ydCBDaXBoZXJ0ZXh0XG4gICAqXG4gICAqIFJldHVybnMgdGhlIGV4cG9ydCBjaXBoZXJ0ZXh0IGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJvdmlkZWQga2V5LWlkLlxuICAgKiBJbiBvcmRlciB0byB1c2UgdGhpcyBBUEksIHlvdSBtdXN0IGJlIGFuIG9yZyBvd25lciBhbmQgeW91ciBvcmcgbXVzdFxuICAgKiBiZSBjb25maWd1cmVkIGZvciBvcmcgZXhwb3J0IGFuZCBmb3IgQVBJLWJhc2VkIGV4cG9ydCBkZWxpdmVyeS5cbiAgICovXG4gIGdldE9yZ0V4cG9ydDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBLZXlcbiAgICAgICAgICogQGV4YW1wbGUgS2V5IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJPcmdFeHBvcnRSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IGFzc29jaWF0ZWQgT0lEQyBpZGVudGl0aWVzIHdpdGggdGhlIGN1cnJlbnQgdXNlci5cbiAgICogQGRlc2NyaXB0aW9uIExpc3QgYXNzb2NpYXRlZCBPSURDIGlkZW50aXRpZXMgd2l0aCB0aGUgY3VycmVudCB1c2VyLlxuICAgKi9cbiAgbGlzdE9pZGNJZGVudGl0aWVzOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTGlzdElkZW50aXRpZXNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBBc3NvY2lhdGUgYW4gT0lEQyBpZGVudGl0eSB3aXRoIHRoZSBjdXJyZW50IHVzZXIgaW4gb3JnIDxzZXNzaW9uLm9yZz4uXG4gICAqIEBkZXNjcmlwdGlvbiBBc3NvY2lhdGUgYW4gT0lEQyBpZGVudGl0eSB3aXRoIHRoZSBjdXJyZW50IHVzZXIgaW4gb3JnIDxzZXNzaW9uLm9yZz4uXG4gICAqXG4gICAqIEFsaWVuIHVzZXJzIGFyZSBhbGxvd2VkIHRvIGNhbGwgdGhpcyBlbmRwb2ludCwgYnV0IGZvciB0aGVtIE1GQSBpcyByZXF1aXJlZFxuICAgKiAodW5sZXNzIHRoZXkgYXJlIHJlZ2lzdGVyaW5nIGFuIGVtYWlsLW90cCBpZGVudGl0eSBtYXRjaGluZyB0aGVpciBjdXJyZW50IGVtYWlsKTtcbiAgICogYWRkaXRpb25hbGx5LCBsaW1pdHMgbWF5IGFwcGx5IHRvIGhvdyBtYW55IGlkZW50aXRpZXMgdGhhdCBtYXkgcmVnaXN0ZXIuXG4gICAqL1xuICBhZGRPaWRjSWRlbnRpdHk6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWRkSWRlbnRpdHlSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZW1vdmUgYW4gT0lEQyBpZGVudGl0eSBmcm9tIHRoZSBjdXJyZW50IHVzZXIncyBhY2NvdW50IGluIG9yZyA8c2Vzc2lvbi5vcmc+LlxuICAgKiBAZGVzY3JpcHRpb24gUmVtb3ZlIGFuIE9JREMgaWRlbnRpdHkgZnJvbSB0aGUgY3VycmVudCB1c2VyJ3MgYWNjb3VudCBpbiBvcmcgPHNlc3Npb24ub3JnPi5cbiAgICovXG4gIHJlbW92ZU9pZGNJZGVudGl0eToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPaWRjSWRlbnRpdHlcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIFtJZGVudGl0eVByb29mXSBmcm9tIEN1YmVTaWduZXIgdXNlciBzZXNzaW9uXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgW0lkZW50aXR5UHJvb2ZdIGZyb20gQ3ViZVNpZ25lciB1c2VyIHNlc3Npb25cbiAgICpcbiAgICogVGhpcyByb3V0ZSBjYW4gYmUgdXNlZCB0byBwcm92ZSB0byBhbm90aGVyIHBhcnR5IHRoYXQgYSB1c2VyIGhhcyBhXG4gICAqIHZhbGlkIEN1YmVTaWduZXIgc2Vzc2lvbi5cbiAgICpcbiAgICogQ2xpZW50cyBhcmUgaW50ZW5kZWQgdG8gY2FsbCB0aGlzIHJvdXRlIGFuZCBwYXNzIHRoZSByZXR1cm5lZCBldmlkZW5jZVxuICAgKiB0byBhbm90aGVyIHNlcnZpY2Ugd2hpY2ggd2lsbCB2ZXJpZnkgaXQgYnkgbWFraW5nIGEgcmVxdWVzdCB0byBgL3YwL29yZy88b3JnX2lkPi9pZGVudGl0eS92ZXJpZnlgLlxuICAgKi9cbiAgY3JlYXRlUHJvb2ZDdWJlU2lnbmVyOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiSWRlbnRpdHlQcm9vZlwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDcmVhdGUgW0lkZW50aXR5UHJvb2ZdIGZyb20gT0lEQyB0b2tlblxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIFtJZGVudGl0eVByb29mXSBmcm9tIE9JREMgdG9rZW5cbiAgICpcbiAgICogRXhjaGFuZ2UgYW4gT0lEQyBJRCB0b2tlbiAocGFzc2VkIHZpYSB0aGUgYEF1dGhvcml6YXRpb25gIGhlYWRlcikgZm9yIGEgcHJvb2Ygb2YgYXV0aGVudGljYXRpb24uXG4gICAqXG4gICAqIFRoaXMgcm91dGUgY2FuIGJlIHVzZWQgdG8gcHJvdmUgdG8gYW5vdGhlciBwYXJ0eSB0aGF0IGEgdXNlciBoYXMgbWV0IHRoZVxuICAgKiBhdXRoZW50aWNhdGlvbiByZXF1aXJlbWVudHMgKGFsbG93ZWQgaXNzdWVycyAmIGF1ZGllbmNlcykgZm9yIEN1YmVTaWduZXJcbiAgICogd2l0aG91dCBsZWFraW5nIHRoZWlyIGNyZWRlbnRpYWxzLlxuICAgKlxuICAgKiBDbGllbnRzIGFyZSBpbnRlbmRlZCB0byBjYWxsIHRoaXMgcm91dGUgYW5kIHBhc3MgdGhlIHJldHVybmVkIGV2aWRlbmNlIHRvIGFub3RoZXIgc2VydmljZVxuICAgKiB3aGljaCB3aWxsIHZlcmlmeSBpdCBieSBtYWtpbmcgYSByZXF1ZXN0IHRvIGAvdjAvb3JnLzxvcmdfaWQ+L2lkZW50aXR5L3ZlcmlmeWAuXG4gICAqL1xuICBjcmVhdGVQcm9vZk9pZGM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJJZGVudGl0eVByb29mXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFZlcmlmeSBpZGVudGl0eSBwcm9vZlxuICAgKiBAZGVzY3JpcHRpb24gVmVyaWZ5IGlkZW50aXR5IHByb29mXG4gICAqXG4gICAqIEFsbG93cyBhIHRoaXJkLXBhcnR5IHRvIHZhbGlkYXRlIHByb29mIG9mIGF1dGhlbnRpY2F0aW9uLlxuICAgKlxuICAgKiBXaGVuIGEgdGhpcmQtcGFydHkgaXMgcHJvdmlkZWQgYW4gW0lkZW50aXR5UHJvb2ZdIG9iamVjdCwgdGhleSBtdXN0IGNoZWNrIGl0c1xuICAgKiB2ZXJhY2l0eSBieSBjYWxsaW5nIHRoaXMgZW5kcG9pbnRcbiAgICovXG4gIHZlcmlmeVByb29mOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkZW50aXR5UHJvb2ZcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7fTtcbiAgfTtcbiAgLyoqXG4gICAqIEF1dGhlbnRpY2F0ZVxuICAgKiBAZGVzY3JpcHRpb24gQXV0aGVudGljYXRlXG4gICAqXG4gICAqIFRoaXMgZW5kcG9pbnQgZXhjaGFuZ2VzIGFuIGVtYWlsICYgcGFzc3dvcmQgZm9yIGFuIE9JREMgdG9rZW5cbiAgICovXG4gIGlkcEF1dGhlbnRpY2F0ZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBdXRoZW50aWNhdGlvblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJBdXRoZW50aWNhdGlvblJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFJlcXVlc3QgUGFzc3dvcmQgUmVzZXRcbiAgICogQGRlc2NyaXB0aW9uIFJlcXVlc3QgUGFzc3dvcmQgUmVzZXRcbiAgICpcbiAgICogVGhpcyBlbmRwb2ludCBnZW5lcmF0ZXMgYW4gT0lEQyB0b2tlbiB3aXRob3V0IGEgc2lnbmF0dXJlIChvZiB0aGUgZm9ybSBge2hlYWRlcn0ue3BheWxvYWR9LmApLFxuICAgKiBhbmQgc2VuZHMgdGhlIHNpZ25hdHVyZSB0byB0aGUgdXNlcidzIGVtYWlsLiBDbGllbnQgYXBwbGljYXRpb25zIGNhbiByZWNvbnN0cnVjdCB0aGUgdG9rZW5cbiAgICogYnkgY29uY2F0ZW5hdGluZyB0aGUgYHtoZWFkZXJ9LntwYXlsb2FkfS5gIHdpdGggdGhlIHNpZ25hdHVyZSwgcHJvZHVjaW5nIGEgdmFsaWQgT0lEQyB0b2tlbiBvZlxuICAgKiB0aGUgZm9ybSBge2hlYWRlcn0ue3BheWxvYWR9LntzaWduYXR1cmV9YC4gVGhlIHRva2VuIGNhbiB0aGVuIGJlIHVzZWQgdG8gYXV0aGVudGljYXRlIHRoZSB1c2VyXG4gICAqIHdoZW4gcGVyZm9ybWluZyB0aGUgYGlkcF9wYXNzd29yZF9yZXNldF9jb25maXJtYCByZXF1ZXN0LlxuICAgKi9cbiAgaWRwUGFzc3dvcmRSZXNldFJlcXVlc3Q6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUGFzc3dvcmRSZXNldFJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbWFpbE90cFJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENvbmZpcm0gUGFzc3dvcmQgUmVzZXRcbiAgICogQGRlc2NyaXB0aW9uIENvbmZpcm0gUGFzc3dvcmQgUmVzZXRcbiAgICpcbiAgICogVGhpcyBlbmRwb2ludCBhbGxvd3MgSURQIHVzZXJzIHRvIHJlc2V0IHRoZWlyIHBhc3N3b3JkXG4gICAqIHVzaW5nIGEgdG9rZW4gdGhleSBoYXZlIHJlY2VpdmVkIGluIHRoZWlyIGVtYWlsLlxuICAgKi9cbiAgaWRwUGFzc3dvcmRSZXNldENvbmZpcm06IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUGFzc3dvcmRSZXNldENvbmZpcm1SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENyZWF0ZSBLZXktSW1wb3J0IEtleVxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIEtleS1JbXBvcnQgS2V5XG4gICAqXG4gICAqIEdlbmVyYXRlIGFuIGVwaGVtZXJhbCBrZXkgdGhhdCBhIGNsaWVudCBjYW4gdXNlIGZvciBrZXktaW1wb3J0IGVuY3J5cHRpb24uXG4gICAqL1xuICBjcmVhdGVLZXlJbXBvcnRLZXk6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJDcmVhdGVLZXlJbXBvcnRLZXlSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBJbXBvcnQgS2V5XG4gICAqIEBkZXNjcmlwdGlvbiBJbXBvcnQgS2V5XG4gICAqXG4gICAqIFNlY3VyZWx5IGltcG9ydHMgYW4gZXhpc3Rpbmcga2V5IHVzaW5nIGEgcHJldmlvdXNseSBnZW5lcmF0ZWQga2V5LWltcG9ydCBrZXkuXG4gICAqL1xuICBpbXBvcnRLZXk6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSW1wb3J0S2V5UmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkNyZWF0ZUtleVJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFB1YmxpYyBPcmcgSW5mb1xuICAgKiBAZGVzY3JpcHRpb24gUHVibGljIE9yZyBJbmZvXG4gICAqXG4gICAqIFVuYXV0aGVudGljYXRlZCBlbmRwb2ludCB0aGF0IHJldHVybnMgcHVibGljbHktYXZhaWxhYmxlIGluZm9ybWF0aW9uIGFib3V0IGFuIG9yZ2FuaXphdGlvbi5cbiAgICovXG4gIHB1YmxpY19vcmdfaW5mbzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlB1YmxpY09yZ0luZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogKElOVEVSTkFMKSBDdXN0b20gY2hhaW4gUlBDIHByb3h5XG4gICAqIEBkZXNjcmlwdGlvbiAoSU5URVJOQUwpIEN1c3RvbSBjaGFpbiBSUEMgcHJveHlcbiAgICovXG4gIGN1c3RvbUNoYWluUnBjQ2FsbDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDdXN0b21DaGFpblJwY1JlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJDdXN0b21DaGFpblJwY1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIChJTlRFUk5BTCkgRXNwbG9yYSBBUEkgUHJveHlcbiAgICogQGRlc2NyaXB0aW9uIChJTlRFUk5BTCkgRXNwbG9yYSBBUEkgUHJveHlcbiAgICovXG4gIGVzcGxvcmFBcGlDYWxsOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVzcGxvcmFSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRXNwbG9yYVJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIChJTlRFUk5BTCkgQXV0aGVudGljYXRlZCBTZW50cnkgQVBJIFByb3h5XG4gICAqIEBkZXNjcmlwdGlvbiAoSU5URVJOQUwpIEF1dGhlbnRpY2F0ZWQgU2VudHJ5IEFQSSBQcm94eVxuICAgKi9cbiAgc2VudHJ5QXBpQ2FsbDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcInRleHQvcGxhaW5cIjogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEFjY2VwdCBhbiBpbnZpdGF0aW9uXG4gICAqIEBkZXNjcmlwdGlvbiBBY2NlcHQgYW4gaW52aXRhdGlvblxuICAgKlxuICAgKiBUaGlzIGVuZHBvaW50IGFsbG93cyBpZHAgdXNlcnMgdG8gcmVnaXN0ZXIgdXNpbmcgYSB0b2tlbiB0aGV5IGhhdmUgcmVjZWl2ZWQgaW4gdGhlaXIgZW1haWxcbiAgICovXG4gIGludml0YXRpb25BY2NlcHQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSW52aXRhdGlvbkFjY2VwdFJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7fTtcbiAgfTtcbiAgLyoqXG4gICAqIEludml0ZSBVc2VyXG4gICAqIEBkZXNjcmlwdGlvbiBJbnZpdGUgVXNlclxuICAgKlxuICAgKiBDcmVhdGVzIGEgbmV3IHVzZXIgaW4gYW4gZXhpc3Rpbmcgb3JnIGFuZCBzZW5kcyB0aGF0IHVzZXIgYW4gaW52aXRlIGVtYWlsLlxuICAgKi9cbiAgaW52aXRlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkludml0ZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBLZXlzXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IEtleXNcbiAgICpcbiAgICogR2V0cyB0aGUgbGlzdCBvZiBhY2Nlc3NpYmxlIGtleXMgaW4gYSBnaXZlbiBvcmcgKHRvIG9yZyBvd25lciwgYWxsIG9yZyBrZXlzXG4gICAqIGFyZSBhY2Nlc3NpYmxlOyB0byBtZW1iZXJzLCBvbmx5IHRoZWlyIG93biBrZXlzIGFyZSBhY2Nlc3NpYmxlKS5cbiAgICpcbiAgICogSWYgYSBzZWFyY2ggY29uZGl0aW9uIGlzLCB0aGUgcmVzdWx0IHdpbGwgY29udGFpbiBvbmx5IHRoZSBrZXlzIHdob3NlIGVpdGhlclxuICAgKiBtYXRlcmlhbCBJRCBvciBtZXRhZGF0YSBjb250YWluIHRoZSBzZWFyY2ggY29uZGl0aW9uIHN0cmluZy5cbiAgICpcbiAgICogTk9URSB0aGF0IGlmIHBhZ2luYXRpb24gaXMgdXNlZCBhbmQgYSBwYWdlIGxpbWl0IGlzIHNldCwgdGhlIHJldHVybmVkIHJlc3VsdFxuICAgKiBzZXQgbWF5IGNvbnRhaW4gZWl0aGVyIEZFV0VSIG9yIE1PUkUgZWxlbWVudHMgdGhhbiB0aGUgcmVxdWVzdGVkIHBhZ2UgbGltaXQuXG4gICAqL1xuICBsaXN0S2V5c0luT3JnOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgICAqIGRhdGEgaW4gdGhlIHJlc3VsdCBzZXQuIFRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBtb3JlIGRhdGEgaXMgbGVmdCBpbiB0aGUgcmVzdWx0IHNldCxcbiAgICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc2l6ZVwiPzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgICAqIHRoZSBleGFjdCB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc3RhcnRcIj86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gRmlsdGVyIGJ5IGtleSB0eXBlXG4gICAgICAgICAqIEBleGFtcGxlIFNlY3BFdGhBZGRyXG4gICAgICAgICAqL1xuICAgICAgICBrZXlfdHlwZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5VHlwZVwiXSB8IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gRmlsdGVyIGJ5IGtleSBvd25lclxuICAgICAgICAgKiBAZXhhbXBsZSBVc2VyIzUyNjljNTc5LWI0ZjktNDYyMC05ZTkwLWU0NmE1YTBmZmI0ZFxuICAgICAgICAgKi9cbiAgICAgICAga2V5X293bmVyPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXSB8IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gU2VhcmNoIGtleSBtZXRhZGF0YVxuICAgICAgICAgKiBAZXhhbXBsZSBzb21lIHZhbHVlXG4gICAgICAgICAqL1xuICAgICAgICBzZWFyY2g/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZExpc3RLZXlzUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIEtleVxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIEtleVxuICAgKlxuICAgKiBDcmVhdGVzIG9uZSBvciBtb3JlIG5ldyBrZXlzIG9mIHRoZSBzcGVjaWZpZWQgdHlwZS5cbiAgICovXG4gIGNyZWF0ZUtleToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDcmVhdGVLZXlSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQ3JlYXRlS2V5UmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IEtleVxuICAgKiBAZGVzY3JpcHRpb24gR2V0IEtleVxuICAgKlxuICAgKiBSZXR1cm5zIHRoZSBwcm9wZXJ0aWVzIG9mIGEga2V5LlxuICAgKi9cbiAgZ2V0S2V5SW5Pcmc6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgS2V5XG4gICAgICAgICAqIEBleGFtcGxlIEtleSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiS2V5SW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBEZWxldGUgS2V5XG4gICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgS2V5XG4gICAqXG4gICAqIERlbGV0ZXMgYSBrZXkgc3BlY2lmaWVkIGJ5IGl0cyBJRC5cbiAgICpcbiAgICogT25seSB0aGUga2V5IG93bmVyIGFuZCBvcmcgb3duZXJzIGFyZSBhbGxvd2VkIHRvIGRlbGV0ZSBrZXlzLlxuICAgKiBBZGRpdGlvbmFsbHksIHRoZSByb2xlJ3MgZWRpdCBwb2xpY3kgKGlmIHNldCkgbXVzdCBwZXJtaXQgdGhlIHVwZGF0ZS5cbiAgICovXG4gIGRlbGV0ZUtleToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBLZXlcbiAgICAgICAgICogQGV4YW1wbGUgS2V5IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRW1wdHlcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFVwZGF0ZSBLZXlcbiAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBLZXlcbiAgICpcbiAgICogRW5hYmxlIG9yIGRpc2FibGUgYSBrZXkuICBUaGUgdXNlciBtdXN0IGJlIHRoZSBvd25lciBvZiB0aGUga2V5IG9yXG4gICAqIG9yZ2FuaXphdGlvbiB0byBwZXJmb3JtIHRoaXMgYWN0aW9uLlxuICAgKlxuICAgKiBGb3IgZWFjaCByZXF1ZXN0ZWQgdXBkYXRlLCB0aGUgc2Vzc2lvbiBtdXN0IGhhdmUgdGhlIGNvcnJlc3BvbmRpbmcgJ21hbmFnZTprZXk6dXBkYXRlOl8nIHNjb3BlO1xuICAgKiBpZiBubyB1cGRhdGVzIGFyZSByZXF1ZXN0ZWQsIHRoZSBzZXNzaW9uIG11c3QgaGF2ZSAnbWFuYWdlOmtleTpnZXQnLlxuICAgKi9cbiAgdXBkYXRlS2V5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIEtleVxuICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVcGRhdGVLZXlSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiS2V5SW5mb1wiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQXR0ZXN0IHRvIEtleSBQcm9wZXJ0aWVzXG4gICAqIEBkZXNjcmlwdGlvbiBBdHRlc3QgdG8gS2V5IFByb3BlcnRpZXNcbiAgICpcbiAgICogVGhlIHJlc3BvbnNlIGlzIGEgSldUIHdob3NlIGNsYWltcyBhcmUgdGhlIGtleSBwcm9wZXJ0aWVzLlxuICAgKi9cbiAgYXR0ZXN0S2V5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIEtleVxuICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIktleUluZm9Kd3RcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBLZXkgUm9sZXNcbiAgICogQGRlc2NyaXB0aW9uIExpc3QgS2V5IFJvbGVzXG4gICAqXG4gICAqIEdldCBhbGwgcm9sZXMgdGhlIGtleSBpcyBpblxuICAgKi9cbiAgbGlzdEtleVJvbGVzOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgICAqIGRhdGEgaW4gdGhlIHJlc3VsdCBzZXQuIFRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBtb3JlIGRhdGEgaXMgbGVmdCBpbiB0aGUgcmVzdWx0IHNldCxcbiAgICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc2l6ZVwiPzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgICAqIHRoZSBleGFjdCB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc3RhcnRcIj86IHN0cmluZyB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIEtleVxuICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZExpc3RLZXlSb2xlc1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3QgSGlzdG9yaWNhbCBUcmFuc2FjdGlvbnNcbiAgICogQGRlc2NyaXB0aW9uIExpc3QgSGlzdG9yaWNhbCBUcmFuc2FjdGlvbnNcbiAgICpcbiAgICogUmV0dXJucyBhIHNvcnRlZCwgcGFnaW5hdGVkIGxpc3Qgb2YgdHJhbnNhY3Rpb25zIHNpZ25lZCBieSBhIGdpdmVuIGtleSxcbiAgICogb3JkZXJlZCBmcm9tIG1vc3QgcmVjZW50IGZpcnN0LlxuICAgKi9cbiAgbGlzdEhpc3RvcmljYWxLZXlUeDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBJZiB0aGUgYWN0dWFsIG51bWJlciBvZiByZXR1cm5lZCBpdGVtcyBtYXkgYmUgbGVzcyB0aGF0IHRoaXMsIGV2ZW4gaWYgdGhlcmUgZXhpc3QgbW9yZVxuICAgICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgICAqIGluc3BlY3QgdGhlIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnQgb2YgdGhlIHBhZ2UuICBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZzsgb3RoZXJ3aXNlLCBvbmx5IHNwZWNpZnkgYVxuICAgICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnN0YXJ0XCI/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBLZXlcbiAgICAgICAgICogQGV4YW1wbGUgS2V5IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRMaXN0SGlzdG9yaWNhbFR4UmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IEtleSBieSBNYXRlcmlhbCBJRFxuICAgKiBAZGVzY3JpcHRpb24gR2V0IEtleSBieSBNYXRlcmlhbCBJRFxuICAgKlxuICAgKiBSZXR1cm5zIHRoZSBwcm9wZXJ0aWVzIG9mIGEga2V5LlxuICAgKi9cbiAgZ2V0S2V5QnlNYXRlcmlhbElkOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFR5cGUgb2YgdGhlIGtleSB0byBsb29rIHVwICovXG4gICAgICAgIGtleV90eXBlOiBzdHJpbmc7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gTWF0ZXJpYWwgSUQgb2YgdGhlIGtleSB0byBsb29rIHVwICovXG4gICAgICAgIG1hdGVyaWFsX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJLZXlJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFF1ZXJ5IG9yZyBtZXRyaWNzLlxuICAgKiBAZGVzY3JpcHRpb24gUXVlcnkgb3JnIG1ldHJpY3MuXG4gICAqXG4gICAqIE1ldHJpY3Mgc3VtbWFyaXplIHVzYWdlIGluZm9ybWF0aW9uIGFib3V0IHlvdXIgQ3ViZVNpZ25lciBvcmdhbml6YXRpb24gb3ZlciB0aW1lLiBGb3IgZXhhbXBsZSxcbiAgICogeW91IGNhbiBjYWxsIHRoaXMgZW5kcG9pbnQgZmluZCBvdXQ6XG4gICAqXG4gICAqIC0gdGhlIGF2ZXJhZ2UgbnVtYmVyIG9mIGtleXMgb3ZlciB0aGUgbGFzdCBtb250aCxcbiAgICogLSB0aGUgYXZlcmFnZSBudW1iZXIgbW9udGhseSB1c2VycyBvdmVyIHRoZSBsYXN0IHllYXIsXG4gICAqIC0gdGhlIHRvdGFsIG51bWJlciBvZiB0cmFuc2FjdGlvbnMgc2lnbmVkIGxhc3Qgd2VlayxcbiAgICogLSBob3cgdGhlIG51bWJlciBvZiBkaWZmZXJlbnQgQVBJIHJlcXVlc3RzIHdhcyB0cmVuZGluZyBkYXktYnktZGF5IG92ZXIgdGhlIGxhc3Qgd2Vlay9tb250aC95ZWFyLCBldGMuXG4gICAqXG4gICAqIEVhY2ggbWV0cmljIGtpbmQgY2FuIGhhdmUgb25lIG9yIG1vcmUgZGltZW5zaW9ucywgdG8gZnVydGhlciBzcGVjaWZ5IHRoZSBvcmcgcHJvcGVydHkgaXQgZGVzY3JpYmVzLlxuICAgKiBGb3IgZXhhbXBsZSwgdGhlIGBVc2VyQ291bnRgIG1ldHJpY3MgaGF2ZSBhIG1lbWJlcnNoaXAgZGltZW5zaW9ucyB0byBzcGVjaWZ5IHRoZSBraW5kIG9mIHVzZXIgbWVtYmVyc2hpcFxuICAgKiBpbiB0aGUgb3JnYW5pemF0aW9uIChcIk93bmVyXCIgdnMuIFwiTWVtYmVyXCIgdnMuIFwiQWxpZW5cIikuXG4gICAqL1xuICBxdWVyeU1ldHJpY3M6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUXVlcnlNZXRyaWNzUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZFF1ZXJ5TWV0cmljc1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3QgUGVuZGluZyBNRkEgUmVxdWVzdHNcbiAgICogQGRlc2NyaXB0aW9uIExpc3QgUGVuZGluZyBNRkEgUmVxdWVzdHNcbiAgICpcbiAgICogUmV0cmlldmVzIGFuZCByZXR1cm5zIGFsbCBwZW5kaW5nIE1GQSByZXF1ZXN0cyB0aGF0IGFyZSBhY2Nlc3NpYmxlIHRvIHRoZSBjdXJyZW50IHNlc3Npb24sXG4gICAqIGkuZS4sIHRob3NlIGNyZWF0ZWQgYnkgdGhlIGN1cnJlbnQgc2Vzc2lvbiBpZGVudGl0eSBwbHVzIHRob3NlIGluIHdoaWNoIHRoZSBjdXJyZW50IHVzZXJcbiAgICogaXMgbGlzdGVkIGFzIGFuIGFwcHJvdmVyXG4gICAqL1xuICBtZmFMaXN0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTGlzdE1mYVJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCBQZW5kaW5nIE1GQSBSZXF1ZXN0XG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgUGVuZGluZyBNRkEgUmVxdWVzdFxuICAgKlxuICAgKiBSZXRyaWV2ZXMgYW5kIHJldHVybnMgYSBwZW5kaW5nIE1GQSByZXF1ZXN0IGJ5IGl0cyBpZC5cbiAgICovXG4gIG1mYUdldDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE1mYVJlcXVlc3RcbiAgICAgICAgICogQGV4YW1wbGUgTWZhUmVxdWVzdCMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG1mYV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTWZhUmVxdWVzdEluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQXBwcm92ZSBvciBSZWplY3QgTUZBIFJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIEFwcHJvdmUgb3IgUmVqZWN0IE1GQSBSZXF1ZXN0XG4gICAqXG4gICAqIEFwcHJvdmUgb3IgcmVqZWN0IHJlcXVlc3QgYWZ0ZXIgbG9nZ2luZyBpbiB3aXRoIEN1YmVTaWduZXIuXG4gICAqXG4gICAqIElmIGFwcHJvdmluZywgYWRkcyB0aGUgY3VycmVudGx5LWxvZ2dlZCB1c2VyIGFzIGFuIGFwcHJvdmVyXG4gICAqIG9mIGEgcGVuZGluZyBNRkEgcmVxdWVzdCBvZiB0aGUgW1N0YXR1czo6UmVxdWlyZWRBcHByb3ZlcnNdIGtpbmQuIElmIHRoZSByZXF1aXJlZCBudW1iZXIgb2ZcbiAgICogYXBwcm92ZXJzIGlzIHJlYWNoZWQsIHRoZSBNRkEgcmVxdWVzdCBpcyBhcHByb3ZlZDsgdGhlIGNvbmZpcm1hdGlvbiByZWNlaXB0IGNhbiBiZSB1c2VkIHRvXG4gICAqIHJlc3VtZSB0aGUgb3JpZ2luYWwgSFRUUCByZXF1ZXN0LlxuICAgKlxuICAgKiBJZiByZWplY3RpbmcsIGltbWVkaWF0ZWx5IGRlbGV0ZXMgdGhlIHBlbmRpbmcgTUZBIHJlcXVlc3QuXG4gICAqL1xuICBtZmFWb3RlQ3M6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgbWZhX3ZvdGU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVZvdGVcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE1mYVJlcXVlc3RcbiAgICAgICAgICogQGV4YW1wbGUgTWZhUmVxdWVzdCMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG1mYV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTWZhUmVxdWVzdEluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW5pdGlhdGUgYW4gRW1haWwgT1RQIE1GQSBBcHByb3ZhbC9SZWplY3Rpb25cbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIGFuIEVtYWlsIE9UUCBNRkEgQXBwcm92YWwvUmVqZWN0aW9uXG4gICAqXG4gICAqIEluaXRpYXRlcyB0aGUgYXBwcm92YWwvcmVqZWN0aW9uIHByb2Nlc3Mgb2YgYW4gTUZBIFJlcXVlc3QgdXNpbmcgRW1haWwgT1RQLlxuICAgKi9cbiAgbWZhRW1haWxJbml0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIG1mYV92b3RlPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFWb3RlXCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBNZmFSZXF1ZXN0XG4gICAgICAgICAqIEBleGFtcGxlIE1mYVJlcXVlc3QjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBtZmFfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtYWlsT3RwUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRmluYWxpemUgYSBFbWFpbCBPVFAgTUZBIEFwcHJvdmFsL1JlamVjdGlvbi5cbiAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIGEgRW1haWwgT1RQIE1GQSBBcHByb3ZhbC9SZWplY3Rpb24uXG4gICAqXG4gICAqIFRoZSByZXF1ZXN0IHNob3VsZCBjb250YWluIHRoZSBmdWxsIEpXVCBvYnRhaW5lZCBieSBjb25jYXRlbmF0aW5nIHRoZVxuICAgKiBwYXJ0aWFsIHRva2VuIHJldHVybmVkIGJ5IHRoZSBgbWZhX2VtYWlsX2luaXRgIGVuZHBvaW50IGFuZCB0aGUgc2lnbmF0dXJlXG4gICAqIGVtYWlsZWQgdG8gdGhlIHVzZXIgaXNzdWluZyB0aGUgcmVxdWVzdC5cbiAgICpcbiAgICogSWYgYXBwcm92aW5nLCBhZGRzIGFuIGFwcHJvdmVyIHRvIGEgcGVuZGluZyBNRkEgcmVxdWVzdC5cbiAgICogSWYgdGhlIHJlcXVpcmVkIG51bWJlciBvZiBhcHByb3ZlcnMgaXMgcmVhY2hlZCwgdGhlIE1GQSByZXF1ZXN0IGlzIGFwcHJvdmVkO1xuICAgKiB0aGUgY29uZmlybWF0aW9uIHJlY2VpcHQgY2FuIGJlIHVzZWQgdG8gcmVzdW1lIHRoZSBvcmlnaW5hbCBIVFRQIHJlcXVlc3QuXG4gICAqXG4gICAqIElmIHJlamVjdGluZywgaW1tZWRpYXRlbHkgZGVsZXRlcyB0aGUgcGVuZGluZyBNRkEgcmVxdWVzdC5cbiAgICovXG4gIG1mYVZvdGVFbWFpbENvbXBsZXRlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgTWZhUmVxdWVzdFxuICAgICAgICAgKiBAZXhhbXBsZSBNZmFSZXF1ZXN0IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgbWZhX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRW1haWxPdHBBbnN3ZXJcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJNZmFSZXF1ZXN0SW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBJbml0aWF0ZSBhIEZJRE8gTUZBIEFwcHJvdmFsL1JlamVjdGlvblxuICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgYSBGSURPIE1GQSBBcHByb3ZhbC9SZWplY3Rpb25cbiAgICpcbiAgICogSW5pdGlhdGVzIHRoZSBhcHByb3ZhbC9yZWplY3Rpb24gcHJvY2VzcyBvZiBhbiBNRkEgUmVxdWVzdCB1c2luZyBGSURPLlxuICAgKi9cbiAgbWZhRmlkb0luaXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBNZmFSZXF1ZXN0XG4gICAgICAgICAqIEBleGFtcGxlIE1mYVJlcXVlc3QjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBtZmFfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkZpZG9Bc3NlcnRDaGFsbGVuZ2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRmluYWxpemUgYSBGSURPIE1GQSBBcHByb3ZhbC9SZWplY3Rpb25cbiAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIGEgRklETyBNRkEgQXBwcm92YWwvUmVqZWN0aW9uXG4gICAqXG4gICAqIElmIGFwcHJvdmluZywgYWRkcyBhbiBhcHByb3ZlciB0byBhIHBlbmRpbmcgTUZBIHJlcXVlc3QuXG4gICAqIElmIHRoZSByZXF1aXJlZCBudW1iZXIgb2YgYXBwcm92ZXJzIGlzIHJlYWNoZWQsIHRoZSBNRkEgcmVxdWVzdCBpcyBhcHByb3ZlZDtcbiAgICogdGhlIGNvbmZpcm1hdGlvbiByZWNlaXB0IGNhbiBiZSB1c2VkIHRvIHJlc3VtZSB0aGUgb3JpZ2luYWwgSFRUUCByZXF1ZXN0LlxuICAgKlxuICAgKiBJZiByZWplY3RpbmcsIGltbWVkaWF0ZWx5IGRlbGV0ZXMgdGhlIHBlbmRpbmcgTUZBIHJlcXVlc3QuXG4gICAqL1xuICBtZmFWb3RlRmlkb0NvbXBsZXRlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIG1mYV92b3RlPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFWb3RlXCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBNZmFSZXF1ZXN0XG4gICAgICAgICAqIEBleGFtcGxlIE1mYVJlcXVlc3QjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBtZmFfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJGaWRvQXNzZXJ0QW5zd2VyXCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTWZhUmVxdWVzdEluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQXBwcm92ZS9SZWplY3QgYSBUT1RQIE1GQSBSZXF1ZXN0XG4gICAqIEBkZXNjcmlwdGlvbiBBcHByb3ZlL1JlamVjdCBhIFRPVFAgTUZBIFJlcXVlc3RcbiAgICpcbiAgICogSWYgYXBwcm92aW5nLCBhZGRzIHRoZSBjdXJyZW50IHVzZXIgYXMgYXBwcm92ZXIgdG8gYSBwZW5kaW5nIE1GQSByZXF1ZXN0IGJ5XG4gICAqIHByb3ZpZGluZyBUT1RQIGNvZGUuIElmIHRoZSByZXF1aXJlZCBudW1iZXIgb2YgYXBwcm92ZXJzIGlzIHJlYWNoZWQsIHRoZSBNRkEgcmVxdWVzdCBpc1xuICAgKiBhcHByb3ZlZDsgdGhlIGNvbmZpcm1hdGlvbiByZWNlaXB0IGNhbiBiZSB1c2VkIHRvIHJlc3VtZSB0aGUgb3JpZ2luYWwgSFRUUCByZXF1ZXN0LlxuICAgKlxuICAgKiBJZiByZWplY3RpbmcsIGltbWVkaWF0ZWx5IGRlbGV0ZXMgdGhlIHBlbmRpbmcgTUZBIHJlcXVlc3QuXG4gICAqL1xuICBtZmFWb3RlVG90cDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICBtZmFfdm90ZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhVm90ZVwiXSB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgTWZhUmVxdWVzdFxuICAgICAgICAgKiBAZXhhbXBsZSBNZmFSZXF1ZXN0IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgbWZhX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG90cEFwcHJvdmVSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTWZhUmVxdWVzdEluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBwZW5kaW5nIE1NSSByZXF1ZXN0c1xuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBwZW5kaW5nIE1NSSByZXF1ZXN0c1xuICAgKlxuICAgKiBSZXRyaWV2ZXMgYW5kIHJldHVybnMgYWxsIHBlbmRpbmcgTU1JIG1lc3NhZ2VzIGFjY2Vzc2libGUgdG8gdGhlIGN1cnJlbnQgc2Vzc2lvbiBpZGVudGl0eSwgaS5lLixcbiAgICogLSBhIHJvbGUgc2Vzc2lvbiBjYW4gYWNjZXNzIG9ubHkgdGhlIG1lc3NhZ2VzIGNyZWF0ZWQgYnkgdGhhdCByb2xlXG4gICAqIC0gYSB1c2VyIHNlc3Npb24gY2FuIGFjY2VzcyB0aGUgbWVzc2FnZXMgY3JlYXRlZCBieSBlaXRoZXIgdGhhdCB1c2VyIG9yIGFueSByb2xlIHdoaWNoIHRoZSB1c2VyIGlzIGEgbWVtYmVyIG9mXG4gICAqL1xuICBtbWlNZXNzYWdlTGlzdDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkxpc3RQZW5kaW5nTWVzc2FnZXNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBHZXQgYW4gTU1JIHJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIEdldCBhbiBNTUkgcmVxdWVzdFxuICAgKlxuICAgKiBSZXRyaWV2ZXMgYSBwZW5kaW5nIE1NSSByZXF1ZXN0IGJ5IGl0cyBJRC5cbiAgICovXG4gIG1taU1lc3NhZ2VHZXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBQZW5kaW5nTWVzc2FnZVxuICAgICAgICAgKiBAZXhhbXBsZSBQZW5kaW5nTWVzc2FnZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG1zZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGVuZGluZ01lc3NhZ2VJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIERlbGV0ZSBhbiBNTUkgcmVxdWVzdFxuICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIGFuIE1NSSByZXF1ZXN0XG4gICAqXG4gICAqIFJlamVjdHMgYW4gZXhpc3RpbmcgTU1JIHJlcXVlc3QgYW5kIHRoZW4gZGVsZXRlcyBpdCBmcm9tIHRoZSBkYXRhYmFzZS5cbiAgICovXG4gIG1taU1lc3NhZ2VEZWxldGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBQZW5kaW5nTWVzc2FnZVxuICAgICAgICAgKiBAZXhhbXBsZSBQZW5kaW5nTWVzc2FnZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG1zZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFJlamVjdCBhbiBNTUkgcmVxdWVzdFxuICAgKiBAZGVzY3JpcHRpb24gUmVqZWN0IGFuIE1NSSByZXF1ZXN0XG4gICAqXG4gICAqIFJlamVjdHMgYSBwZW5kaW5nIE1NSSByZXF1ZXN0LiBUaGUgcmVjb3JkIG9mIHRoZSBNTUkgcmVxdWVzdCBpcyBrZXB0IGluXG4gICAqIHRoZSBkYXRhYmFzZSB1bnRpbCBpdCBleHBpcmVzIG9yIGlzIGV4cGxpY2l0bHkgZGVsZXRlZC5cbiAgICpcbiAgICogUmV0dXJucyB0aGUgdXBkYXRlZCByZXF1ZXN0IGluZm9ybWF0aW9uLlxuICAgKi9cbiAgbW1pTWVzc2FnZVJlamVjdDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFBlbmRpbmdNZXNzYWdlXG4gICAgICAgICAqIEBleGFtcGxlIFBlbmRpbmdNZXNzYWdlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgbXNnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk/OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1taVJlamVjdFJlcXVlc3RcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGVuZGluZ01lc3NhZ2VJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEFwcHJvdmUgYW5kIHNpZ24gYW4gTU1JIHJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIEFwcHJvdmUgYW5kIHNpZ24gYW4gTU1JIHJlcXVlc3RcbiAgICpcbiAgICogU2lnbnMgYSBwZW5kaW5nIHJlcXVlc3QgdGhhdCB3YXMgZ2VuZXJhdGVkIHRocm91Z2ggdGhlIE1NSSBKU09OIFJQQyBlbmRwb2ludC5cbiAgICogVGhlIHNpZ25hdHVyZSBpcyBzdG9yZWQgd2l0aCB0aGUgcGVuZGluZyBtZXNzYWdlIGFuZCB0aGUgdXBkYXRlZCByZXF1ZXN0IGluZm8gaXMgcmV0dXJuZWQuXG4gICAqXG4gICAqIFRoZSBtZXNzYWdlIHNob3VsZCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIG9yZ2FuaXphdGlvbiB0aGlzIGlzIGNhbGxlZCBmcm9tLFxuICAgKiBhbmQgdGhlIHVzZXIgc2hvdWxkIGJlIHRoZSBvd25lciBvZiB0aGUgY29ycmVzcG9uZGluZyBtZXNzYWdlJ3Mga2V5LlxuICAgKi9cbiAgbW1pTWVzc2FnZVNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBQZW5kaW5nTWVzc2FnZVxuICAgICAgICAgKiBAZXhhbXBsZSBQZW5kaW5nTWVzc2FnZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG1zZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBlbmRpbmdNZXNzYWdlSW5mb1wiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBlbmRpbmdNZXNzYWdlU2lnblJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIE1pbnQgYW4gT0lEQyBJRCB0b2tlbiBmb3IgVHdpdHRlclxuICAgKiBAZGVzY3JpcHRpb24gTWludCBhbiBPSURDIElEIHRva2VuIGZvciBUd2l0dGVyXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gYWN0cyBpZGVudGljYWxseSB0byBUd2l0dGVyJ3MgW2BvYXV0aDIvdG9rZW5gXShodHRwczovL2RldmVsb3Blci50d2l0dGVyLmNvbS9lbi9kb2NzL2F1dGhlbnRpY2F0aW9uL2FwaS1yZWZlcmVuY2UvdG9rZW4pIGVuZHBvaW50LFxuICAgKiBidXQgZXh0ZW5kcyB0aGUgb3V0cHV0IHdpdGggYW4gYGlkX3Rva2VuYC5cbiAgICpcbiAgICogVGhpcyBgaWRfdG9rZW5gIGNhbiB0aGVuIGJlIHVzZWQgd2l0aCBhbnkgQ3ViZVNpZ25lciBlbmRwb2ludCB0aGF0IHJlcXVpcmVzIGFuIE9JREMgdG9rZW4uXG4gICAqXG4gICAqID4gWyFJTVBPUlRBTlRdXG4gICAqID4gVGhpcyBlbmRwb2ludCB3aWxsIGZhaWwgdW5sZXNzIHRoZSBvcmcgaXMgY29uZmlndXJlZCB0byBhbGxvdyB0aGUgaXNzdWVyIGBodHRwczovL3NoaW0ub2F1dGgyLmN1YmlzdC5kZXYvdHdpdHRlcmAgYW5kIGNsaWVudCBJRCBiZWluZyB1c2VkIGZvciBUd2l0dGVyLlxuICAgKi9cbiAgb2F1dGgyVHdpdHRlcjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIFtrZXk6IHN0cmluZ106IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlRva2VuUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTG9naW4gd2l0aCBPSURDXG4gICAqIEBkZXNjcmlwdGlvbiBMb2dpbiB3aXRoIE9JRENcbiAgICpcbiAgICogRXhjaGFuZ2UgYW4gT0lEQyBJRCB0b2tlbiAocGFzc2VkIHZpYSB0aGUgYEF1dGhvcml6YXRpb25gIGhlYWRlcikgZm9yIGEgc2lnbmVyIHNlc3Npb24uXG4gICAqXG4gICAqIE1GQSBpcyByZXF1aXJlZCB3aGVuOlxuICAgKiAtIGFuIE1GQSBwb2xpY3kgaXMgZXhwbGljaXRseSBhdHRhY2hlZCB0byB0aGUgdXNlciBsb2dnaW5nIGluXG4gICAqIChlLmcuLCBhbiBvcmcgb3duZXIgY2FuIGRvIHRoYXQgYXQgdXNlciBjcmVhdGlvbiB0aW1lIHRvIHJlcXVpcmUgY2VydGFpbiBraW5kIG9mIE1GQSlcbiAgICogLSB0aGUgdXNlciBoYXMgYXQgbGVhc3QgMSBNRkEgZmFjdG9yIGNvbmZpZ3VyZWRcbiAgICovXG4gIG9pZGNBdXRoOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9pZGNMb2dpblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJOZXdTZXNzaW9uUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEluaXRpYXRlIGxvZ2luIHZpYSBlbWFpbCB0b2tlblxuICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgbG9naW4gdmlhIGVtYWlsIHRva2VuXG4gICAqXG4gICAqIFRoaXMgZW5kcG9pbnQgZ2VuZXJhdGVzIGFuIE9JREMgdG9rZW4gd2l0aG91dCBhIHNpZ25hdHVyZSAob2YgdGhlIGZvcm0gYGhlYWRlci5wYXlsb2FkLmApLCBhbmQgc2VuZHMgdGhlIHNpZ25hdHVyZSB0byB0aGUgdXNlcidzIGVtYWlsLlxuICAgKiBDbGllbnQgYXBwbGljYXRpb25zIGNhbiByZWNvbnN0cnVjdCB0aGUgdG9rZW4gYnkgY29uY2F0ZW5hdGluZyB0aGUgYHBhcnRpYWxfdG9rZW5gIHdpdGggdGhlIHNpZ25hdHVyZSwgcHJvZHVjaW5nIGEgdmFsaWQgT0lEQyB0b2tlbiBvZiB0aGUgZm9ybSBgaGVhZGVyLnBheWxvYWQuc2lnbmF0dXJlYFxuICAgKiBUaGUgdG9rZW4gY2FuIHRoZW4gYmUgdXNlZCB0byBhdXRoZW50aWNhdGUgdGhlIHVzZXIuXG4gICAqXG4gICAqID4gWyFJTVBPUlRBTlRdXG4gICAqID4gRm9yIHRoaXMgZW5kcG9pbnQgdG8gc3VjY2VlZCwgdGhlIG9yZyBtdXN0IGJlIGNvbmZpZ3VyZWQgdG86XG4gICAqID4gMS4gQWxsb3cgdGhlIGlzc3VlciBgaHR0cHM6Ly9zaGltLm9hdXRoMi5jdWJpc3QuZGV2L2VtYWlsLW90cGAgYW5kIGNsaWVudCBJRCBiZWluZyB0aGUgT3JnIElEXG4gICAqID4gMi4gSGF2ZSBhbiBlbWFpbCBzZW5kZXIgY29uZmlndXJlZCBmb3IgT1RQc1xuICAgKi9cbiAgZW1haWxPdHBBdXRoOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVtYWlsT3RwUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtYWlsT3RwUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW5pdGlhdGUgbG9naW4gdmlhIFNpZ24taW4gV2l0aCBFdGhlcmV1bSAoU0lXRSkuXG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSBsb2dpbiB2aWEgU2lnbi1pbiBXaXRoIEV0aGVyZXVtIChTSVdFKS5cbiAgICpcbiAgICogVGhpcyBlbmRwb2ludCBnZW5lcmF0ZXMgYSBjaGFsbGVuZ2Ugd2hpY2ggY2FuIGJlIGFuc3dlcmVkICh2aWEgdGhlIGNvcnJlc3BvbmRpbmcgUEFUQ0ggZW5kcG9pbnQpXG4gICAqIHRvIG9idGFpbiBhbiBPSURDIHRva2VuLiBUaGUgT0lEQyB0b2tlbiBjYW4gdGhlbiBiZSBleGNoYW5nZWQgZm9yIGEgdXNlciBzZXNzaW9uIHZpYSB0aGUgc3RhbmRhcmRcbiAgICogT0lEQyBhdXRoIHJvdXRlLlxuICAgKlxuICAgKiA+IFshSU1QT1JUQU5UXVxuICAgKiA+IEZvciB0aGlzIGVuZHBvaW50IHRvIHN1Y2NlZWQsIHRoZSBvcmcgbXVzdCBiZSBjb25maWd1cmVkIHRvOlxuICAgKiA+IEFsbG93IHRoZSBpc3N1ZXIgYGh0dHBzOi8vc2hpbS5vYXV0aDIuY3ViaXN0LmRldi9zaXdlYCB3aXRoIHRoZSBPcmcgSUQgYXMgdGhlIGNsaWVudCBJRFxuICAgKi9cbiAgc2l3ZUluaXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2l3ZUluaXRSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU2l3ZUluaXRSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDb21wbGV0ZSBsb2dpbiB2aWEgU2lnbi1pbiBXaXRoIEV0aGVyZXVtIChTSVdFKVxuICAgKiBAZGVzY3JpcHRpb24gQ29tcGxldGUgbG9naW4gdmlhIFNpZ24taW4gV2l0aCBFdGhlcmV1bSAoU0lXRSlcbiAgICpcbiAgICogSWYgdGhlIGNoYWxsZW5nZSAoaXNzdWVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIFBPU1QgZW5kcG9pbnQpIGlzIGFuc3dlcmVkIGNvcnJlY3RseSwgdGhpcyBlbmRwb2ludFxuICAgKiBnZW5lcmF0ZXMgYW4gT0lEQyB0b2tlbiB0aGF0IGNhbiB0aGVuIGJlIGV4Y2hhbmdlZCBmb3IgYSB1c2VyIHNlc3Npb24gdmlhIHRoZSBzdGFuZGFyZCBPSURDIGF1dGggcm91dGUuXG4gICAqXG4gICAqID4gWyFJTVBPUlRBTlRdXG4gICAqID4gRm9yIHRoaXMgZW5kcG9pbnQgdG8gc3VjY2VlZCwgdGhlIG9yZyBtdXN0IGJlIGNvbmZpZ3VyZWQgdG86XG4gICAqID4gQWxsb3cgdGhlIGlzc3VlciBgaHR0cHM6Ly9zaGltLm9hdXRoMi5jdWJpc3QuZGV2L3Npd2VgIHdpdGggdGhlIE9yZyBJRCBhcyB0aGUgY2xpZW50IElEXG4gICAqL1xuICBzaXdlQ29tcGxldGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2l3ZUNvbXBsZXRlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlNpd2VDb21wbGV0ZVJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEFsbG93cyBhIHVzZXIgdG8gYXV0aGVudGljYXRlIHdpdGggdGhlIHRlbGVncmFtIEFQSSB1c2luZyB0aGUgdGdXZWJBcHBEYXRhIHZhbHVlXG4gICAqIEBkZXNjcmlwdGlvbiBBbGxvd3MgYSB1c2VyIHRvIGF1dGhlbnRpY2F0ZSB3aXRoIHRoZSB0ZWxlZ3JhbSBBUEkgdXNpbmcgdGhlIHRnV2ViQXBwRGF0YSB2YWx1ZVxuICAgKiBUaGUgdG9rZW4gaGFzIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAgICogLSBUaGUgYHN1YmAgZmllbGQgaXMgdGhlIHRlbGVncmFtIHVzZXIgSURcbiAgICogLSBUaGUgYGlzc2AgZmllbGQgZGVwZW5kcyBvbiB0aGUgY2hvc2VuIGVudmlyb25tZW50OlxuICAgKiAtIGBodHRwczovL3NoaW0ub2F1dGgyLmN1YmlzdC5kZXYvdGVsZWdyYW0vcHJvZHVjdGlvbmAgZm9yIHRoZSBwcm9kdWN0aW9uIGVudmlyb25tZW50XG4gICAqIC0gYGh0dHBzOi8vc2hpbS5vYXV0aDIuY3ViaXN0LmRldi90ZWxlZ3JhbS90ZXN0YCBmb3IgdGhlIHRlc3QgZW52aXJvbm1lbnRcbiAgICogLSBUaGUgYGF1ZGAgZmllbGQgaXMgdGhlIHByb3ZpZGVkIHRlbGVncmFtIGJvdCBJRFxuICAgKiAtIFRoZSBgZXhwYCBmaWVsZCBpcyBkZXJpdmVkIGZyb20gdGhlIGBhdXRoX2RhdGVgIGZpZWxkIGluIHRoZSB0ZWxlZ3JhbSBkYXRhXG4gICAqXG4gICAqIEZhaWxzIGlmIHRoZSB0ZWxlZ3JhbSBkYXRhIGlzIGludmFsaWQgb3IgdGhlIHNpZ25hdHVyZSBpcyBpbnZhbGlkXG4gICAqL1xuICB0ZWxlZ3JhbUF1dGg6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVGVsZWdyYW1BdXRoUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlRlbGVncmFtQXV0aFJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENyZWF0ZSBPcmdcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBPcmdcbiAgICpcbiAgICogQ3JlYXRlcyBhIG5ldyBvcmdhbml6YXRpb24uIFRoZSBuZXcgb3JnIGlzIGEgY2hpbGQgb2YgdGhlXG4gICAqIGN1cnJlbnQgb3JnIGFuZCBpbmhlcml0cyBpdHMga2V5LWV4cG9ydCBwb2xpY3kuIFRoZSBuZXcgb3JnXG4gICAqIGlzIGNyZWF0ZWQgd2l0aCBvbmUgb3duZXIsIHRoZSBjYWxsZXIgb2YgdGhpcyBBUEkuXG4gICAqL1xuICBjcmVhdGVPcmc6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3JlYXRlT3JnUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIk9yZ0luZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBQb2xpY2llc1xuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBQb2xpY2llc1xuICAgKlxuICAgKiBSZXR1cm5zIHRoZSBsaXN0IG9mIGFsbCBwb2xpY2llcyBpbiB0aGUgT3JnLlxuICAgKi9cbiAgbGlzdFBvbGljaWVzOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgICAqIGRhdGEgaW4gdGhlIHJlc3VsdCBzZXQuIFRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBtb3JlIGRhdGEgaXMgbGVmdCBpbiB0aGUgcmVzdWx0IHNldCxcbiAgICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc2l6ZVwiPzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgICAqIHRoZSBleGFjdCB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc3RhcnRcIj86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG9wdGlvbmFsIHR5cGUgb2YgcG9saWNpZXMgdG8gcmV0dXJuXG4gICAgICAgICAqIEBleGFtcGxlIEtleVxuICAgICAgICAgKi9cbiAgICAgICAgcG9saWN5X3R5cGU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBvbGljeVR5cGVcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZExpc3RQb2xpY2llc1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENyZWF0ZSBQb2xpY3lcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBQb2xpY3lcbiAgICpcbiAgICogQ3JlYXRlcyBhIG5ldyBuYW1lZCBwb2xpY3kgaW4gdGhlIG9yZ2FuaXphdGlvbi4gVGhlIHVzZXIgbWFraW5nIHRoZSByZXF1ZXN0IGlzIHRoZVxuICAgKiBvd25lciBvZiB0aGUgcG9saWN5LCBnaXZpbmcgdGhlbSBlZGl0IGFjY2VzcyB0byB0aGUgcG9saWN5IGFsb25nIHdpdGggdGhlIG9yZyBvd25lcnMuXG4gICAqL1xuICBjcmVhdGVQb2xpY3k6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3JlYXRlUG9saWN5UmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBvbGljeUluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRGVsZXRlIFBvbGljeVxuICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIFBvbGljeVxuICAgKlxuICAgKiBEZWxldGUgdGhlIG5hbWVkIHBvbGljeSB3aXRoIHRoZSBnaXZlbiBuYW1lIG9yIGlkLlxuICAgKi9cbiAgZGVsZXRlUG9saWN5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgTmFtZWRQb2xpY3lcbiAgICAgICAgICogQGV4YW1wbGUgTmFtZWRQb2xpY3kjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBwb2xpY3lfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFbXB0eVwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogVXBkYXRlIFBvbGljeVxuICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlIFBvbGljeVxuICAgKlxuICAgKiBVcGRhdGVzIHRoZSBwb2xpY3kgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBvciBpZC5cbiAgICovXG4gIHVwZGF0ZVBvbGljeToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE5hbWVkUG9saWN5XG4gICAgICAgICAqIEBleGFtcGxlIE5hbWVkUG9saWN5IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcG9saWN5X2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXBkYXRlUG9saWN5UmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBvbGljeUluZm9cIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCBQb2xpY3kgTG9nc1xuICAgKiBAZGVzY3JpcHRpb24gR2V0IFBvbGljeSBMb2dzXG4gICAqXG4gICAqIFJldHVybnMgdGhlIGxvZ3MgZm9yIHRoZSBnaXZlbiBwb2xpY3ksIHdpdGhpbiB0aGUgZ2l2ZW4gdGltZWZyYW1lLlxuICAgKi9cbiAgZ2V0UG9saWN5TG9nczoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBJZiB0aGUgYWN0dWFsIG51bWJlciBvZiByZXR1cm5lZCBpdGVtcyBtYXkgYmUgbGVzcyB0aGF0IHRoaXMsIGV2ZW4gaWYgdGhlcmUgZXhpc3QgbW9yZVxuICAgICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgICAqIGluc3BlY3QgdGhlIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnQgb2YgdGhlIHBhZ2UuICBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZzsgb3RoZXJ3aXNlLCBvbmx5IHNwZWNpZnkgYVxuICAgICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnN0YXJ0XCI/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE5hbWVkUG9saWN5XG4gICAgICAgICAqIEBleGFtcGxlIE5hbWVkUG9saWN5IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcG9saWN5X2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUG9saWN5TG9nc1JlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRQb2xpY3lMb2dzUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IFBvbGljeVxuICAgKiBAZGVzY3JpcHRpb24gR2V0IFBvbGljeVxuICAgKlxuICAgKiBSZXR1cm5zIHRoZSBzcGVjaWZpZWQgdmVyc2lvbiBvciBsYXRlc3Qgb2YgYSBuYW1lZCBwb2xpY3kgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBvciBpZC5cbiAgICovXG4gIGdldFBvbGljeToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE5hbWVkUG9saWN5XG4gICAgICAgICAqIEBleGFtcGxlIE5hbWVkUG9saWN5IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcG9saWN5X2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHBvbGljeSB2ZXJzaW9uLCBlaXRoZXIgJ2xhdGVzdCcgb3IgJ3Y8bnVtYmVyPicuXG4gICAgICAgICAqIEBleGFtcGxlIGxhdGVzdFxuICAgICAgICAgKi9cbiAgICAgICAgdmVyc2lvbjogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUG9saWN5SW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBJbnZva2UgUG9saWN5XG4gICAqIEBkZXNjcmlwdGlvbiBJbnZva2UgUG9saWN5XG4gICAqXG4gICAqIEludm9rZXMgdGhlIFtOYW1lZFBvbGljeV0gd2l0aCB0aGUgZ2l2ZW4gSUQgd2l0aCB0aGUgZ2l2ZW4gcmVxdWVzdCBpbmZvcm1hdGlvbi5cbiAgICogSXQgaXMgb25seSBzdXBwb3J0ZWQgZm9yIFdhc20gcG9saWNpZXMuXG4gICAqL1xuICBpbnZva2VQb2xpY3k6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBOYW1lZFBvbGljeVxuICAgICAgICAgKiBAZXhhbXBsZSBOYW1lZFBvbGljeSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHBvbGljeV9pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwb2xpY3kgdmVyc2lvbiwgZWl0aGVyICdsYXRlc3QnIG9yICd2PG51bWJlcj4nLlxuICAgICAgICAgKiBAZXhhbXBsZSBsYXRlc3RcbiAgICAgICAgICovXG4gICAgICAgIHZlcnNpb246IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJbnZva2VQb2xpY3lSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiSW52b2tlUG9saWN5UmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIFBvbGljeSBJbXBvcnQgS2V5XG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgUG9saWN5IEltcG9ydCBLZXlcbiAgICpcbiAgICogR2VuZXJhdGUgYW4gZXBoZW1lcmFsIGtleSB0aGF0IGEgY2xpZW50IGNhbiB1c2UgZm9yIGVuY3J5cHRpbmcgZGF0YSByZWxhdGVkIHRvIFdhc21cbiAgICogcG9saWNpZXMgKGUuZy4sIHBvbGljeSBzZWNyZXRzKS5cbiAgICovXG4gIGNyZWF0ZVBvbGljeUltcG9ydEtleToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkNyZWF0ZVBvbGljeUltcG9ydEtleVJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCB0aGUgb3JnLXdpZGUgcG9saWN5IHNlY3JldHMuXG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgdGhlIG9yZy13aWRlIHBvbGljeSBzZWNyZXRzLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgdGhpcyBvbmx5IHJldHVybnMgdGhlIGtleXMgZm9yIHRoZSBzZWNyZXRzLCBvbWl0aW5nIHRoZSB2YWx1ZXMuXG4gICAqIFRoZSB2YWx1ZXMgYXJlIHNlY3JldCBhbmQgYXJlIG5vdCBhY2Nlc3NpYmxlIG91dHNpZGUgV2FzbSBwb2xpY3kgZXhlY3V0aW9uLlxuICAgKi9cbiAgZ2V0UG9saWN5U2VjcmV0czoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBvbGljeVNlY3JldHNJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFVwZGF0ZSBvcmctbGV2ZWwgcG9saWN5IHNlY3JldHNcbiAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBvcmctbGV2ZWwgcG9saWN5IHNlY3JldHNcbiAgICpcbiAgICogVGhlIHByb3ZpZGVkIHNlY3JldHMgd2lsbCByZXBsYWNlIGFueSBleGlzdGluZyBvcmctbGV2ZWwgc2VjcmV0cy5cbiAgICogSXQgZmFpbHMgaWYgdGhlIHNlY3JldHMgd2VyZW4ndCBwcmV2aW91c2x5IGNyZWF0ZWQuXG4gICAqL1xuICB1cGRhdGVQb2xpY3lTZWNyZXRzOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVwZGF0ZVBvbGljeVNlY3JldHNSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUG9saWN5U2VjcmV0c0luZm9cIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENyZWF0ZSBvciBvdmVyd3JpdGUgYW4gb3JnLWxldmVsIHBvbGljeSBzZWNyZXRcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBvciBvdmVyd3JpdGUgYW4gb3JnLWxldmVsIHBvbGljeSBzZWNyZXRcbiAgICovXG4gIHNldFBvbGljeVNlY3JldDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgc2VjcmV0X25hbWU6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZXRQb2xpY3lTZWNyZXRSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUG9saWN5U2VjcmV0c0luZm9cIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIERlbGV0ZSBhbiBvcmctbGV2ZWwgcG9saWN5IHNlY3JldFxuICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIGFuIG9yZy1sZXZlbCBwb2xpY3kgc2VjcmV0XG4gICAqL1xuICBkZWxldGVQb2xpY3lTZWNyZXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIHNlY3JldF9uYW1lOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRW1wdHlcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQb2xpY3lTZWNyZXRzSW5mb1wiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogVXBsb2FkIFdhc20gUG9saWN5XG4gICAqIEBkZXNjcmlwdGlvbiBVcGxvYWQgV2FzbSBQb2xpY3lcbiAgICpcbiAgICogUmV0dXJucyBhIHNpZ25lZCBVUkwgZm9yIHVwbG9hZGluZyBhIHdhc20gcG9saWN5IHRvIEN1YmVTaWduZXIuIFRoZSBwb2xpY3kgd2lsbCBiZVxuICAgKiBkZWxldGVkIGlmIG5vdCBhdHRhY2hlZCB0byBhIFtOYW1lZFBvbGljeV0gc29vbiBhZnRlciB0aGUgdXBsb2FkIGhhcyBiZWVuIGNvbXBsZXRlZC5cbiAgICovXG4gIHVwbG9hZFdhc21Qb2xpY3k6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXBsb2FkV2FzbVBvbGljeVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJVcGxvYWRXYXNtUG9saWN5UmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBSb2xlc1xuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBSb2xlc1xuICAgKlxuICAgKiBSZXRyaWV2ZXMgYWxsIHJvbGVzIGluIGFuIG9yZ2FuaXphdGlvbiB0aGF0IHRoZSBjdXJyZW50IHVzZXIgaXMgYWxsb3dlZCB0byBhY2Nlc3MuXG4gICAqL1xuICBsaXN0Um9sZXM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEb24ndCBpbmNsdWRlIGtleXMgYW5kIHVzZXJzIGZvciBlYWNoIHJvbGUgKi9cbiAgICAgICAgc3VtbWFyaXplPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGFnaW5hdGVkTGlzdFJvbGVzUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIFJvbGVcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBSb2xlXG4gICAqXG4gICAqIENyZWF0ZXMgYSBuZXcgcm9sZSBpbiBhbiBvcmdhbml6YXRpb24uIFVubGVzcyB0aGUgbG9nZ2VkLWluIHVzZXJcbiAgICogaXMgdGhlIG93bmVyLCB0aGV5IGFyZSBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBuZXdseSBjcmVhdGVkIHJvbGUuXG4gICAqL1xuICBjcmVhdGVSb2xlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcmVxdWVzdCBib2R5IHRvIHNldCB0aGUgcm9sZSBuYW1lICovXG4gICAgcmVxdWVzdEJvZHk/OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNyZWF0ZVJvbGVSZXF1ZXN0XCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkNyZWF0ZVJvbGVSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBHZXQgUm9sZVxuICAgKiBAZGVzY3JpcHRpb24gR2V0IFJvbGVcbiAgICpcbiAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IGEgcm9sZSBpbiBhbiBvcmdhbml6YXRpb25cbiAgICovXG4gIGdldFJvbGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJSb2xlSW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBEZWxldGUgUm9sZVxuICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIFJvbGVcbiAgICpcbiAgICogRGVsZXRlcyBhIHJvbGUgaW4gYW4gb3JnYW5pemF0aW9uLlxuICAgKlxuICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIGNhbiBwZXJmb3JtIHRoaXMgYWN0aW9uLlxuICAgKiBBZGRpdGlvbmFsbHksIHRoZSByb2xlJ3MgZWRpdCBwb2xpY3kgKGlmIHNldCkgbXVzdCBwZXJtaXQgdGhlIHVwZGF0ZS5cbiAgICovXG4gIGRlbGV0ZVJvbGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRW1wdHlcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFVwZGF0ZSBSb2xlXG4gICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgUm9sZVxuICAgKlxuICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIGEgcm9sZSAodGhpcyByZXF1aXJlcyB0aGUgYG1hbmFnZTpyb2xlOnVwZGF0ZTplbmFibGVgIHNjb3BlKS5cbiAgICogVXBkYXRlcyB0aGUgcm9sZSdzIHBvbGljaWVzICh0aGlzIHJlcXVpcmVzIHRoZSBgbWFuYWdlOnJvbGU6dXBkYXRlOnBvbGljeWAgc2NvcGUpLlxuICAgKiBVcGRhdGVzIHRoZSByb2xlJ3MgZWRpdCBwb2xpY2llcyAodGhpcyByZXF1aXJlcyB0aGUgYG1hbmFnZTpyb2xlOnVwZGF0ZTplZGl0UG9saWN5YCBzY29wZSkuXG4gICAqXG4gICAqIFRoZSB1c2VyIG11c3QgYmUgaW4gdGhlIHJvbGUgb3IgYW4gb3duZXIgb2YgdGhlIG9yZ2FuaXphdGlvbi5cbiAgICogQWRkaXRpb25hbGx5LCB0aGUgcm9sZSdzIGVkaXQgcG9saWN5IChpZiBzZXQpIG11c3QgcGVybWl0IHRoZSB1cGRhdGUuXG4gICAqL1xuICB1cGRhdGVSb2xlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVwZGF0ZVJvbGVSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUm9sZUluZm9cIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEFkZCBLZXlzXG4gICAqIEBkZXNjcmlwdGlvbiBBZGQgS2V5c1xuICAgKlxuICAgKiBBZGRzIGEgbGlzdCBvZiBleGlzdGluZyBrZXlzIHRvIGFuIGV4aXN0aW5nIHJvbGUuXG4gICAqXG4gICAqIFRoZSBrZXkgb3duZXIgaXMgYWxsb3dlZCB0byBhZGQgdGhlaXIga2V5IHRvIGFueSByb2xlIHRoYXQgdGhleSBhcmUgaW4uXG4gICAqXG4gICAqIEluIFwib3JnIGN1c3RvZHlcIiBtb2RlbCBvbmx5LCBvcmcgb3duZXJzIGFyZSBhbGxvd2VkIHRvIGFkZCBhbnkga2V5IHRvIGFueSByb2xlLlxuICAgKlxuICAgKiBJbiBhbGwgY2FzZXM6IHRoZSByb2xlJ3MgZWRpdCBwb2xpY3ksIGFzIHdlbGwgYXMgdGhlIGVkaXQgcG9saWN5IG9mIGVhY2ggb2YgdGhlIGtleXMsIG11c3QgcGVybWl0IHRoZSB1cGRhdGUuXG4gICAqXG4gICAqIEVhY2ggcmVxdWVzdCB0byB0aGlzIGVuZHBvaW50IGNhbiBhZGQsIGF0IG1heGltdW0sIDMyIGtleXMuXG4gICAqL1xuICBhZGRLZXlzVG9Sb2xlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFkZEtleXNUb1JvbGVSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBBZGQgVXNlclxuICAgKiBAZGVzY3JpcHRpb24gQWRkIFVzZXJcbiAgICpcbiAgICogQWRkcyBhbiBleGlzdGluZyB1c2VyIHRvIGFuIGV4aXN0aW5nIHJvbGUuXG4gICAqXG4gICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgb3Igb3JnIG93bmVycyBjYW4gYWRkIHVzZXJzIHRvIGEgcm9sZS5cbiAgICogQWRkaXRpb25hbGx5LCB0aGUgcm9sZSdzIGVkaXQgcG9saWN5IChpZiBzZXQpIG11c3QgcGVybWl0IHRoZSB1cGRhdGUuXG4gICAqL1xuICBhZGRVc2VyVG9Sb2xlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIFVzZXJcbiAgICAgICAgICogQGV4YW1wbGUgVXNlciMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFbXB0eVwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBSb2xlIEtleXNcbiAgICogQGRlc2NyaXB0aW9uIExpc3QgUm9sZSBLZXlzXG4gICAqXG4gICAqIFJldHVybnMgYW4gYXJyYXkgb2YgYWxsIGtleXMgaW4gYSByb2xlLlxuICAgKi9cbiAgbGlzdFJvbGVLZXlzOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgICAqIGRhdGEgaW4gdGhlIHJlc3VsdCBzZXQuIFRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBtb3JlIGRhdGEgaXMgbGVmdCBpbiB0aGUgcmVzdWx0IHNldCxcbiAgICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc2l6ZVwiPzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgICAqIHRoZSBleGFjdCB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc3RhcnRcIj86IHN0cmluZyB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGFnaW5hdGVkTGlzdFJvbGVLZXlzUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IGEgS2V5IGluIFJvbGVcbiAgICogQGRlc2NyaXB0aW9uIEdldCBhIEtleSBpbiBSb2xlXG4gICAqXG4gICAqIFJldHVybnMgdGhlIGtleS1pbi1yb2xlIGluZm9ybWF0aW9uIGZvciBhIGdpdmVuIGtleSBhbmQgcm9sZS4gSWYgYGRldGFpbHNgIGlzIHNldCB0byBgdHJ1ZWAsXG4gICAqIHRoaXMgZW5kcG9pbnQgcmV0dXJucyBkZXRhaWxlZCBrZXkgaW5mb3JtYXRpb24uXG4gICAqL1xuICBnZXRSb2xlS2V5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciB0byBpbmNsdWRlIGRldGFpbGVkIGtleSBpbmZvcm1hdGlvblxuICAgICAgICAgKiBAZXhhbXBsZSB0cnVlXG4gICAgICAgICAqL1xuICAgICAgICBkZXRhaWxzPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIEtleVxuICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIktleUluUm9sZUluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmVtb3ZlIEtleVxuICAgKiBAZGVzY3JpcHRpb24gUmVtb3ZlIEtleVxuICAgKlxuICAgKiBSZW1vdmVzIGEgZ2l2ZW4ga2V5IGZyb20gYSByb2xlLlxuICAgKlxuICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIG9yIG9yZyBvd25lcnMgY2FuIHJlbW92ZSBrZXlzIGZyb20gYSByb2xlLlxuICAgKiBBZGRpdGlvbmFsbHksIGJvdGggdGhlIHJvbGUncyBhbmQgdGhlIGtleSdzIGVkaXQgcG9saWN5IG11c3QgcGVybWl0IHRoZSB1cGRhdGUuXG4gICAqL1xuICByZW1vdmVLZXlGcm9tUm9sZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBLZXlcbiAgICAgICAgICogQGV4YW1wbGUgS2V5IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRW1wdHlcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENyZWF0ZSBUb2tlblxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIFRva2VuXG4gICAqXG4gICAqIENyZWF0ZXMgYSBuZXcgYWNjZXNzIHRva2VuIGZvciBhIGdpdmVuIHJvbGUgKHRvIGJlIHVzZWQgYXMgXCJBUEkgS2V5XCIgZm9yIGFsbCBzaWduaW5nIGFjdGlvbnMpLlxuICAgKiBUaGUgYHJlc3RyaWN0ZWRfYWN0aW9uc2AgZmllbGQgb24gdGhlIFtSb2xlXSBkZXRlcm1pbmVzIHRoZSBtZW1iZXJzaGlwIHJvbGUgdGhhdCBpcyByZXF1aXJlZCB0b1xuICAgKiBjcmVhdGUgdG9rZW5zLlxuICAgKi9cbiAgY3JlYXRlUm9sZVRva2VuOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNyZWF0ZVRva2VuUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIk5ld1Nlc3Npb25SZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IEhpc3RvcmljYWwgVHJhbnNhY3Rpb25zXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IEhpc3RvcmljYWwgVHJhbnNhY3Rpb25zXG4gICAqXG4gICAqIFJldHVybnMgYSBzb3J0ZWQsIHBhZ2luYXRlZCBsaXN0IG9mIHRyYW5zYWN0aW9ucyBzaWduZWQgYnkgdGhlIGdpdmVuIHJvbGUsXG4gICAqIG9yZGVyZWQgZnJvbSBtb3N0IHJlY2VudCBmaXJzdC5cbiAgICovXG4gIGxpc3RIaXN0b3JpY2FsUm9sZVR4OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgICAqIGRhdGEgaW4gdGhlIHJlc3VsdCBzZXQuIFRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBtb3JlIGRhdGEgaXMgbGVmdCBpbiB0aGUgcmVzdWx0IHNldCxcbiAgICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc2l6ZVwiPzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgICAqIHRoZSBleGFjdCB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc3RhcnRcIj86IHN0cmluZyB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGFnaW5hdGVkTGlzdEhpc3RvcmljYWxUeFJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3QgUm9sZSBVc2Vycy5cbiAgICogQGRlc2NyaXB0aW9uIExpc3QgUm9sZSBVc2Vycy5cbiAgICpcbiAgICogUmV0dXJucyBhbiBhcnJheSBvZiBhbGwgdXNlcnMgd2hvIGhhdmUgYWNjZXNzIHRvIGEgcm9sZS5cbiAgICovXG4gIGxpc3RSb2xlVXNlcnM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRMaXN0Um9sZVVzZXJzUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmVtb3ZlIFVzZXJcbiAgICogQGRlc2NyaXB0aW9uIFJlbW92ZSBVc2VyXG4gICAqXG4gICAqIFJlbW92ZXMgYW4gZXhpc3RpbmcgdXNlciBmcm9tIGFuIGV4aXN0aW5nIHJvbGUuXG4gICAqXG4gICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgb3Igb3JnIG93bmVycyBjYW4gcmVtb3ZlIHVzZXJzIGZyb20gYSByb2xlLlxuICAgKiBBZGRpdGlvbmFsbHksIHRoZSByb2xlJ3MgZWRpdCBwb2xpY3kgKGlmIHNldCkgbXVzdCBwZXJtaXQgdGhlIHVwZGF0ZS5cbiAgICovXG4gIHJlbW92ZVVzZXJGcm9tUm9sZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBVc2VyXG4gICAgICAgICAqIEBleGFtcGxlIFVzZXIjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRW1wdHlcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3Qgc2Vzc2lvbnNcbiAgICogQGRlc2NyaXB0aW9uIExpc3Qgc2Vzc2lvbnNcbiAgICpcbiAgICogSWYgbm8gcXVlcnkgcGFyYW1ldGVycyBhcmUgcHJvdmlkZWQsIGFsbCBhY3RpdmUgc2Vzc2lvbnMgZm9yIHRoZSBjdXJyZW50IHVzZXIgYXJlIHJldHVybmVkLlxuICAgKlxuICAgKiBJZiBhIGByb2xlYCBxdWVyeSBwYXJhbWV0ZXIgaXMgcHJvdmlkZWQsIGFsbCBhY3RpdmUgc2Vzc2lvbnMgZm9yIHRoZSBzZWxlY3RlZCByb2xlIGFyZSByZXR1cm5lZFxuICAgKiAoYXNzZXJ0aW5nIGZpcnN0IHRoYXQgdGhlIGN1cnJlbnQgdXNlciBoYXMgcGVybWlzc2lvbnMgdG8gcmVhZCBzZXNzaW9ucyBmb3IgdGhhdCByb2xlKS5cbiAgICovXG4gIGxpc3RTZXNzaW9uczoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBJZiB0aGUgYWN0dWFsIG51bWJlciBvZiByZXR1cm5lZCBpdGVtcyBtYXkgYmUgbGVzcyB0aGF0IHRoaXMsIGV2ZW4gaWYgdGhlcmUgZXhpc3QgbW9yZVxuICAgICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgICAqIGluc3BlY3QgdGhlIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnQgb2YgdGhlIHBhZ2UuICBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZzsgb3RoZXJ3aXNlLCBvbmx5IHNwZWNpZnkgYVxuICAgICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnN0YXJ0XCI/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHByb3ZpZGVkLCB0aGUgbmFtZSBvciBJRCBvZiBhIHJvbGUgdG8gb3BlcmF0ZSBvbi5cbiAgICAgICAgICogQ2Fubm90IGJlIHNwZWNpZmllZCB0b2dldGhlciB3aXRoIGB1c2VyYC5cbiAgICAgICAgICogQGV4YW1wbGUgbXktcm9sZVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgcHJvdmlkZWQsIHRoZSBJRCBvZiBhIHVzZXIgdG8gb3BlcmF0ZSBvbi5cbiAgICAgICAgICogQ2Fubm90IGJlIHNwZWNpZmllZCB0b2dldGhlciB3aXRoIGByb2xlYC5cbiAgICAgICAgICogQGV4YW1wbGUgVXNlciMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHVzZXI/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZFNlc3Npb25zUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIG5ldyB1c2VyIHNlc3Npb24gKG1hbmFnZW1lbnQgYW5kL29yIHNpZ25pbmcpXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgbmV3IHVzZXIgc2Vzc2lvbiAobWFuYWdlbWVudCBhbmQvb3Igc2lnbmluZylcbiAgICpcbiAgICogQ3JlYXRlcyBhIG5ldyB1c2VyIHNlc3Npb24sIHNpbGVudGx5IHRydW5jYXRpbmcgcmVxdWVzdGVkIHNlc3Npb24gYW5kIGF1dGggbGlmZXRpbWVzIHRvIGJlIGF0XG4gICAqIG1vc3QgcmVxdWVzdG9yJ3Mgc2Vzc2lvbiBhbmQgYXV0aCBsaWZldGltZSwgcmVzcGVjdGl2ZWx5LiBUbyBleHRlbmQgdGhlIHJlcXVlc3RlZCBsaWZldGltZXMgcGFzdFxuICAgKiB0aGUgcmVxdWVzdG9yJ3MsIHNldCB0aGUgYGV4dGVuZF9saWZldGltZXNgIGZsYWcgaW4gdGhlIHJlcXVlc3QgYm9keSAoaW4gd2hpY2ggY2FzZSBNRkEgd2lsbFxuICAgKiBiZSByZXF1aXJlZCkuXG4gICAqL1xuICBjcmVhdGVTZXNzaW9uOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNyZWF0ZVNlc3Npb25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTmV3U2Vzc2lvblJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFJldm9rZSBBTEwgZXhpc3RpbmcgdXNlciBvciByb2xlIHNlc3Npb24ocylcbiAgICogQGRlc2NyaXB0aW9uIFJldm9rZSBBTEwgZXhpc3RpbmcgdXNlciBvciByb2xlIHNlc3Npb24ocylcbiAgICpcbiAgICogSW1tZWRpYXRlbHkgcmV2b2tlcyBleGlzdGluZyBzZXNzaW9ucywgcHJldmVudGluZyB0aGVtIGZyb20gYmVpbmcgdXNlZCBvciByZWZyZXNoZWQuXG4gICAqXG4gICAqIElmIG5vIHF1ZXJ5IHBhcmFtcyBhcmUgcHJvdmlkZWQsICoqQUxMKiogc2Vzc2lvbnMgZm9yIHRoZSAqKkNVUlJFTlQgVVNFUioqIGFyZSByZXZva2VkXG4gICAqICh0byByZXZva2UganVzdCB0aGUgY3VycmVudCB1c2VyIHNlc3Npb24sIHVzZSBgREVMRVRFIC92MC9vcmcvPG9yZ19pZD4vc2Vzc2lvbi9zZWxmYClcbiAgICpcbiAgICogSWYgYSBgcm9sZWAgcXVlcnkgcGFyYW1ldGVyIGlzIHByb3ZpZGVkLCAqKkFMTCoqIHNlc3Npb24gZm9yICoqVEhBVCBST0xFKiogYXJlIHJldm9rZWRcbiAgICogKGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIHBlcm1pc3Npb25zIHRvIHJldm9rZSBzZXNzaW9ucyBmb3IgdGhlIHJvbGUpLlxuICAgKi9cbiAgcmV2b2tlU2Vzc2lvbnM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBwcm92aWRlZCwgdGhlIG5hbWUgb3IgSUQgb2YgYSByb2xlIHRvIG9wZXJhdGUgb24uXG4gICAgICAgICAqIENhbm5vdCBiZSBzcGVjaWZpZWQgdG9nZXRoZXIgd2l0aCBgdXNlcmAuXG4gICAgICAgICAqIEBleGFtcGxlIG15LXJvbGVcbiAgICAgICAgICovXG4gICAgICAgIHJvbGU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHByb3ZpZGVkLCB0aGUgSUQgb2YgYSB1c2VyIHRvIG9wZXJhdGUgb24uXG4gICAgICAgICAqIENhbm5vdCBiZSBzcGVjaWZpZWQgdG9nZXRoZXIgd2l0aCBgcm9sZWAuXG4gICAgICAgICAqIEBleGFtcGxlIFVzZXIjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICB1c2VyPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJTZXNzaW9uc1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFJldm9rZSBjdXJyZW50IHNlc3Npb25cbiAgICogQGRlc2NyaXB0aW9uIFJldm9rZSBjdXJyZW50IHNlc3Npb25cbiAgICpcbiAgICogSW1tZWRpYXRlbHkgcmV2b2tlcyB0aGUgY3VycmVudCBzZXNzaW9uLCBwcmV2ZW50aW5nIGl0IGZyb20gYmVpbmcgdXNlZCBvciByZWZyZXNoZWRcbiAgICovXG4gIHJldm9rZUN1cnJlbnRTZXNzaW9uOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCBzZXNzaW9uIGluZm9ybWF0aW9uXG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgc2Vzc2lvbiBpbmZvcm1hdGlvblxuICAgKi9cbiAgZ2V0U2Vzc2lvbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIHNlc3Npb24gdG8gZ2V0IG9yICdzZWxmJyBmb3IgY3VycmVudCBzZXNzaW9uXG4gICAgICAgICAqIEBleGFtcGxlIDFjMGQ4NTNkLWMxNWYtNDJkYy1hODJjLTk4NzRlNTg5YmM3NVxuICAgICAgICAgKi9cbiAgICAgICAgc2Vzc2lvbl9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU2Vzc2lvbkluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmV2b2tlIGEgc2Vzc2lvblxuICAgKiBAZGVzY3JpcHRpb24gUmV2b2tlIGEgc2Vzc2lvblxuICAgKlxuICAgKiBJbW1lZGlhdGVseSByZXZva2VzIGFuIGV4aXN0aW5nIHNlc3Npb24sIHByZXZlbnRpbmcgaXQgZnJvbSBiZWluZyB1c2VkIG9yIHJlZnJlc2hlZFxuICAgKi9cbiAgcmV2b2tlU2Vzc2lvbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIHNlc3Npb24gdG8gcmV2b2tlXG4gICAgICAgICAqIEBleGFtcGxlIDc3YWFkMjEwMGMzNjFmNDk3NjM1ZGQwMDVjNGQxNTc4MWUyZTVkZjRiOWY0NWQ4ZTc0ZjM3NDI1Y2JjMzBiOWVcbiAgICAgICAgICovXG4gICAgICAgIHNlc3Npb25faWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlNlc3Npb25JbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gU29sYW5hIE1lc3NhZ2VcbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gU29sYW5hIE1lc3NhZ2VcbiAgICpcbiAgICogU2lnbnMgYSBTb2xhbmEgbWVzc2FnZSB3aXRoIGEgZ2l2ZW4ga2V5LlxuICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICovXG4gIHNvbGFuYVNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGJhc2U1OC1lbmNvZGVkIHB1YmxpYyBrZXlcbiAgICAgICAgICogQGV4YW1wbGUgODZaUlBzekJwNUVvUGo3d1IzYkhuN3duQVo1aVlmcGFzUmM3REtGUFRVYVpcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNvbGFuYVNpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU2lnblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIGEgc2VyaWFsaXplZCBTVUkgdHJhbnNhY3Rpb24uXG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIGEgc2VyaWFsaXplZCBTVUkgdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgKi9cbiAgc3VpU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCBTVUkga2V5IGFkZHJlc3NcbiAgICAgICAgICogQGV4YW1wbGUgMHhkZDY4ZDM1YTc3OGRiMWUzMTIzYzk1MGU1ZGI1MzYxMzMzZjU3NzMzYTc3NDg2YTcwNGRkOGM5OTRkOTY3NjFkXG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTdWlTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlNpZ25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogU2lnbiBhIHRlbmRlcm1pbnQgbWVzc2FnZS5cbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gYSB0ZW5kZXJtaW50IG1lc3NhZ2UuXG4gICAqXG4gICAqIFNpZ25zIHRoZSBnaXZlbiBiYXNlLTY0IGVuY29kZWQgdm90ZSBvciBwcm9wb3NhbCB3aXRoIHRoZSBnaXZlbiB0ZW5kZXJtaW50IGtleS5cbiAgICovXG4gIHRlbmRlcm1pbnRTaWduOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIHZhbGlkYXRvciBwdWJsaWMga2V5IHdpdGggMHggcHJlZml4XG4gICAgICAgICAqIEBleGFtcGxlIDB4N2Q4ZDM0NGU2ZTUzMTUxNjkyZmE3OGEwOTg2MzA3OTk5NDZhZDRkNmEwMjdhZTZiY2Q3YTc4ZGM3ODI4MTY1MFxuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVGVuZGVybWludFNpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU2lnblJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCBUb2tlbi1BY2Nlc3NpYmxlIEtleXNcbiAgICogQGRlc2NyaXB0aW9uIEdldCBUb2tlbi1BY2Nlc3NpYmxlIEtleXNcbiAgICpcbiAgICogUmV0cmlldmVzIHRoZSBrZXlzIHRoYXQgYSB1c2VyIG9yIHJvbGUgc2Vzc2lvbiBjYW4gYWNjZXNzLlxuICAgKi9cbiAgbGlzdFRva2VuS2V5czoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIktleUluZm9zXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFVzZXIgSW5mb1xuICAgKiBAZGVzY3JpcHRpb24gVXNlciBJbmZvXG4gICAqXG4gICAqIFJldHJpZXZlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCB1c2VyLlxuICAgKi9cbiAgYWJvdXRNZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlVzZXJJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEluaXRpYXRlIFJlc2V0IFZlcmlmaWVkIEVtYWlsIEZsb3dcbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIFJlc2V0IFZlcmlmaWVkIEVtYWlsIEZsb3dcbiAgICovXG4gIHVzZXJSZXNldEVtYWlsSW5pdDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFbWFpbFJlc2V0UmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtYWlsT3RwUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRmluYWxpemUgYSBSZXNldCBWZXJpZmllZCBFbWFpbCBGbG93XG4gICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSBhIFJlc2V0IFZlcmlmaWVkIEVtYWlsIEZsb3dcbiAgICovXG4gIHVzZXJSZXNldEVtYWlsQ29tcGxldGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRW1haWxPdHBBbnN3ZXJcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBvdXRzdGFuZGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0c1xuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBvdXRzdGFuZGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0c1xuICAgKi9cbiAgdXNlckV4cG9ydExpc3Q6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBwcm92aWRlZCwgdGhlIHVzZXItaWQgd2hvc2UgdXNlci1leHBvcnQgcmVxdWVzdHMgdG8gbGlzdC4gRGVmYXVsdHMgdG8gdGhlXG4gICAgICAgICAqIGN1cnJlbnQgdXNlci4gIE9ubHkgdGhlIG9yZyBvd25lciBtYXkgbGlzdCByZXF1ZXN0cyBmb3IgYW5vdGhlciB1c2VyLlxuICAgICAgICAgKiBAZXhhbXBsZSBVc2VyIzgwNmM5NTQ0LWYxZmEtNGJhZC04ZDRkLTEwOTdhMTg0NDcyNlxuICAgICAgICAgKi9cbiAgICAgICAgdXNlcl9pZD86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgcHJvdmlkZWQsIHRoZSBrZXktaWQgZm9yIHdoaWNoIHRvIGxpc3QgYW4gZXhpc3RpbmcgdXNlci1leHBvcnQgcmVxdWVzdC5cbiAgICAgICAgICogQGV4YW1wbGUgS2V5IzB4M2M0ZDkwQ2M1QWYxNjQ0QzNBM0IwMTNCYWE1NDg4OTk3MzgxRDdDOFxuICAgICAgICAgKi9cbiAgICAgICAga2V5X2lkPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRVc2VyRXhwb3J0TGlzdFJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEluaXRpYXRlIGEgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgYSB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAqXG4gICAqIFRoaXMgc3RhcnRzIGEgZGVsYXkgKHdob3NlIGxlbmd0aCBpcyBkZXRlcm1pbmVkIGJ5IE9yZy13aWRlIHNldHRpbmdzKVxuICAgKiBiZWZvcmUgZXhwb3J0IGNhbiBiZSBjb21wbGV0ZWQsIGFuZCByZXR1cm5zIGEgdGlja2V0IHRoYXQgY2FuIGJlIHVzZWRcbiAgICogdG8gY29tcGxldGUgdGhlIGV4cG9ydCBvbmNlIHRoZSB0aW1lciBoYXMgZXhwaXJlZC5cbiAgICpcbiAgICogT25seSBvbmUgdXNlci1leHBvcnQgcmVxdWVzdCBjYW4gYmUgYWN0aXZlIGZvciBhIGdpdmVuIGtleS4gSWYgdGhlcmVcbiAgICogaXMgYWxyZWFkeSBhbiBhY3RpdmUgZXhwb3J0LCB0aGlzIGVuZHBvaW50IHdpbGwgcmV0dXJuIGFuIGVycm9yLiBUb1xuICAgKiBjcmVhdGUgYSBuZXcgcmVxdWVzdCwgZmlyc3QgZGVsZXRlIHRoZSBleGlzdGluZyBvbmUuXG4gICAqL1xuICB1c2VyRXhwb3J0SW5pdDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VyRXhwb3J0SW5pdFJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJVc2VyRXhwb3J0SW5pdFJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBEZWxldGUgYW4gZXhpc3RpbmcgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIGFuIGV4aXN0aW5nIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICovXG4gIHVzZXJFeHBvcnREZWxldGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeToge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBrZXktaWQgd2hvc2UgZXhwb3J0IHJlcXVlc3Qgc2hvdWxkIGJlIGRlbGV0ZWRcbiAgICAgICAgICogQGV4YW1wbGUgS2V5IzB4M2M0ZDkwQ2M1QWYxNjQ0QzNBM0IwMTNCYWE1NDg4OTk3MzgxRDdDOFxuICAgICAgICAgKi9cbiAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHVzZXItaWQgd2hvIG93bnMgdGhpcyByZXF1ZXN0LiBJZiBvbWl0dGVkLCBkZWZhdWx0cyB0byB0aGUgY3VycmVudCB1c2VyLlxuICAgICAgICAgKiBPbmx5IHRoZSBvcmcgb3duZXIgbWF5IGRlbGV0ZSB1c2VyLWV4cG9ydCByZXF1ZXN0cyBmb3IgYW5vdGhlciB1c2VyLlxuICAgICAgICAgKiBAZXhhbXBsZSBVc2VyIzgwNmM5NTQ0LWYxZmEtNGJhZC04ZDRkLTEwOTdhMTg0NDcyNlxuICAgICAgICAgKi9cbiAgICAgICAgdXNlcl9pZD86IHN0cmluZyB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENvbXBsZXRlIGEgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgKiBAZGVzY3JpcHRpb24gQ29tcGxldGUgYSB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAqXG4gICAqIFRoaXMgZW5kcG9pbnQgY2FuIGJlIGNhbGxlZCBvbmx5IGFmdGVyIGluaXRpYXRpbmcgYSB1c2VyLWV4cG9ydCByZXF1ZXN0IHZpYVxuICAgKiB0aGUgYHVzZXJfZXhwb3J0X2luaXRgIEFQSSwgYW5kIG9ubHkgd2l0aGluIHRoZSBzdWJzZXF1ZW50IGV4cG9ydCB3aW5kb3dcbiAgICogKGkuZS4sIGFmdGVyIHRoZSBleHBvcnQgZGVsYXkgaGFzIHBhc3NlZCBhbmQgYmVmb3JlIHRoZSByZXF1ZXN0IGhhcyBleHBpcmVkKS5cbiAgICpcbiAgICogVG8gY2hlY2sgb24gdGhlIHN0YXR1cyBvZiBhbiBleHBvcnQgcmVxdWVzdCwgc2VlIHRoZSBgdXNlcl9leHBvcnRfbGlzdGAgQVBJLlxuICAgKi9cbiAgdXNlckV4cG9ydENvbXBsZXRlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJFeHBvcnRDb21wbGV0ZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJVc2VyRXhwb3J0Q29tcGxldGVSZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW5pdGlhdGUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXkuXG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleS5cbiAgICpcbiAgICogSWYgYSBkaXNjb3ZlcmFibGUga2V5IGlzIHJlcXVlc3RlZCwgdXNlciB2ZXJpZmljYXRpb24gKFBJTikgaXMgcmVxdWlyZWQuXG4gICAqXG4gICAqIEdlbmVyYXRlcyBhIGNoYWxsZW5nZSB0aGF0IG11c3QgYmUgYW5zd2VyZWQgdG8gcHJvdmUgb3duZXJzaGlwIG9mIGEga2V5LlxuICAgKi9cbiAgdXNlclJlZ2lzdGVyRmlkb0luaXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRmlkb0NyZWF0ZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJGaWRvQ3JlYXRlQ2hhbGxlbmdlUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEZpbmFsaXplIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgKlxuICAgKiBBY2NlcHRzIHRoZSByZXNwb25zZSB0byB0aGUgY2hhbGxlbmdlIGdlbmVyYXRlZCBieSB0aGUgUE9TVCB0byB0aGlzIGVuZHBvaW50LlxuICAgKi9cbiAgdXNlclJlZ2lzdGVyRmlkb0NvbXBsZXRlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkZpZG9DcmVhdGVDaGFsbGVuZ2VBbnN3ZXJcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRGVsZXRlIEZJRE8ga2V5XG4gICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgRklETyBrZXlcbiAgICpcbiAgICogRGVsZXRlcyBhIEZJRE8ga2V5IGZyb20gdGhlIHVzZXIncyBhY2NvdW50IChpZiB0aGUga2V5IGlzIG5vdCB0aGUgc29sZSBNRkEgZmFjdG9yKS4gTUZBIGlzIGFsd2F5cyByZXF1aXJlZC5cbiAgICovXG4gIHVzZXJEZWxldGVGaWRvOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgRmlkb0tleVxuICAgICAgICAgKiBAZXhhbXBsZSBGaWRvS2V5IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgZmlkb19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVtcHR5XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBJbml0aWFsaXplIFRPVFAgUmVzZXRcbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYWxpemUgVE9UUCBSZXNldFxuICAgKlxuICAgKiBDcmVhdGVzIGEgbmV3IFRPVFAgY2hhbGxlbmdlIHRoYXQgbXVzdCBiZSBhbnN3ZXJlZCB0byBwcm92ZSB0aGF0IHRoZSBuZXcgVE9UUFxuICAgKiB3YXMgc3VjY2Vzc2Z1bGx5IGltcG9ydGVkIGludG8gYW4gYXV0aGVudGljYXRvciBhcHAuXG4gICAqXG4gICAqIFRoaXMgb3BlcmF0aW9uIGlzIGFsbG93ZWQgaWYgRUlUSEVSXG4gICAqIC0gdGhlIHVzZXIgYWNjb3VudCBpcyBub3QgeWV0IGluaXRpYWxpemVkIGFuZCBubyBUT1RQIGlzIGFscmVhZHkgc2V0LCBPUlxuICAgKiAtIHRoZSB1c2VyIGhhcyBub3QgY29uZmlndXJlZCBhbnkgYXV0aCBmYWN0b3JzO1xuICAgKiBvdGhlcndpc2UsIE1GQSBpcyByZXF1aXJlZC5cbiAgICovXG4gIHVzZXJSZXNldFRvdHBJbml0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5Pzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb3RwUmVzZXRSZXF1ZXN0XCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlRvdHBJbmZvXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBEZWxldGUgVE9UUFxuICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIFRPVFBcbiAgICpcbiAgICogRGVsZXRlcyBUT1RQIGZyb20gdGhlIHVzZXIncyBhY2NvdW50IChpZiBUT1RQIGlzIG5vdCB0aGUgc29sZSBNRkEgZmFjdG9yKS4gTUZBIGlzIGFsd2F5cyByZXF1aXJlZC5cbiAgICovXG4gIHVzZXJEZWxldGVUb3RwOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVtcHR5XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBGaW5hbGl6ZSByZXNldHRpbmcgVE9UUFxuICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgcmVzZXR0aW5nIFRPVFBcbiAgICpcbiAgICogQ2hlY2tzIGlmIHRoZSByZXNwb25zZSBjb250YWlucyB0aGUgY29ycmVjdCBUT1RQIGNvZGUgY29ycmVzcG9uZGluZyB0byB0aGVcbiAgICogY2hhbGxlbmdlIGdlbmVyYXRlZCBieSB0aGUgUE9TVCBtZXRob2Qgb2YgdGhpcyBlbmRwb2ludC5cbiAgICovXG4gIHVzZXJSZXNldFRvdHBDb21wbGV0ZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb3RwQ2hhbGxlbmdlQW5zd2VyXCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFZlcmlmeSBUT1RQXG4gICAqIEBkZXNjcmlwdGlvbiBWZXJpZnkgVE9UUFxuICAgKlxuICAgKiBDaGVja3MgaWYgYSBnaXZlbiBjb2RlIG1hdGNoZXMgdGhlIGN1cnJlbnQgVE9UUCBjb2RlIGZvciB0aGUgY3VycmVudCB1c2VyLlxuICAgKiBFcnJvcnMgd2l0aCA0MDMgaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgbm90IHNldCB1cCBUT1RQIG9yIHRoZSBjb2RlIGZhaWxzIHZlcmlmaWNhdGlvbi5cbiAgICovXG4gIHVzZXJWZXJpZnlUb3RwOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRvdHBBcHByb3ZlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IHVzZXJzIGluIG9yZ2FuaXphdGlvblxuICAgKiBAZGVzY3JpcHRpb24gTGlzdCB1c2VycyBpbiBvcmdhbml6YXRpb25cbiAgICpcbiAgICogSWYgYSBxdWVyeSBpcyBkZWZpbmVkLCB0aGUgcmVzdWx0IHdpbGwgY29udGFpbiBvbmx5IHRoZSB1c2VycyB3aG9zZSBuYW1lIG9yXG4gICAqIGVtYWlsIGNvbnRhaW4gdGhlIHF1ZXJ5IHN0cmluZy4gTk9URSB0aGF0IGlmIHBhZ2luYXRpb24gaXMgdXNlZCBhbmQgYSBwYWdlXG4gICAqIGxpbWl0IGlzIHNldCwgdGhlIHJldHVybmVkIHJlc3VsdCBzZXQgbWF5IGNvbnRhaW4gRkVXRVIgZWxlbWVudHMgdGhhbiB0aGVcbiAgICogcmVxdWVzdGVkIHBhZ2UgbGltaXQuXG4gICAqL1xuICBsaXN0VXNlcnNJbk9yZzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBJZiB0aGUgYWN0dWFsIG51bWJlciBvZiByZXR1cm5lZCBpdGVtcyBtYXkgYmUgbGVzcyB0aGF0IHRoaXMsIGV2ZW4gaWYgdGhlcmUgZXhpc3QgbW9yZVxuICAgICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgICAqIGluc3BlY3QgdGhlIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnQgb2YgdGhlIHBhZ2UuICBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZzsgb3RoZXJ3aXNlLCBvbmx5IHNwZWNpZnkgYVxuICAgICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnN0YXJ0XCI/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEEgcXVlcnkgc3RyaW5nLiBJZiBkZWZpbmVkLCBhbGwgcmV0dXJuZWQgdXNlcnMgd2lsbCBjb250YWluIHRoaXMgc3RyaW5nIGluIHRoZWlyIG5hbWUgb3IgZW1haWwuICovXG4gICAgICAgIHE/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZEdldFVzZXJzSW5PcmdSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBBZGQgYSB0aGlyZC1wYXJ0eSB1c2VyIHRvIHRoZSBvcmdcbiAgICogQGRlc2NyaXB0aW9uIEFkZCBhIHRoaXJkLXBhcnR5IHVzZXIgdG8gdGhlIG9yZ1xuICAgKi9cbiAgY3JlYXRlT2lkY1VzZXI6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWRkVGhpcmRQYXJ0eVVzZXJSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQWRkVGhpcmRQYXJ0eVVzZXJSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBHZXQgdXNlciBieSBlbWFpbC5cbiAgICogQGRlc2NyaXB0aW9uIEdldCB1c2VyIGJ5IGVtYWlsLlxuICAgKlxuICAgKiBUaGUgc2VhcmNoIGluY2x1ZGVzIGFsbCB1c2VycyBhbmQgdGhlaXIgdGhpcmQtcGFydHkgaWRlbnRpdGllcy5cbiAgICovXG4gIGdldFVzZXJJbk9yZ0J5RW1haWw6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGVtYWlsIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXNlci4gKi9cbiAgICAgICAgZW1haWw6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkdldFVzZXJCeUVtYWlsUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmVtb3ZlIGEgdGhpcmQtcGFydHkgdXNlciBmcm9tIHRoZSBvcmdcbiAgICogQGRlc2NyaXB0aW9uIFJlbW92ZSBhIHRoaXJkLXBhcnR5IHVzZXIgZnJvbSB0aGUgb3JnXG4gICAqL1xuICBkZWxldGVPaWRjVXNlcjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPaWRjSWRlbnRpdHlcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IGEgdXNlciBieSB0aGVpciBPSURDIGlkZW50aXR5XG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgYSB1c2VyIGJ5IHRoZWlyIE9JREMgaWRlbnRpdHlcbiAgICpcbiAgICogUmV0cmlldmVzIGEgdXNlciBpbiB0aGUgb3JnYW5pemF0aW9uIGJ5IHRoZWlyIE9JREMgaXNzdWVyIGFuZCBzdWJqZWN0LlxuICAgKi9cbiAgZ2V0VXNlckluT3JnQnlPaWRjOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBPSURDIGlzc3Vlci4gKi9cbiAgICAgICAgaXNzOiBzdHJpbmc7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIE9JREMgc3ViamVjdC4gKi9cbiAgICAgICAgc3ViOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJHZXRVc2VyQnlPaWRjUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW5pdGlhbGl6ZSBNRkEgcmVzZXQgZm9yIHVzZXJcbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYWxpemUgTUZBIHJlc2V0IGZvciB1c2VyXG4gICAqL1xuICByZXNldE1lbWJlck1mYToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFSZXNldFJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ29tcGxldGUgTUZBIHJlc2V0IGZvciB1c2VyXG4gICAqIEBkZXNjcmlwdGlvbiBDb21wbGV0ZSBNRkEgcmVzZXQgZm9yIHVzZXJcbiAgICovXG4gIGNvbXBsZXRlUmVzZXRNZW1iZXJNZmE6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ29tcGxldGVNZmFSZXNldFJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IHVzZXIgYnkgaWRcbiAgICogQGRlc2NyaXB0aW9uIEdldCB1c2VyIGJ5IGlkXG4gICAqL1xuICBnZXRVc2VySW5Pcmc6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgVXNlclxuICAgICAgICAgKiBAZXhhbXBsZSBVc2VyIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVXNlckluT3JnSW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZW1vdmUgYSB1c2VyIGZyb20gdGhlIG9yZ1xuICAgKiBAZGVzY3JpcHRpb24gUmVtb3ZlIGEgdXNlciBmcm9tIHRoZSBvcmdcbiAgICovXG4gIGRlbGV0ZVVzZXI6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgVXNlclxuICAgICAgICAgKiBAZXhhbXBsZSBVc2VyIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFVwZGF0ZSBhIHVzZXIncyBtZW1iZXJzaGlwIGluIHRoZSBvcmdcbiAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBhIHVzZXIncyBtZW1iZXJzaGlwIGluIHRoZSBvcmdcbiAgICpcbiAgICogRW5hYmxlL2Rpc2FibGUgYW5vdGhlciB1c2VyIGluIHRoZSBvcmcsIG9yIGNoYW5nZSB0aGVpciBtZW1iZXJzaGlwIHJvbGUuXG4gICAqL1xuICB1cGRhdGVVc2VyTWVtYmVyc2hpcDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBVc2VyXG4gICAgICAgICAqIEBleGFtcGxlIFVzZXIjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXBkYXRlVXNlck1lbWJlcnNoaXBSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVXNlckluT3JnSW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBJbml0aWF0ZSBMb2dpbiB3aXRoIFBhc3NrZXlcbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIExvZ2luIHdpdGggUGFzc2tleVxuICAgKlxuICAgKiBUaGUgcmVzcG9uc2UgY29udGFpbnMgYSBGSURPIGNoYWxsZW5nZSB0aGF0IHRoZSBjbGllbnQgbXVzdCBhbnN3ZXIgd2l0aCBhbnkgb2YgdGhlaXJcbiAgICogZGlzY292ZXJhYmxlIGNyZWRlbnRpYWxzLiAgVGhlIGFuc3dlciBzaG91bGQgYmUgc3VibWl0dGVkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgUEFUQ0ggcmVxdWVzdC5cbiAgICovXG4gIHBhc3NrZXlBdXRoSW5pdDoge1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkxvZ2luUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhc3NrZXlBc3NlcnRDaGFsbGVuZ2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ29tcGxldGUgTG9naW4gd2l0aCBQYXNza2V5XG4gICAqIEBkZXNjcmlwdGlvbiBDb21wbGV0ZSBMb2dpbiB3aXRoIFBhc3NrZXlcbiAgICpcbiAgICogVGhlIHJlcXVlc3Qgc2hvdWxkIGNvbnRhaW4gYW4gYW5zd2VyIHRvIHRoZSBjaGFsbGVuZ2UgaXNzdWVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIFBPU1QgcmVxdWVzdC5cbiAgICogVGhlIGNoYWxsZW5nZSBtYXkgYmUgYW5zd2VyZWQgd2l0aCBhbnkgb2YgdGhlIHVzZXIncyBkaXNjb3ZlcmFibGUgY3JlZGVudGlhbHM7IGlmIHRoZSBjcmVkZW50aWFsXG4gICAqIGluY2x1ZGVkIGluIHRoZSBhbnN3ZXIgaXMgcmVnaXN0ZXJlZCB3aXRoIGEgdXNlciBhbmQgYW4gb3JnYW5pemF0aW9uLCB0aGUgcmVzcG9uc2Ugd2lsbCBjb250YWluXG4gICAqIGEgQ3ViZVNpZ25lciBzZXNzaW9uICh3aXRoIHRoZSBwYXJhbWV0ZXJzIHN1cHBsaWVkIGluIHRoZSBwcmV2aW91cyBQT1NUIHJlcXVlc3QpIGZvciB0aGF0IHVzZXJcbiAgICogaW4gdGhhdCBvcmdhbml6YXRpb24uXG4gICAqL1xuICBwYXNza2V5QXV0aENvbXBsZXRlOiB7XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUGFzc2tleUFzc2VydEFuc3dlclwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIk5ld1Nlc3Npb25SZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBUaGUgcG9saWN5X2V4ZWN1dGUgQVBJIGVuZHBvaW50IGlzIGludGVuZGVkIHRvIGRlbW9uc3RyYXRlIHRoYXQgdGhlIHNpZ25lclxuICAgKiBAZGVzY3JpcHRpb24gVGhlIHBvbGljeV9leGVjdXRlIEFQSSBlbmRwb2ludCBpcyBpbnRlbmRlZCB0byBkZW1vbnN0cmF0ZSB0aGF0IHRoZSBzaWduZXJcbiAgICogY2FuIHVzZSB0aGUgcG9saWN5IGVuZ2luZSwgYnkgd2F5IG9mIHRoZSBQb2xpY3lFbmdpbmVDbGllbnQuXG4gICAqL1xuICBcInBvbGljeS1leGVjdXRlXCI6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gQmFzZTY0VXJsLW5vcGFkIG9mIHRoZSBzaGEyNTYgZGlnZXN0IG9mIHRoZSBwb2xpY3kgYmluYXJ5XG4gICAgICAgICAqIEBleGFtcGxlIDEyMzQ1NlxuICAgICAgICAgKi9cbiAgICAgICAgcG9saWN5X25hbWU6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUG9saWN5UmVzdWx0UmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW5pdGlhdGUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAqXG4gICAqIERFUFJFQ0FURUQuIFVzZSBgUE9TVCAvdjAvb3JnL3tvcmdfaWR9L3VzZXIvbWUvZmlkb2AgaW5zdGVhZC5cbiAgICpcbiAgICogR2VuZXJhdGVzIGEgY2hhbGxlbmdlIHRoYXQgbXVzdCBiZSBhbnN3ZXJlZCB0byBwcm92ZSBvd25lcnNoaXAgb2YgYSBrZXlcbiAgICovXG4gIHJlZ2lzdGVyRmlkb0luaXRMZWdhY3k6IHtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJGaWRvQ3JlYXRlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkZpZG9DcmVhdGVDaGFsbGVuZ2VSZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRmluYWxpemUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAqXG4gICAqIERFUFJFQ0FURUQuIFVzZSBgUEFUQ0ggL3YwL29yZy97b3JnX2lkfS91c2VyL21lL2ZpZG9gIGluc3RlYWQuXG4gICAqXG4gICAqIEFjY2VwdHMgdGhlIHJlc3BvbnNlIHRvIHRoZSBjaGFsbGVuZ2UgZ2VuZXJhdGVkIGJ5IHRoZSBQT1NUIHRvIHRoaXMgZW5kcG9pbnQuXG4gICAqL1xuICByZWdpc3RlckZpZG9Db21wbGV0ZUxlZ2FjeToge1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkZpZG9DcmVhdGVDaGFsbGVuZ2VBbnN3ZXJcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW5pdGlhbGl6ZSBUT1RQIFJlc2V0XG4gICAqIEBkZXByZWNhdGVkXG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWFsaXplIFRPVFAgUmVzZXRcbiAgICpcbiAgICogREVQUkVDQVRFRC4gVXNlIGBQT1NUIC92MC9vcmcve29yZ19pZH0vdXNlci9tZS90b3RwYCBpbnN0ZWFkLlxuICAgKlxuICAgKiBDcmVhdGVzIGEgbmV3IFRPVFAgY2hhbGxlbmdlIHRoYXQgbXVzdCBiZSBhbnN3ZXJlZCB0byBwcm92ZSB0aGF0IHRoZSBuZXcgVE9UUFxuICAgKiB3YXMgc3VjY2Vzc2Z1bGx5IGltcG9ydGVkIGludG8gYW4gYXV0aGVudGljYXRvciBhcHAuXG4gICAqXG4gICAqIFRoaXMgb3BlcmF0aW9uIGlzIGFsbG93ZWQgaWYgRUlUSEVSXG4gICAqIC0gdGhlIHVzZXIgYWNjb3VudCBpcyBub3QgeWV0IGluaXRpYWxpemVkIGFuZCBubyBUT1RQIGlzIGFscmVhZHkgc2V0LCBPUlxuICAgKiAtIHRoZSB1c2VyIGhhcyBub3QgY29uZmlndXJlZCBhbnkgYXV0aCBmYWN0b3JzO1xuICAgKiBvdGhlcndpc2UsIE1GQSBpcyByZXF1aXJlZC5cbiAgICovXG4gIHJlc2V0VG90cEluaXRMZWdhY3k6IHtcbiAgICByZXF1ZXN0Qm9keT86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG90cFJlc2V0UmVxdWVzdFwiXSB8IG51bGw7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJUb3RwSW5mb1wiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRmluYWxpemUgcmVzZXR0aW5nIFRPVFBcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIHJlc2V0dGluZyBUT1RQXG4gICAqXG4gICAqIERFUFJFQ0FURUQuIFVzZSBgUEFUQ0ggL3YwL29yZy97b3JnX2lkfS91c2VyL21lL3RvdHBgIGluc3RlYWQuXG4gICAqXG4gICAqIENoZWNrcyBpZiB0aGUgcmVzcG9uc2UgY29udGFpbnMgdGhlIGNvcnJlY3QgVE9UUCBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlXG4gICAqIGNoYWxsZW5nZSBnZW5lcmF0ZWQgYnkgdGhlIFBPU1QgbWV0aG9kIG9mIHRoaXMgZW5kcG9pbnQuXG4gICAqL1xuICByZXNldFRvdHBDb21wbGV0ZUxlZ2FjeToge1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRvdHBDaGFsbGVuZ2VBbnN3ZXJcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogVmVyaWZ5IFRPVFBcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogQGRlc2NyaXB0aW9uIFZlcmlmeSBUT1RQXG4gICAqXG4gICAqIERFUFJFQ0FURUQuIFVzZSBgUE9TVCAvdjAvb3JnL3tvcmdfaWR9L3VzZXIvbWUvdG90cC92ZXJpZnlgIGluc3RlYWQuXG4gICAqXG4gICAqIENoZWNrcyBpZiBhIGdpdmVuIGNvZGUgbWF0Y2hlcyB0aGUgY3VycmVudCBUT1RQIGNvZGUgZm9yIHRoZSBjdXJyZW50IHVzZXIuXG4gICAqIEVycm9ycyB3aXRoIDQwMyBpZiB0aGUgY3VycmVudCB1c2VyIGhhcyBub3Qgc2V0IHVwIFRPVFAgb3IgdGhlIGNvZGUgZmFpbHMgdmVyaWZpY2F0aW9uLlxuICAgKi9cbiAgdmVyaWZ5VG90cExlZ2FjeToge1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRvdHBBcHByb3ZlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgYWxsIHRoZSBvcmdzIHRoZSB1c2VyIGlzIGEgcGFydCBvZlxuICAgKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIGFsbCB0aGUgb3JncyB0aGUgdXNlciBpcyBhIHBhcnQgb2ZcbiAgICovXG4gIHVzZXJPcmdzOiB7XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJVc2VyT3Jnc1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gUmF3IEJsb2JcbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gUmF3IEJsb2JcbiAgICpcbiAgICogU2lnbnMgYW4gYXJiaXRyYXJ5IGJsb2Igd2l0aCBhIGdpdmVuIGtleS5cbiAgICpcbiAgICogLSBFQ0RTQSBzaWduYXR1cmVzIGFyZSBzZXJpYWxpemVkIGFzIGJpZy1lbmRpYW4gciBhbmQgcyBwbHVzIHJlY292ZXJ5LWlkXG4gICAqIGJ5dGUgdiwgd2hpY2ggY2FuIGluIGdlbmVyYWwgdGFrZSBhbnkgb2YgdGhlIHZhbHVlcyAwLCAxLCAyLCBvciAzLlxuICAgKlxuICAgKiAtIEVkRFNBIHNpZ25hdHVyZXMgYXJlIHNlcmlhbGl6ZWQgaW4gdGhlIHN0YW5kYXJkIGZvcm1hdC5cbiAgICpcbiAgICogLSBCTFMgc2lnbmF0dXJlcyBhcmUgbm90IHN1cHBvcnRlZCBvbiB0aGUgYmxvYi1zaWduIGVuZHBvaW50LlxuICAgKi9cbiAgYmxvYlNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgS2V5XG4gICAgICAgICAqIEBleGFtcGxlIEtleSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJsb2JTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlNpZ25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmVjb3JkIGhlYXJ0YmVhdFxuICAgKiBAZGVzY3JpcHRpb24gUmVjb3JkIGhlYXJ0YmVhdFxuICAgKlxuICAgKiBUaGlzIGVuZHBvaW50IGlzIGNhbGxlZCBieSB0aGUgY3ViZTNzaWduZXIgcHJveHkgdG8gcmVjb3JkIHZhcmlvdXMgbWV0cmljcyB0byBDbG91ZFdhdGNoLlxuICAgKi9cbiAgY3ViZTNzaWduZXJIZWFydGJlYXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk/OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkhlYXJ0YmVhdFJlcXVlc3RcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gRVZNIFRyYW5zYWN0aW9uXG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIEVWTSBUcmFuc2FjdGlvblxuICAgKlxuICAgKiBTaWducyBhbiBFdGhlcmV1bSAoYW5kIG90aGVyIEVWTSkgdHJhbnNhY3Rpb24gd2l0aCBhIGdpdmVuIFNlY3AyNTZrMSBrZXkuXG4gICAqIFJldHVybnMgYW4gUkxQLWVuY29kZWQgdHJhbnNhY3Rpb24gd2l0aCBFSVAtMTU1IHNpZ25hdHVyZS5cbiAgICpcbiAgICogVGhlIGtleSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm9sZSBhbmQgb3JnYW5pemF0aW9uIG9uIHdob3NlIGJlaGFsZiB0aGlzIGFjdGlvbiBpcyBjYWxsZWQuXG4gICAqL1xuICBldGgxU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCBldGhlcmV1bSBhZGRyZXNzIG9mIHRoZSBzZWNwIGtleVxuICAgICAgICAgKiBAZXhhbXBsZSAweDQ5MDExYWRiQ0MzYkM5YzAzMDdCQjA3RjM3RGRhMWExYTljNjlkMkVcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkV0aDFTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkV0aDFTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gVmFsaWRhdG9yIFJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gVmFsaWRhdG9yIFJlcXVlc3RcbiAgICpcbiAgICogU2lnbnMgYW4gZXRoMiB2YWxpZGF0b3IgcmVxdWVzdCB3aXRoIGEgZ2l2ZW4gQkxTIGtleS5cbiAgICpcbiAgICogVGhlIGtleSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm9sZSBhbmQgb3JnYW5pemF0aW9uIG9uIHdob3NlIGJlaGFsZiB0aGlzIGFjdGlvbiBpcyBjYWxsZWQuXG4gICAqL1xuICBldGgyU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCB2YWxpZGF0b3IgKEJMUykgcHVibGljIGtleSB3aXRoIDB4IHByZWZpeFxuICAgICAgICAgKiBAZXhhbXBsZSAweDk3MDBmYmI4YzkwNjk0MjQ0MmMyYTViM2FkNzQ5OGYyN2FlZGRhMjUzNzg2YTZmYmFhOGZlZjQ3ZmI3YWYyMzRlNTBjZjJjY2U4MTVhNTUzMDg3OTkyYWU1NjVkNDhkYVxuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXRoMlNpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU2lnblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIFN0YWtlIERlcG9zaXRcbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gU3Rha2UgRGVwb3NpdFxuICAgKlxuICAgKiBTaWducyBhIGRlcG9zaXQgdHJhbnNhY3Rpb24gd2l0aCBhIGB2YWxpZGF0b3Jfa2V5YC4gSWYgYHZhbGlkYXRvcl9rZXlgIGlzIHNldCB0byBhIHByZWdlbmVyYXRlZCBrZXksIHdlIHVzZSB0aGVcbiAgICogcHJvdmlkZWQgdmFsaWRhdG9yIGtleS4gT3RoZXJ3aXNlLCB3ZSBnZW5lcmF0ZSBhIG5ldyBCTFMga2V5LlxuICAgKlxuICAgKiBXaGVuIHVzaW5nIGEgcHJlZ2VuZXJhdGVkIGtleSwgdGhlIGtleSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm9sZSBhbmQgb3JnYW5pemF0aW9uIG9uIHdob3NlXG4gICAqIGJlaGFsZiB0aGlzIGFjdGlvbiBpcyBjYWxsZWQuXG4gICAqL1xuICBzdGFrZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTdGFrZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJTdGFrZVJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIFVuc3Rha2UgUmVxdWVzdFxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBVbnN0YWtlIFJlcXVlc3RcbiAgICpcbiAgICogSGFuZGxlIHVuc3Rha2luZyByZXF1ZXN0LCBwcm9kdWNpbmcgYSBzaWduZWQgdm9sdW50YXJ5IGV4aXQgbWVzc2FnZVxuICAgKiB0aGF0IGNhbiBiZSBwb3N0ZWQgZGlyZWN0bHkgdG8gdGhlIEJlYWNvbiBjaGFpbi5cbiAgICpcbiAgICogVGhlIGtleSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm9sZSBhbmQgb3JnYW5pemF0aW9uIG9uIHdob3NlIGJlaGFsZiB0aGlzIGFjdGlvbiBpcyBjYWxsZWQuXG4gICAqL1xuICB1bnN0YWtlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIHZhbGlkYXRvciAoQkxTKSBwdWJsaWMga2V5XG4gICAgICAgICAqIEBleGFtcGxlIDB4YTk5YTc2ZWQ3Nzk2ZjdiZTIyZDViN2U4NWRlZWI3YzU2NzdlODhlNTExZTBiMzM3NjE4ZjhjNGViNjEzNDliNGJmMmQxNTNmNjQ5ZjdiNTMzNTlmZThiOTRhMzhlNDRjXG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVbnN0YWtlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlVuc3Rha2VSZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmVmcmVzaCBTaWduZXIgU2Vzc2lvblxuICAgKiBAZGVzY3JpcHRpb24gUmVmcmVzaCBTaWduZXIgU2Vzc2lvblxuICAgKi9cbiAgc2lnbmVyU2Vzc2lvblJlZnJlc2g6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIG9yZ2FuaXphdGlvbiBvd25pbmcgdGhlIGtleVxuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBdXRoRGF0YVwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIk5ld1Nlc3Npb25SZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG59XG4iXX0=
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIGZpbGUgd2FzIGF1dG8tZ2VuZXJhdGVkIGJ5IG9wZW5hcGktdHlwZXNjcmlwdC5cbiAqIERvIG5vdCBtYWtlIGRpcmVjdCBjaGFuZ2VzIHRvIHRoZSBmaWxlLlxuICovXG5cbi8qKiBPbmVPZiB0eXBlIGhlbHBlcnMgKi9cbnR5cGUgV2l0aG91dDxULCBVPiA9IHsgW1AgaW4gRXhjbHVkZTxrZXlvZiBULCBrZXlvZiBVPl0/OiBuZXZlciB9O1xudHlwZSBYT1I8VCwgVT4gPSBUIHwgVSBleHRlbmRzIG9iamVjdCA/IChXaXRob3V0PFQsIFU+ICYgVSkgfCAoV2l0aG91dDxVLCBUPiAmIFQpIDogVCB8IFU7XG50eXBlIE9uZU9mPFQgZXh0ZW5kcyBhbnlbXT4gPSBUIGV4dGVuZHMgW2luZmVyIE9ubHldXG4gID8gT25seVxuICA6IFQgZXh0ZW5kcyBbaW5mZXIgQSwgaW5mZXIgQiwgLi4uaW5mZXIgUmVzdF1cbiAgICA/IE9uZU9mPFtYT1I8QSwgQj4sIC4uLlJlc3RdPlxuICAgIDogbmV2ZXI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgcGF0aHMge1xuICBcIi92MC9hYm91dF9tZVwiOiB7XG4gICAgLyoqXG4gICAgICogVXNlciBJbmZvXG4gICAgICogQGRlc2NyaXB0aW9uIFVzZXIgSW5mb1xuICAgICAqXG4gICAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IHVzZXIuXG4gICAgICpcbiAgICAgKiBQUkVGRVIgYEdFVCAvdjAvb3Jncy97b3JnX2lkfS91c2VyL21lYFxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImFib3V0TWVMZWdhY3lcIl07XG4gIH07XG4gIFwiL3YwL2F0dGVzdGF0aW9uLy53ZWxsLWtub3duL2p3a3MuanNvblwiOiB7XG4gICAgLyoqXG4gICAgICogSldLUyBlbmRwb2ludCBmb3IgdGhlIGF0dGVzdGF0aW9uIGtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBKV0tTIGVuZHBvaW50IGZvciB0aGUgYXR0ZXN0YXRpb24ga2V5XG4gICAgICpcbiAgICAgKiBSZXR1cm5zIHRoZSBwdWJsaWMga2V5IHVzZWQgdG8gc2lnbiBLZXkgaW5mbyBhdHRlc3RhdGlvbnMuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiYXR0ZXN0YXRpb25Kd2tTZXRcIl07XG4gIH07XG4gIFwiL3YwL2VtYWlsL29yZ3NcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgYWNjZXNzaWJsZSBvcmdhbml6YXRpb25zLlxuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IGFjY2Vzc2libGUgb3JnYW5pemF0aW9ucy5cbiAgICAgKlxuICAgICAqIFVuYXV0aGVudGljYXRlZCBlbmRwb2ludCBmb3IgcmV0cmlldmluZyBhbGwgb3JnYW5pemF0aW9ucyBhY2Nlc3NpYmxlIHRvIGEgdXNlci5cbiAgICAgKiBUaGlzIGluZm9ybWF0aW9uIGlzIGVtYWlsZWQgdG8gdGhlIHByb3ZpZGVkIGVtYWlsIGFkZHJlc3MuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiZW1haWxfbXlfb3Jnc1wiXTtcbiAgfTtcbiAgXCIvdjAvaW50ZXJuYWwvc2VudHJ5XCI6IHtcbiAgICAvKipcbiAgICAgKiAoSU5URVJOQUwpIFNlbnRyeSBBUEkgUHJveHlcbiAgICAgKiBAZGVzY3JpcHRpb24gKElOVEVSTkFMKSBTZW50cnkgQVBJIFByb3h5XG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInNlbnRyeUFwaUNhbGxQdWJsaWNcIl07XG4gIH07XG4gIFwiL3YwL21taS92My8ud2VsbC1rbm93bi9qd2tzLmpzb25cIjoge1xuICAgIC8qKlxuICAgICAqIEpXS1MgZW5kcG9pbnQgZm9yIE1NSVxuICAgICAqIEBkZXNjcmlwdGlvbiBKV0tTIGVuZHBvaW50IGZvciBNTUlcbiAgICAgKlxuICAgICAqIFJldHVybnMgdGhlIHB1YmxpYyBrZXkgdXNlZCB0byBzaWduIEpTT04gV2ViIFRva2VucyBmb3IgTU1JLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcIm1taUp3a1NldFwiXTtcbiAgfTtcbiAgXCIvdjAvbW1pL3YzL2pzb24tcnBjXCI6IHtcbiAgICAvKipcbiAgICAgKiBNTUkgSlNPTi1SUEMgZW5kcG9pbnRcbiAgICAgKiBAZGVzY3JpcHRpb24gTU1JIEpTT04tUlBDIGVuZHBvaW50XG4gICAgICpcbiAgICAgKiBIYW5kbGVyIGZvciBhbGwgW01NSSBKU09OLVJQQ10oaHR0cHM6Ly9kb2NzLm1ldGFtYXNrLWluc3RpdHV0aW9uYWwuaW8vY3VzdG9kaWFuLWludGVncmF0aW9uL2ludGVncmF0aW9uLWRvY3MvYXBpL21ldGhvZHMpXG4gICAgICogcmVxdWVzdHMuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcIm1taVwiXTtcbiAgfTtcbiAgXCIvdjAvb2F1dGgvdG9rZW5cIjoge1xuICAgIC8qKlxuICAgICAqIFRva2VuIHJlZnJlc2ggZW5kcG9pbnQsIGNvbXBsaWFudCB3aXRoIE9BdXRoLlxuICAgICAqIEBkZXNjcmlwdGlvbiBUb2tlbiByZWZyZXNoIGVuZHBvaW50LCBjb21wbGlhbnQgd2l0aCBPQXV0aC5cbiAgICAgKlxuICAgICAqIFRoZSBib2R5IGNvbnRlbnQgdHlwZSBjYW4gYmUgZWl0aGVyICdhcHBsaWNhdGlvbi9qc29uJyBvciAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJy5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wib2F1dGgyVG9rZW5SZWZyZXNoXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIEdldCBPcmdcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IE9yZ1xuICAgICAqXG4gICAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IGFuIG9yZ2FuaXphdGlvbi5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJnZXRPcmdcIl07XG4gICAgLyoqXG4gICAgICogVXBkYXRlIE9yZ1xuICAgICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgT3JnXG4gICAgICpcbiAgICAgKiBVcGRhdGUgb3JnYW5pemF0aW9uIGF0dHJpYnV0ZXMgKGVuYWJsZWQgZmxhZywgbmFtZSwgYW5kIHBvbGljaWVzKS5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInVwZGF0ZU9yZ1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2F1ZGl0XCI6IHtcbiAgICAvKipcbiAgICAgKiBRdWVyeSB0aGUgYXVkaXQgbG9nLlxuICAgICAqIEBkZXNjcmlwdGlvbiBRdWVyeSB0aGUgYXVkaXQgbG9nLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJxdWVyeUF1ZGl0TG9nXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vYXV0aF9taWdyYXRpb24vYWRkX2lkZW50aXR5XCI6IHtcbiAgICAvKipcbiAgICAgKiBBc3NvY2lhdGUgYW4gT0lEQyBpZGVudGl0eSB3aXRoIGFuIGFyYml0cmFyeSB1c2VyIGluIG9yZyA8c2Vzc2lvbi5vcmc+LlxuICAgICAqIEBkZXNjcmlwdGlvbiBBc3NvY2lhdGUgYW4gT0lEQyBpZGVudGl0eSB3aXRoIGFuIGFyYml0cmFyeSB1c2VyIGluIG9yZyA8c2Vzc2lvbi5vcmc+LlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJhdXRoTWlncmF0aW9uSWRlbnRpdHlBZGRcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9hdXRoX21pZ3JhdGlvbi9yZW1vdmVfaWRlbnRpdHlcIjoge1xuICAgIC8qKlxuICAgICAqIERpc3NvY2lhdGUgYW4gT0lEQyBpZGVudGl0eSBmcm9tIGFuIGFyYml0cmFyeSB1c2VyIGluIG9yZyA8c2Vzc2lvbi5vcmc+LlxuICAgICAqIEBkZXNjcmlwdGlvbiBEaXNzb2NpYXRlIGFuIE9JREMgaWRlbnRpdHkgZnJvbSBhbiBhcmJpdHJhcnkgdXNlciBpbiBvcmcgPHNlc3Npb24ub3JnPi5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiYXV0aE1pZ3JhdGlvbklkZW50aXR5UmVtb3ZlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vYXV0aF9taWdyYXRpb24vdXBkYXRlX3VzZXJzXCI6IHtcbiAgICAvKipcbiAgICAgKiBVcGRhdGUgZXhpc3RpbmcgdXNlcnMnIHByb2ZpbGVzLiBDdXJyZW50bHkgc3VwcG9ydHMgb25seSAocmUpc2V0dGluZyBlbWFpbHMuXG4gICAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBleGlzdGluZyB1c2VycycgcHJvZmlsZXMuIEN1cnJlbnRseSBzdXBwb3J0cyBvbmx5IChyZSlzZXR0aW5nIGVtYWlscy5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiYXV0aE1pZ3JhdGlvblVzZXJVcGRhdGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9hdmEvc2lnbi97YXZhX2NoYWlufS97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBhIHNlcmlhbGl6ZWQgQXZhbGFuY2hlIEMvWC9QLUNoYWluIE1lc3NhZ2VcbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBhIHNlcmlhbGl6ZWQgQXZhbGFuY2hlIEMvWC9QLUNoYWluIE1lc3NhZ2VcbiAgICAgKlxuICAgICAqIFNpZ25zIGFuIEF2YWxhbmNoZSBtZXNzYWdlIHdpdGggYSBnaXZlbiBTZWNwRXRoIChDLUNoYWluIG1lc3NhZ2VzKSBvclxuICAgICAqIFNlY3BBdmEgKFgtIGFuZCBQLUNoYWluIG1lc3NhZ2VzKSBrZXkuIEN1cnJlbnRseSBzaWduaW5nIEMtQ2hhaW4gbWVzc2FnZXNcbiAgICAgKiB3aXRoIFNlY3BFdGgga2V5IG11c3QgYWxzbyBiZSBleHBsaWNpdGx5IGFsbG93ZWQgdmlhIGBBbGxvd1Jhd0Jsb2JTaWduaW5nYFxuICAgICAqIHBvbGljeS5cbiAgICAgKlxuICAgICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJhdmFTZXJpYWxpemVkVHhTaWduXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vYXZhL3NpZ24ve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gSlNPTi1lbmNvZGVkIEF2YWxhbmNoZSBYLSBvciBQLUNoYWluIE1lc3NhZ2VcbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBKU09OLWVuY29kZWQgQXZhbGFuY2hlIFgtIG9yIFAtQ2hhaW4gTWVzc2FnZVxuICAgICAqXG4gICAgICogU2lnbnMgYW4gQXZhbGFuY2hlIG1lc3NhZ2Ugd2l0aCBhIGdpdmVuIFNlY3BBdmEga2V5LlxuICAgICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJhdmFTaWduXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vYmFieWxvbi9jb3Yvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBCYWJ5bG9uIENvdmVuYW50IENvbW1pdHRlZSBSZXF1ZXN0XG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gQmFieWxvbiBDb3ZlbmFudCBDb21taXR0ZWUgUmVxdWVzdFxuICAgICAqXG4gICAgICogU2lnbnMgdHJhbnNhY3Rpb25zIHJlbGV2YW50IHRvIGEgQmFieWxvbiBjb3ZlbmFudCBjb21taXR0ZWUgc2lnbmVyLFxuICAgICAqIGkuZS4sIFNjaG5vcnIgYW5kIGFkYXB0b3Igc2lnbmF0dXJlcyBmb3IgdGhlIHVuYm9uZGluZywgc2xhc2hpbmcsIGFuZFxuICAgICAqIHNsYXNoLXVuYm9uZGluZyBvdXRwdXRzIG9mIGEgQmFieWxvbiBzdGFraW5nIHRyYW5zYWN0aW9uLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJiYWJ5bG9uQ292U2lnblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2JhYnlsb24vZW90cy9ub25jZXMve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBFT1RTIG5vbmNlc1xuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgRU9UUyBub25jZXNcbiAgICAgKlxuICAgICAqIEdlbmVyYXRlcyBhIHNldCBvZiBCYWJ5bG9uIEVPVFMgbm9uY2VzIGZvciBhIHNwZWNpZmllZCBjaGFpbi1pZCwgc3RhcnRpbmcgYXQgYVxuICAgICAqIHNwZWNpZmllZCBibG9jayBoZWlnaHQuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImNyZWF0ZUVvdHNOb25jZXNcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9iYWJ5bG9uL2VvdHMvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGFuIEVPVFMgc2lnbmF0dXJlXG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBhbiBFT1RTIHNpZ25hdHVyZVxuICAgICAqXG4gICAgICogR2VuZXJhdGVzIGFuIEVPVFMgc2lnbmF0dXJlIGZvciB0aGUgc3BlY2lmaWVkIGNoYWluLWlkLCBibG9jayBoZWlnaHQsIGFuZCBtZXNzYWdlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJlb3RzU2lnblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2JhYnlsb24vcmVnaXN0cmF0aW9uL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIEJhYnlsb24gU3Rha2luZyBSZWdpc3RyYXRpb25cbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBCYWJ5bG9uIFN0YWtpbmcgUmVnaXN0cmF0aW9uXG4gICAgICpcbiAgICAgKiBDcmVhdGVzIGFuZCBzaWducyB0aGUgZGF0YSBuZWVkZWQgdG8gcmVnaXN0ZXIgYSBQaGFzZS0yIG9yIFBoYXNlLTNcbiAgICAgKiBCYWJ5bG9uIHN0YWtlLiBUaGlzIGluY2x1ZGVzIHRoZSBkZXBvc2l0IGFuZCB1bmJvbmRpbmcgdHJhbnNhY3Rpb25zLFxuICAgICAqIHR3byBzbGFzaGluZyB0cmFuc2FjdGlvbnMsIHRoZSBzbGFzaGluZyBzaWduYXR1cmVzLCBhbmQgdGhlIHByb29mIG9mXG4gICAgICogcG9zc2Vzc2lvbi5cbiAgICAgKlxuICAgICAqIE5vdGUgdGhhdCBpdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGdlbmVyYXRlIHRoaXMgcmVnaXN0cmF0aW9uIGRhdGEgYnlcbiAgICAgKiBtYWtpbmcgZm91ciBjYWxscyB0byB0aGUgQmFieWxvbiBzdGFraW5nIEFQSSwgcGx1cyBvbmUgY2FsbCB0byB0aGVcbiAgICAgKiBQU0JUIHNpZ25pbmcgQVBJIHRvIGdlbmVyYXRlIHRoZSBCSVAtMzIyIHByb29mIG9mIHBvc3Nlc3Npb24uIFRoZVxuICAgICAqIHJlZ2lzdHJhdGlvbiBBUEkgZ2VuZXJhdGVzIHRoZSBzYW1lIGRhdGEgYnV0IGlzIGVhc2llciB0byB1c2UuXG4gICAgICpcbiAgICAgKiBOb3RlIHRoYXQgdGhpcyBhY3Rpb24gY2FuIG9ubHkgYmUgY2FsbGVkIHdpdGggYSBUYXByb290IGtleS4gSWYgeW91clxuICAgICAqIGRlcG9zaXQgdHJhbnNhY3Rpb24gc3BlbmRzIFVUWE9zIHRoYXQgYXJlIGNvbnRyb2xsZWQgYnkgb3RoZXIga2V5cyxcbiAgICAgKiB5b3UgY2FuIHN1Ym1pdCB0aGUgJ2RlcG9zaXQnIFBTQlQgdG8gdGhlIFBTQlQgc2lnbmluZyBBUEkgb25lIG9yIG1vcmVcbiAgICAgKiB0aW1lcyB0byBnZW5lcmF0ZSB0aGUgcmVxdWlyZWQgc2lnbmF0dXJlcy5cbiAgICAgKlxuICAgICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBjb25zdWx0IHRoZVxuICAgICAqIFtCYWJ5bG9uIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9iYWJ5bG9ubGFicy1pby9iYWJ5bG9uL2Jsb2IvcmVsZWFzZS92MS54L2RvY3MvcmVnaXN0ZXItYml0Y29pbi1zdGFrZS5tZCkuXG4gICAgICpcbiAgICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiYmFieWxvblJlZ2lzdHJhdGlvblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2JhYnlsb24vc3Rha2luZy97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBCYWJ5bG9uIFN0YWtpbmcgVHJhbnNhY3Rpb25cbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBCYWJ5bG9uIFN0YWtpbmcgVHJhbnNhY3Rpb25cbiAgICAgKlxuICAgICAqIENyZWF0ZXMgYW5kIHNpZ25zIHRyYW5zYWN0aW9ucyByZWxhdGVkIHRvIEJhYnlsb24gc3Rha2luZyAoaS5lLixcbiAgICAgKiBkZXBvc2l0LCBlYXJseSB1bmJvbmQsIHdpdGhkcmF3YWwpLiBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgUHJlLVNpZ25lZFxuICAgICAqIEJpdGNvaW4gVHJhbnNhY3Rpb24gKFBTQlQpLCBhcyBkZWZpbmVkIGluIEJJUC0xNzQsIHdoaWNoIG1hdGNoZXMgdGhlXG4gICAgICogZm9ybWF0IHVzZWQgaW4gbW9zdCBCYWJ5bG9uIHRvb2xpbmcuXG4gICAgICpcbiAgICAgKiBUaGUgJ2RlcG9zaXQnIGFjdGlvbiBjYW4gYmUgdXNlZCB3aXRoIGVpdGhlciBTZWd3aXQgKGkuZS4sIFNlY3BCdGMvU2VjcEJ0Y1Rlc3QpXG4gICAgICogb3IgVGFwcm9vdCAoaS5lLiwgVGFwcm9vdEJ0Yy9UYXByb290QnRjVGVzdCkga2V5cy4gVGhlIHJlbWFpbmluZyBhY3Rpb25zIGNhbiBiZVxuICAgICAqIHVzZWQgb25seSB3aXRoIFRhcHJvb3Qga2V5cy5cbiAgICAgKlxuICAgICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJiYWJ5bG9uU3Rha2luZ1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2J0Yy9tZXNzYWdlL3NpZ24ve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gYSBCaXRjb2luIG1lc3NhZ2UuXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gYSBCaXRjb2luIG1lc3NhZ2UuXG4gICAgICpcbiAgICAgKiBTaWducyBhIG1lc3NhZ2UgdXNpbmcgQklQMTM3IG1lc3NhZ2Ugc2lnbmluZyB3aXRoIGEgZ2l2ZW4gU2VjcDI1NmsxIGtleS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiYnRjTWVzc2FnZVNpZ25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9idGMvcHNidC9zaWduL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIGEgUGFydGlhbGx5IFNpZ25lZCBCaXRjb2luIFRyYW5zYWN0aW9uIChQU0JUKVxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIGEgUGFydGlhbGx5IFNpZ25lZCBCaXRjb2luIFRyYW5zYWN0aW9uIChQU0JUKVxuICAgICAqXG4gICAgICogU2lnbnMgYWxsIGlucHV0cyBvZiB0aGUgc3VwcGxpZWQgUFNCVCB2MCAoQklQLTE3NCkgdGhhdCBwZXJ0YWluIHRvIHRoZVxuICAgICAqICdwdWJrZXknIHNwZWNpZmllZCBpbiB0aGUgcmVxdWVzdCwgd2hpY2ggY2FuIGJlIGVpdGhlciBhIFRhcHJvb3Qgb3IgYVxuICAgICAqIFNlZ3dpdCBrZXkuIEZvciBTZWd3aXQga2V5cywgQ3ViZVNpZ25lci1zcGVjaWZpYyBkZXRlcm1pbmlzdGljIHR3ZWFraW5nXG4gICAgICogY2FuIGJlIGFwcGxpZWQgdG8gJ3B1YmtleScgYmVmb3JlIHNpZ25pbmcsIG9uIGEgcGVyLWlucHV0IGJhc2lzLiAoU2VlIHRoZVxuICAgICAqIEN1YmVTaWduZXIgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBTZWd3aXQgdHdlYWtpbmcuKVxuICAgICAqXG4gICAgICogV2hlbiBjYWxsaW5nIHdpdGggYSBzZWd3aXQga2V5IHRoZSByZXF1aXJlZCBzY29wZSBpcyAnc2lnbjpidGM6cHNidDpzZWd3aXQnLlxuICAgICAqIEZvciBhIHRhcHJvb3Qga2V5LCB0aGUgc2NvcGUgaXMgJ3NpZ246YnRjOnBzYnQ6dGFwcm9vdCcuIEVpdGhlciB0eXBlIG9mIGtleVxuICAgICAqIGNhbiBiZSB1c2VkIHdpdGggdGhlICdzaWduOmJ0Yzpwc2J0JyBzY29wZS5cbiAgICAgKlxuICAgICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJwc2J0U2lnblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2J0Yy9zaWduL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIEJpdGNvaW4gU2Vnd2l0IFRyYW5zYWN0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gQml0Y29pbiBTZWd3aXQgVHJhbnNhY3Rpb25cbiAgICAgKlxuICAgICAqIFNpZ25zIGEgQml0Y29pbiBTZWd3aXQgdHJhbnNhY3Rpb24gd2l0aCBhIGdpdmVuIGtleS5cbiAgICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiYnRjU2lnblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2J0Yy90YXByb290L3NpZ24ve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gQml0Y29pbiBUYXByb290IFRyYW5zYWN0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gQml0Y29pbiBUYXByb290IFRyYW5zYWN0aW9uXG4gICAgICpcbiAgICAgKiBTaWducyBhIEJpdGNvaW4gVGFwcm9vdCB0cmFuc2FjdGlvbiB3aXRoIGEgZ2l2ZW4ga2V5LlxuICAgICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJidGNUYXByb290U2lnblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2NvbnRhY3RzXCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IENvbnRhY3RzXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3QgQ29udGFjdHNcbiAgICAgKlxuICAgICAqIExpc3QgYWxsIGNvbnRhY3RzIGluIHRoZSBvcmcuXG4gICAgICogQW55IG9yZyBtZW1iZXIgaXMgYWxsb3dlZCB0byBsaXN0IGFsbCBjb250YWN0cyBpbiB0aGUgb3JnLlxuICAgICAqXG4gICAgICogIyMgU2VhcmNoIENvbmRpdGlvblxuICAgICAqIFRoZSBzZWFyY2ggY29uZGl0aW9uIGlzIG9wdGlvbmFsLlxuICAgICAqXG4gICAgICogLSBJZiB0aGUgc2VhcmNoIGNvbmRpdGlvbiBzdGFydHMgd2l0aCBcImxhYmVsOi4uLlwiLCB0aGlzIGxpc3Qgd2lsbCBvbmx5IGhvbGQgY29udGFjdHMgd2l0aFxuICAgICAqIHRoZSBsYWJlbCBwcm92aWRlZCBhZnRlciB0aGUgXCI6XCIuIEZvciBleGFtcGxlLCBcImxhYmVsOmN1YmlzdDplcmMyMF90b2tlblwiIHdvdWxkIHJldHVybiBjb250YWN0cyB0aGF0XG4gICAgICogaG9sZCB0aGUgbGFiZWwgXCJjdWJpc3Q6ZXJjMjBfdG9rZW5cIi5cbiAgICAgKlxuICAgICAqIC0gT3RoZXJ3aXNlLCB0aGUgcmVzdWx0IHdpbGwgY29udGFpbiBvbmx5IHRoZSBjb250YWN0cyB3aG8gaGF2ZSBhbiBhZGRyZXNzIHN0YXJ0aW5nIHdpdGgsIG9yXG4gICAgICogZXF1YWxpbmcsIHRoZSBnaXZlbiBzZWFyY2ggc3RyaW5nLiBGb3IgZXhhbXBsZSwgXCIweGVlXCIgd291bGQgcmV0dXJuIGFsbCBjb250YWN0cyBob2xkaW5nIGFuXG4gICAgICogYWRkcmVzcyBzdGFydGluZyB3aXRoIFwiMHhlZVwiLiBUaGUgc2VhcmNoIGlzIGNhc2UtaW5zZW5zaXRpdmUuXG4gICAgICpcbiAgICAgKiBJZiBhIHNlYXJjaCB0ZXJtIGlzIGRlZmluZWQsIHdlIGRvIG5vdCBndWFyYW50ZWVcbiAgICAgKiB0aGUgbnVtYmVyIG9mIHJlc3VsdHMgaW4gYSBwYWdlLiBUaGUgYmVoYXZpb3Igb2YgdGhpcyBwYXJhbWV0ZXIgbWF5IGNoYW5nZVxuICAgICAqIGluIHRoZSBmdXR1cmUgKGZvciBleGFtcGxlLCBtYWtpbmcgcmVzdWx0cyBtb3JlIHN0cmljdGx5IHBhZ2luYXRlZCBvclxuICAgICAqIHBlcmZvcm1pbmcgYSBmdXp6eSBzZWFyY2ggcmF0aGVyIHRoYW4gYSBwcmVmaXggc2VhcmNoKS5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0Q29udGFjdHNcIl07XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIENvbnRhY3RcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIENvbnRhY3RcbiAgICAgKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgY29udGFjdCBpbiB0aGUgb3JnYW5pemF0aW9uLXdpZGUgYWRkcmVzcyBib29rLiBUaGVcbiAgICAgKiB1c2VyIG1ha2luZyB0aGUgcmVxdWVzdCBpcyB0aGUgb3duZXIgb2YgdGhlIGNvbnRhY3QsIGdpdmluZyB0aGVtIGVkaXQgYWNjZXNzXG4gICAgICogdG8gdGhlIGNvbnRhY3QgYWxvbmcgd2l0aCB0aGUgb3JnIG93bmVycy5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3JlYXRlQ29udGFjdFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2NvbnRhY3RzL2J5LWFkZHJlc3NcIjoge1xuICAgIC8qKlxuICAgICAqIExvb2t1cCBDb250YWN0cyBieSBBZGRyZXNzXG4gICAgICogQGRlc2NyaXB0aW9uIExvb2t1cCBDb250YWN0cyBieSBBZGRyZXNzXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIGFsbCBjb250YWN0cyBpbiB0aGUgb3JnIHRoYXQgaGF2ZSB0aGUgZ2l2ZW4gYWRkcmVzcy5cbiAgICAgKlxuICAgICAqIFdoZW4gcXVlcnlpbmcgd2l0aCBhbiBFVk0gYWRkcmVzcyB3aXRob3V0IGEgY2hhaW4sIHRoaXMgZW5kcG9pbnQgcmV0dXJuc1xuICAgICAqIGNvbnRhY3RzIHdpdGggdGhhdCBhZGRyZXNzIG9uICphbnkqIGNoYWluLCBpbmNsdWRpbmcgdGhvc2Ugd2l0aG91dCBhIGNoYWluXG4gICAgICogZGVmaW5lZC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wibG9va3VwQ29udGFjdHNCeUFkZHJlc3NcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9jb250YWN0cy97Y29udGFjdF9pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIEdldCBDb250YWN0XG4gICAgICogQGRlc2NyaXB0aW9uIEdldCBDb250YWN0XG4gICAgICpcbiAgICAgKiBSZXR1cm5zIHRoZSBwcm9wZXJ0aWVzIG9mIGEgQ29udGFjdC5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJnZXRDb250YWN0XCJdO1xuICAgIC8qKlxuICAgICAqIERlbGV0ZSBDb250YWN0XG4gICAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBDb250YWN0XG4gICAgICpcbiAgICAgKiBEZWxldGUgYSBjb250YWN0LCBzcGVjaWZpZWQgYnkgaXRzIElELlxuICAgICAqXG4gICAgICogT25seSB0aGUgY29udGFjdCBvd25lciBhbmQgb3JnIG93bmVycyBhcmUgYWxsb3dlZCB0byBkZWxldGUgY29udGFjdHMuXG4gICAgICogQWRkaXRpb25hbGx5LCB0aGUgY29udGFjdCdzIGVkaXQgcG9saWN5IChpZiBzZXQpIG11c3QgcGVybWl0IHRoZSBkZWxldGlvbi5cbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJkZWxldGVDb250YWN0XCJdO1xuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBDb250YWN0XG4gICAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBDb250YWN0XG4gICAgICpcbiAgICAgKiBVcGRhdGVzIGFuIGV4aXN0aW5nIGNvbnRhY3QgaW4gdGhlIG9yZ2FuaXphdGlvbi13aWRlIGFkZHJlc3MgYm9vay4gT25seVxuICAgICAqIHRoZSBjb250YWN0IG93bmVyIG9yIGFuIG9yZyBvd25lciBjYW4gdXBkYXRlIGNvbnRhY3RzLlxuICAgICAqXG4gICAgICogKlVwZGF0ZXMgd2lsbCBvdmVyd3JpdGUgdGhlIGV4aXN0aW5nIHZhbHVlIG9mIHRoZSBmaWVsZC4qXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJ1cGRhdGVDb250YWN0XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vY291bnRzXCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgY3VycmVudCBjb3VudHMgb2YgdXNlcnMgYW5kIGtleXMgd2l0aGluIGFuIG9yZy5cbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IGN1cnJlbnQgY291bnRzIG9mIHVzZXJzIGFuZCBrZXlzIHdpdGhpbiBhbiBvcmcuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiY291bnRzXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vZGVyaXZlX2tleVwiOiB7XG4gICAgLyoqXG4gICAgICogRGVyaXZlIEtleSBGcm9tIExvbmctTGl2ZWQgTW5lbW9uaWNcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBkZXNjcmlwdGlvbiBEZXJpdmUgS2V5IEZyb20gTG9uZy1MaXZlZCBNbmVtb25pY1xuICAgICAqXG4gICAgICogRGVyaXZlcyBhIGtleSBvZiBhIHNwZWNpZmllZCB0eXBlIHVzaW5nIGEgc3VwcGxpZWQgZGVyaXZhdGlvbiBwYXRoIGFuZCBhblxuICAgICAqIGV4aXN0aW5nIGxvbmctbGl2ZWQgbW5lbW9uaWMuXG4gICAgICovXG4gICAgcHV0OiBvcGVyYXRpb25zW1wiZGVyaXZlS2V5TGVnYWN5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vZGVyaXZlX2tleXNcIjoge1xuICAgIC8qKlxuICAgICAqIERlcml2ZSBLZXkgRnJvbSBOZXcgT3IgRXhpc3RpbmcgTG9uZy1MaXZlZCBNbmVtb25pY1xuICAgICAqIEBkZXNjcmlwdGlvbiBEZXJpdmUgS2V5IEZyb20gTmV3IE9yIEV4aXN0aW5nIExvbmctTGl2ZWQgTW5lbW9uaWNcbiAgICAgKlxuICAgICAqIFVzZXMgZWl0aGVyIGEgbmV3IG9yIGV4aXN0aW5nIGxvbmctbGl2ZWQgbW5lbW9uaWMgdG8gZGVyaXZlIGtleXMgb2ZcbiAgICAgKiBvbmUgb3IgbW9yZSBzcGVjaWZpZWQgdHlwZXMgdmlhIHNwZWNpZmllZCBkZXJpdmF0aW9uIHBhdGhzLlxuICAgICAqL1xuICAgIHB1dDogb3BlcmF0aW9uc1tcImRlcml2ZUtleVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2RpZmZpZV9oZWxsbWFuL3trZXlfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBDb21wdXRlIERpZmZpZSBIZWxsbWFuIHNoYXJlZCBzZWNyZXRcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29tcHV0ZSBEaWZmaWUgSGVsbG1hbiBzaGFyZWQgc2VjcmV0XG4gICAgICpcbiAgICAgKiBGb3IgYSBzZXQgb2YgZWxsaXB0aWMgY3VydmUgcG9pbnRzIChQXzEsIC4uLiwgUF9pKSwgY29tcHV0ZXMgdGhlIERpZmZpZSBIZWxsbWFuXG4gICAgICogc2hhcmVkIHNlY3JldCAoUV8xLCAuLi4sIFFpKSA9IChzayAqIFBfMSwgLi4uIHNrICogUF9pKSwgZm9yIHNrIHRoZSBzZWNyZXQga2V5LlxuICAgICAqIFBvaW50cyBhcmUgc3BlY2lmaWVkIGluIGEgY3VydmUtZGVwZW5kZW50IGZvcm1hdC4gU2VlIEN1YmVTaWduZXIgZG9jdW1lbnRhdGlvblxuICAgICAqIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICpcbiAgICAgKiBUaGUgdXNlciBjYW4gb3B0aW9uYWxseSBzcGVjaWZ5IGEgTklTVCBQLTI1NiBwdWJsaWMga2V5LCBpbiB3aGljaCBjYXNlIHRoZSByZXN1bHRcbiAgICAgKiB3aWxsIGJlIGVuY3J5cHRlZCB0byB0aGUgcHVibGljIGtleSB1c2luZyBSRkM5MTgwIEhQS0UoUC0yNTYsIEhLREYtU0hBMjU2KSB3aXRoXG4gICAgICogQUVTLTI1Ni1HQ00gYXMgdGhlIHN5bW1ldHJpYyBjaXBoZXIuIEluIHRoaXMgY2FzZSwgdGhlIHJlc3VsdGluZyBjaXBoZXJ0ZXh0IHdpbGxcbiAgICAgKiBjb250YWluIGEgc2VyaWFsaXplZCBKU09OIGJsb2IgY29udGFpbmluZyB0aGUgdmVjdG9yIG9mIHNoYXJlZCBzZWNyZXRzIGluIHRoZSBzYW1lXG4gICAgICogb3JkZXIgdGhleSB3ZXJlIHNwZWNpZmllZCBpbiB0aGUgcmVxdWVzdC5cbiAgICAgKlxuICAgICAqIElmIHRoZSB1c2VyIGRvZXMgbm90IHNwZWNpZnkgYSBwdWJsaWMga2V5LCB0aGUgcmVzdWx0aW5nIHNoYXJlZCBzZWNyZXRzIHdpbGwgYmVcbiAgICAgKiByZXR1cm5lZCB1bmVuY3J5cHRlZC4gSW4gdGhpcyBjYXNlLCB0aGUgY2FsbGVyIHNob3VsZCBzYW1wbGUgYSByYW5kb20gdmFsdWUgclxuICAgICAqIG1vZHVsbyB0aGUgZ3JvdXAgb3JkZXIgYW5kIG1hc2sgdGhlIHJlcXVlc3RlZCBwb2ludHMgYXMgKHIgKiBQXzEsIC4uLiwgciAqIFBfaSkuXG4gICAgICogVGhlIHJlc3VsdCB3aWxsIGJlIChyICogc2sgKiBQXzEsIC4uLiwgciAqIHNrICogUF9pKSwgd2hpY2ggY2FuIGJlIHVubWFza2VkIGJ5XG4gICAgICogZmlyc3QgY29tcHV0aW5nIHJeLTEsIHRoZSBtdWx0aXBsaWNhdGl2ZSBpbnZlcnNlIG9mIHIgbW9kdWxvIHRoZSBncm91cCBvcmRlcixcbiAgICAgKiB0aGVuIGNvbXB1dGluZyBhIHNjYWxhciBtdWx0aXBsaWNhdGlvbiBvZiBlYWNoIHJldHVybmVkIHBvaW50IHdpdGggcl4tMS5cbiAgICAgKlxuICAgICAqIFRoZXJlIGlzIGxpdHRsZSBwcmFjdGljYWwgc2VjdXJpdHkgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZXNlIHR3byBhcHByb2FjaGVzLiBUaGVcbiAgICAgKiBjbGllbnQgaXMgZnJlZSB0byBjaG9vc2UgdGhlIG9uZSB0aGF0IGlzIGVhc2llciBmcm9tIGFuIGltcGxlbWVudGF0aW9uIHBlcnNwZWN0aXZlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJkaWZmaWVIZWxsbWFuRXhjaGFuZ2VcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9lbWFpbHMve3B1cnBvc2V9XCI6IHtcbiAgICBwdXQ6IG9wZXJhdGlvbnNbXCJjb25maWd1cmVFbWFpbFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2V2bS9laXAxOTEvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBFSVAtMTkxIERhdGFcbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBFSVAtMTkxIERhdGFcbiAgICAgKlxuICAgICAqIFNpZ25zIGEgbWVzc2FnZSB1c2luZyBFSVAtMTkxIHBlcnNvbmFsX3NpZ24gd2l0aCBhIGdpdmVuIFNlY3AyNTZrMSBrZXkuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImVpcDE5MVNpZ25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9ldm0vZWlwNzEyL3NpZ24ve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gRUlQLTcxMiBUeXBlZCBEYXRhXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gRUlQLTcxMiBUeXBlZCBEYXRhXG4gICAgICpcbiAgICAgKiBTaWducyB0eXBlZCBkYXRhIGFjY29yZGluZyB0byBFSVAtNzEyIHdpdGggYSBnaXZlbiBTZWNwMjU2azEga2V5LlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJlaXA3MTJTaWduXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vZXhwb3J0L3trZXlfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgYW4gT3JnLUV4cG9ydCBDaXBoZXJ0ZXh0XG4gICAgICogQGRlc2NyaXB0aW9uIEdldCBhbiBPcmctRXhwb3J0IENpcGhlcnRleHRcbiAgICAgKlxuICAgICAqIFJldHVybnMgdGhlIGV4cG9ydCBjaXBoZXJ0ZXh0IGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJvdmlkZWQga2V5LWlkLlxuICAgICAqIEluIG9yZGVyIHRvIHVzZSB0aGlzIEFQSSwgeW91IG11c3QgYmUgYW4gb3JnIG93bmVyIGFuZCB5b3VyIG9yZyBtdXN0XG4gICAgICogYmUgY29uZmlndXJlZCBmb3Igb3JnIGV4cG9ydCBhbmQgZm9yIEFQSS1iYXNlZCBleHBvcnQgZGVsaXZlcnkuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiZ2V0T3JnRXhwb3J0XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vaWRlbnRpdHlcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgYXNzb2NpYXRlZCBPSURDIGlkZW50aXRpZXMgd2l0aCB0aGUgY3VycmVudCB1c2VyLlxuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IGFzc29jaWF0ZWQgT0lEQyBpZGVudGl0aWVzIHdpdGggdGhlIGN1cnJlbnQgdXNlci5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0T2lkY0lkZW50aXRpZXNcIl07XG4gICAgLyoqXG4gICAgICogQXNzb2NpYXRlIGFuIE9JREMgaWRlbnRpdHkgd2l0aCB0aGUgY3VycmVudCB1c2VyIGluIG9yZyA8c2Vzc2lvbi5vcmc+LlxuICAgICAqIEBkZXNjcmlwdGlvbiBBc3NvY2lhdGUgYW4gT0lEQyBpZGVudGl0eSB3aXRoIHRoZSBjdXJyZW50IHVzZXIgaW4gb3JnIDxzZXNzaW9uLm9yZz4uXG4gICAgICpcbiAgICAgKiBBbGllbiB1c2VycyBhcmUgYWxsb3dlZCB0byBjYWxsIHRoaXMgZW5kcG9pbnQsIGJ1dCBmb3IgdGhlbSBNRkEgaXMgcmVxdWlyZWRcbiAgICAgKiAodW5sZXNzIHRoZXkgYXJlIHJlZ2lzdGVyaW5nIGFuIGVtYWlsLW90cCBpZGVudGl0eSBtYXRjaGluZyB0aGVpciBjdXJyZW50IGVtYWlsKTtcbiAgICAgKiBhZGRpdGlvbmFsbHksIGxpbWl0cyBtYXkgYXBwbHkgdG8gaG93IG1hbnkgaWRlbnRpdGllcyB0aGF0IG1heSByZWdpc3Rlci5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiYWRkT2lkY0lkZW50aXR5XCJdO1xuICAgIC8qKlxuICAgICAqIFJlbW92ZSBhbiBPSURDIGlkZW50aXR5IGZyb20gdGhlIGN1cnJlbnQgdXNlcidzIGFjY291bnQgaW4gb3JnIDxzZXNzaW9uLm9yZz4uXG4gICAgICogQGRlc2NyaXB0aW9uIFJlbW92ZSBhbiBPSURDIGlkZW50aXR5IGZyb20gdGhlIGN1cnJlbnQgdXNlcidzIGFjY291bnQgaW4gb3JnIDxzZXNzaW9uLm9yZz4uXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1wicmVtb3ZlT2lkY0lkZW50aXR5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vaWRlbnRpdHkvcHJvdmVcIjoge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBbSWRlbnRpdHlQcm9vZl0gZnJvbSBDdWJlU2lnbmVyIHVzZXIgc2Vzc2lvblxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgW0lkZW50aXR5UHJvb2ZdIGZyb20gQ3ViZVNpZ25lciB1c2VyIHNlc3Npb25cbiAgICAgKlxuICAgICAqIFRoaXMgcm91dGUgY2FuIGJlIHVzZWQgdG8gcHJvdmUgdG8gYW5vdGhlciBwYXJ0eSB0aGF0IGEgdXNlciBoYXMgYVxuICAgICAqIHZhbGlkIEN1YmVTaWduZXIgc2Vzc2lvbi5cbiAgICAgKlxuICAgICAqIENsaWVudHMgYXJlIGludGVuZGVkIHRvIGNhbGwgdGhpcyByb3V0ZSBhbmQgcGFzcyB0aGUgcmV0dXJuZWQgZXZpZGVuY2VcbiAgICAgKiB0byBhbm90aGVyIHNlcnZpY2Ugd2hpY2ggd2lsbCB2ZXJpZnkgaXQgYnkgbWFraW5nIGEgcmVxdWVzdCB0byBgL3YwL29yZy88b3JnX2lkPi9pZGVudGl0eS92ZXJpZnlgLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJjcmVhdGVQcm9vZkN1YmVTaWduZXJcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9pZGVudGl0eS9wcm92ZS9vaWRjXCI6IHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgW0lkZW50aXR5UHJvb2ZdIGZyb20gT0lEQyB0b2tlblxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgW0lkZW50aXR5UHJvb2ZdIGZyb20gT0lEQyB0b2tlblxuICAgICAqXG4gICAgICogRXhjaGFuZ2UgYW4gT0lEQyBJRCB0b2tlbiAocGFzc2VkIHZpYSB0aGUgYEF1dGhvcml6YXRpb25gIGhlYWRlcikgZm9yIGEgcHJvb2Ygb2YgYXV0aGVudGljYXRpb24uXG4gICAgICpcbiAgICAgKiBUaGlzIHJvdXRlIGNhbiBiZSB1c2VkIHRvIHByb3ZlIHRvIGFub3RoZXIgcGFydHkgdGhhdCBhIHVzZXIgaGFzIG1ldCB0aGVcbiAgICAgKiBhdXRoZW50aWNhdGlvbiByZXF1aXJlbWVudHMgKGFsbG93ZWQgaXNzdWVycyAmIGF1ZGllbmNlcykgZm9yIEN1YmVTaWduZXJcbiAgICAgKiB3aXRob3V0IGxlYWtpbmcgdGhlaXIgY3JlZGVudGlhbHMuXG4gICAgICpcbiAgICAgKiBDbGllbnRzIGFyZSBpbnRlbmRlZCB0byBjYWxsIHRoaXMgcm91dGUgYW5kIHBhc3MgdGhlIHJldHVybmVkIGV2aWRlbmNlIHRvIGFub3RoZXIgc2VydmljZVxuICAgICAqIHdoaWNoIHdpbGwgdmVyaWZ5IGl0IGJ5IG1ha2luZyBhIHJlcXVlc3QgdG8gYC92MC9vcmcvPG9yZ19pZD4vaWRlbnRpdHkvdmVyaWZ5YC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3JlYXRlUHJvb2ZPaWRjXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vaWRlbnRpdHkvdmVyaWZ5XCI6IHtcbiAgICAvKipcbiAgICAgKiBWZXJpZnkgaWRlbnRpdHkgcHJvb2ZcbiAgICAgKiBAZGVzY3JpcHRpb24gVmVyaWZ5IGlkZW50aXR5IHByb29mXG4gICAgICpcbiAgICAgKiBBbGxvd3MgYSB0aGlyZC1wYXJ0eSB0byB2YWxpZGF0ZSBwcm9vZiBvZiBhdXRoZW50aWNhdGlvbi5cbiAgICAgKlxuICAgICAqIFdoZW4gYSB0aGlyZC1wYXJ0eSBpcyBwcm92aWRlZCBhbiBbSWRlbnRpdHlQcm9vZl0gb2JqZWN0LCB0aGV5IG11c3QgY2hlY2sgaXRzXG4gICAgICogdmVyYWNpdHkgYnkgY2FsbGluZyB0aGlzIGVuZHBvaW50XG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInZlcmlmeVByb29mXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vaWRwL2F1dGhlbnRpY2F0ZVwiOiB7XG4gICAgLyoqXG4gICAgICogQXV0aGVudGljYXRlXG4gICAgICogQGRlc2NyaXB0aW9uIEF1dGhlbnRpY2F0ZVxuICAgICAqXG4gICAgICogVGhpcyBlbmRwb2ludCBleGNoYW5nZXMgYW4gZW1haWwgJiBwYXNzd29yZCBmb3IgYW4gT0lEQyB0b2tlblxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJpZHBBdXRoZW50aWNhdGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9pZHAvcGFzc3dvcmRfcmVzZXRcIjoge1xuICAgIC8qKlxuICAgICAqIFJlcXVlc3QgUGFzc3dvcmQgUmVzZXRcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBQYXNzd29yZCBSZXNldFxuICAgICAqXG4gICAgICogVGhpcyBlbmRwb2ludCBnZW5lcmF0ZXMgYW4gT0lEQyB0b2tlbiB3aXRob3V0IGEgc2lnbmF0dXJlIChvZiB0aGUgZm9ybSBge2hlYWRlcn0ue3BheWxvYWR9LmApLFxuICAgICAqIGFuZCBzZW5kcyB0aGUgc2lnbmF0dXJlIHRvIHRoZSB1c2VyJ3MgZW1haWwuIENsaWVudCBhcHBsaWNhdGlvbnMgY2FuIHJlY29uc3RydWN0IHRoZSB0b2tlblxuICAgICAqIGJ5IGNvbmNhdGVuYXRpbmcgdGhlIGB7aGVhZGVyfS57cGF5bG9hZH0uYCB3aXRoIHRoZSBzaWduYXR1cmUsIHByb2R1Y2luZyBhIHZhbGlkIE9JREMgdG9rZW4gb2ZcbiAgICAgKiB0aGUgZm9ybSBge2hlYWRlcn0ue3BheWxvYWR9LntzaWduYXR1cmV9YC4gVGhlIHRva2VuIGNhbiB0aGVuIGJlIHVzZWQgdG8gYXV0aGVudGljYXRlIHRoZSB1c2VyXG4gICAgICogd2hlbiBwZXJmb3JtaW5nIHRoZSBgaWRwX3Bhc3N3b3JkX3Jlc2V0X2NvbmZpcm1gIHJlcXVlc3QuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImlkcFBhc3N3b3JkUmVzZXRSZXF1ZXN0XCJdO1xuICAgIC8qKlxuICAgICAqIENvbmZpcm0gUGFzc3dvcmQgUmVzZXRcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29uZmlybSBQYXNzd29yZCBSZXNldFxuICAgICAqXG4gICAgICogVGhpcyBlbmRwb2ludCBhbGxvd3MgSURQIHVzZXJzIHRvIHJlc2V0IHRoZWlyIHBhc3N3b3JkXG4gICAgICogdXNpbmcgYSB0b2tlbiB0aGV5IGhhdmUgcmVjZWl2ZWQgaW4gdGhlaXIgZW1haWwuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJpZHBQYXNzd29yZFJlc2V0Q29uZmlybVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2ltcG9ydF9rZXlcIjoge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBLZXktSW1wb3J0IEtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgS2V5LUltcG9ydCBLZXlcbiAgICAgKlxuICAgICAqIEdlbmVyYXRlIGFuIGVwaGVtZXJhbCBrZXkgdGhhdCBhIGNsaWVudCBjYW4gdXNlIGZvciBrZXktaW1wb3J0IGVuY3J5cHRpb24uXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiY3JlYXRlS2V5SW1wb3J0S2V5XCJdO1xuICAgIC8qKlxuICAgICAqIEltcG9ydCBLZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gSW1wb3J0IEtleVxuICAgICAqXG4gICAgICogU2VjdXJlbHkgaW1wb3J0cyBhbiBleGlzdGluZyBrZXkgdXNpbmcgYSBwcmV2aW91c2x5IGdlbmVyYXRlZCBrZXktaW1wb3J0IGtleS5cbiAgICAgKi9cbiAgICBwdXQ6IG9wZXJhdGlvbnNbXCJpbXBvcnRLZXlcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9pbmZvXCI6IHtcbiAgICAvKipcbiAgICAgKiBQdWJsaWMgT3JnIEluZm9cbiAgICAgKiBAZGVzY3JpcHRpb24gUHVibGljIE9yZyBJbmZvXG4gICAgICpcbiAgICAgKiBVbmF1dGhlbnRpY2F0ZWQgZW5kcG9pbnQgdGhhdCByZXR1cm5zIHB1YmxpY2x5LWF2YWlsYWJsZSBpbmZvcm1hdGlvbiBhYm91dCBhbiBvcmdhbml6YXRpb24uXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wicHVibGljX29yZ19pbmZvXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vaW50ZXJuYWwvY3VzdG9tX2NoYWluX3JwY1wiOiB7XG4gICAgLyoqXG4gICAgICogKElOVEVSTkFMKSBDdXN0b20gY2hhaW4gUlBDIHByb3h5XG4gICAgICogQGRlc2NyaXB0aW9uIChJTlRFUk5BTCkgQ3VzdG9tIGNoYWluIFJQQyBwcm94eVxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJjdXN0b21DaGFpblJwY0NhbGxcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9pbnRlcm5hbC9lc3Bsb3JhXCI6IHtcbiAgICAvKipcbiAgICAgKiAoSU5URVJOQUwpIEVzcGxvcmEgQVBJIFByb3h5XG4gICAgICogQGRlc2NyaXB0aW9uIChJTlRFUk5BTCkgRXNwbG9yYSBBUEkgUHJveHlcbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiZXNwbG9yYUFwaUNhbGxcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9pbnRlcm5hbC9zZW50cnlcIjoge1xuICAgIC8qKlxuICAgICAqIChJTlRFUk5BTCkgQXV0aGVudGljYXRlZCBTZW50cnkgQVBJIFByb3h5XG4gICAgICogQGRlc2NyaXB0aW9uIChJTlRFUk5BTCkgQXV0aGVudGljYXRlZCBTZW50cnkgQVBJIFByb3h5XG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInNlbnRyeUFwaUNhbGxcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9pbnZpdGF0aW9uL2FjY2VwdFwiOiB7XG4gICAgLyoqXG4gICAgICogQWNjZXB0IGFuIGludml0YXRpb25cbiAgICAgKiBAZGVzY3JpcHRpb24gQWNjZXB0IGFuIGludml0YXRpb25cbiAgICAgKlxuICAgICAqIFRoaXMgZW5kcG9pbnQgYWxsb3dzIGlkcCB1c2VycyB0byByZWdpc3RlciB1c2luZyBhIHRva2VuIHRoZXkgaGF2ZSByZWNlaXZlZCBpbiB0aGVpciBlbWFpbFxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJpbnZpdGF0aW9uQWNjZXB0XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vaW52aXRlXCI6IHtcbiAgICAvKipcbiAgICAgKiBJbnZpdGUgVXNlclxuICAgICAqIEBkZXNjcmlwdGlvbiBJbnZpdGUgVXNlclxuICAgICAqXG4gICAgICogQ3JlYXRlcyBhIG5ldyB1c2VyIGluIGFuIGV4aXN0aW5nIG9yZyBhbmQgc2VuZHMgdGhhdCB1c2VyIGFuIGludml0ZSBlbWFpbC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiaW52aXRlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0va2V5c1wiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBLZXlzXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3QgS2V5c1xuICAgICAqXG4gICAgICogR2V0cyB0aGUgbGlzdCBvZiBhY2Nlc3NpYmxlIGtleXMgaW4gYSBnaXZlbiBvcmcgKHRvIG9yZyBvd25lciwgYWxsIG9yZyBrZXlzXG4gICAgICogYXJlIGFjY2Vzc2libGU7IHRvIG1lbWJlcnMsIG9ubHkgdGhlaXIgb3duIGtleXMgYXJlIGFjY2Vzc2libGUpLlxuICAgICAqXG4gICAgICogSWYgYSBzZWFyY2ggY29uZGl0aW9uIGlzLCB0aGUgcmVzdWx0IHdpbGwgY29udGFpbiBvbmx5IHRoZSBrZXlzIHdob3NlIGVpdGhlclxuICAgICAqIG1hdGVyaWFsIElEIG9yIG1ldGFkYXRhIGNvbnRhaW4gdGhlIHNlYXJjaCBjb25kaXRpb24gc3RyaW5nLlxuICAgICAqXG4gICAgICogTk9URSB0aGF0IGlmIHBhZ2luYXRpb24gaXMgdXNlZCBhbmQgYSBwYWdlIGxpbWl0IGlzIHNldCwgdGhlIHJldHVybmVkIHJlc3VsdFxuICAgICAqIHNldCBtYXkgY29udGFpbiBlaXRoZXIgRkVXRVIgb3IgTU9SRSBlbGVtZW50cyB0aGFuIHRoZSByZXF1ZXN0ZWQgcGFnZSBsaW1pdC5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0S2V5c0luT3JnXCJdO1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBLZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIEtleVxuICAgICAqXG4gICAgICogQ3JlYXRlcyBvbmUgb3IgbW9yZSBuZXcga2V5cyBvZiB0aGUgc3BlY2lmaWVkIHR5cGUuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImNyZWF0ZUtleVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2tleXMve2tleV9pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIEdldCBLZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IEtleVxuICAgICAqXG4gICAgICogUmV0dXJucyB0aGUgcHJvcGVydGllcyBvZiBhIGtleS5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJnZXRLZXlJbk9yZ1wiXTtcbiAgICAvKipcbiAgICAgKiBEZWxldGUgS2V5XG4gICAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBLZXlcbiAgICAgKlxuICAgICAqIERlbGV0ZXMgYSBrZXkgc3BlY2lmaWVkIGJ5IGl0cyBJRC5cbiAgICAgKlxuICAgICAqIE9ubHkgdGhlIGtleSBvd25lciBhbmQgb3JnIG93bmVycyBhcmUgYWxsb3dlZCB0byBkZWxldGUga2V5cy5cbiAgICAgKiBBZGRpdGlvbmFsbHksIHRoZSByb2xlJ3MgZWRpdCBwb2xpY3kgKGlmIHNldCkgbXVzdCBwZXJtaXQgdGhlIHVwZGF0ZS5cbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJkZWxldGVLZXlcIl07XG4gICAgLyoqXG4gICAgICogVXBkYXRlIEtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgS2V5XG4gICAgICpcbiAgICAgKiBFbmFibGUgb3IgZGlzYWJsZSBhIGtleS4gIFRoZSB1c2VyIG11c3QgYmUgdGhlIG93bmVyIG9mIHRoZSBrZXkgb3JcbiAgICAgKiBvcmdhbml6YXRpb24gdG8gcGVyZm9ybSB0aGlzIGFjdGlvbi5cbiAgICAgKlxuICAgICAqIEZvciBlYWNoIHJlcXVlc3RlZCB1cGRhdGUsIHRoZSBzZXNzaW9uIG11c3QgaGF2ZSB0aGUgY29ycmVzcG9uZGluZyAnbWFuYWdlOmtleTp1cGRhdGU6Xycgc2NvcGU7XG4gICAgICogaWYgbm8gdXBkYXRlcyBhcmUgcmVxdWVzdGVkLCB0aGUgc2Vzc2lvbiBtdXN0IGhhdmUgJ21hbmFnZTprZXk6Z2V0Jy5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInVwZGF0ZUtleVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2tleXMve2tleV9pZH0vYXR0ZXN0XCI6IHtcbiAgICAvKipcbiAgICAgKiBBdHRlc3QgdG8gS2V5IFByb3BlcnRpZXNcbiAgICAgKiBAZGVzY3JpcHRpb24gQXR0ZXN0IHRvIEtleSBQcm9wZXJ0aWVzXG4gICAgICpcbiAgICAgKiBUaGUgcmVzcG9uc2UgaXMgYSBKV1Qgd2hvc2UgY2xhaW1zIGFyZSB0aGUga2V5IHByb3BlcnRpZXMuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiYXR0ZXN0S2V5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0va2V5cy97a2V5X2lkfS9yb2xlc1wiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBLZXkgUm9sZXNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBLZXkgUm9sZXNcbiAgICAgKlxuICAgICAqIEdldCBhbGwgcm9sZXMgdGhlIGtleSBpcyBpblxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RLZXlSb2xlc1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2tleXMve2tleV9pZH0vdHhcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgSGlzdG9yaWNhbCBUcmFuc2FjdGlvbnNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBIaXN0b3JpY2FsIFRyYW5zYWN0aW9uc1xuICAgICAqXG4gICAgICogUmV0dXJucyBhIHNvcnRlZCwgcGFnaW5hdGVkIGxpc3Qgb2YgdHJhbnNhY3Rpb25zIHNpZ25lZCBieSBhIGdpdmVuIGtleSxcbiAgICAgKiBvcmRlcmVkIGZyb20gbW9zdCByZWNlbnQgZmlyc3QuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibGlzdEhpc3RvcmljYWxLZXlUeFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2tleXMve2tleV90eXBlfS97bWF0ZXJpYWxfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgS2V5IGJ5IE1hdGVyaWFsIElEXG4gICAgICogQGRlc2NyaXB0aW9uIEdldCBLZXkgYnkgTWF0ZXJpYWwgSURcbiAgICAgKlxuICAgICAqIFJldHVybnMgdGhlIHByb3BlcnRpZXMgb2YgYSBrZXkuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiZ2V0S2V5QnlNYXRlcmlhbElkXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vbWV0cmljc1wiOiB7XG4gICAgLyoqXG4gICAgICogUXVlcnkgb3JnIG1ldHJpY3MuXG4gICAgICogQGRlc2NyaXB0aW9uIFF1ZXJ5IG9yZyBtZXRyaWNzLlxuICAgICAqXG4gICAgICogTWV0cmljcyBzdW1tYXJpemUgdXNhZ2UgaW5mb3JtYXRpb24gYWJvdXQgeW91ciBDdWJlU2lnbmVyIG9yZ2FuaXphdGlvbiBvdmVyIHRpbWUuIEZvciBleGFtcGxlLFxuICAgICAqIHlvdSBjYW4gY2FsbCB0aGlzIGVuZHBvaW50IGZpbmQgb3V0OlxuICAgICAqXG4gICAgICogLSB0aGUgYXZlcmFnZSBudW1iZXIgb2Yga2V5cyBvdmVyIHRoZSBsYXN0IG1vbnRoLFxuICAgICAqIC0gdGhlIGF2ZXJhZ2UgbnVtYmVyIG1vbnRobHkgdXNlcnMgb3ZlciB0aGUgbGFzdCB5ZWFyLFxuICAgICAqIC0gdGhlIHRvdGFsIG51bWJlciBvZiB0cmFuc2FjdGlvbnMgc2lnbmVkIGxhc3Qgd2VlayxcbiAgICAgKiAtIGhvdyB0aGUgbnVtYmVyIG9mIGRpZmZlcmVudCBBUEkgcmVxdWVzdHMgd2FzIHRyZW5kaW5nIGRheS1ieS1kYXkgb3ZlciB0aGUgbGFzdCB3ZWVrL21vbnRoL3llYXIsIGV0Yy5cbiAgICAgKlxuICAgICAqIEVhY2ggbWV0cmljIGtpbmQgY2FuIGhhdmUgb25lIG9yIG1vcmUgZGltZW5zaW9ucywgdG8gZnVydGhlciBzcGVjaWZ5IHRoZSBvcmcgcHJvcGVydHkgaXQgZGVzY3JpYmVzLlxuICAgICAqIEZvciBleGFtcGxlLCB0aGUgYFVzZXJDb3VudGAgbWV0cmljcyBoYXZlIGEgbWVtYmVyc2hpcCBkaW1lbnNpb25zIHRvIHNwZWNpZnkgdGhlIGtpbmQgb2YgdXNlciBtZW1iZXJzaGlwXG4gICAgICogaW4gdGhlIG9yZ2FuaXphdGlvbiAoXCJPd25lclwiIHZzLiBcIk1lbWJlclwiIHZzLiBcIkFsaWVuXCIpLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJxdWVyeU1ldHJpY3NcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9tZmFcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgUGVuZGluZyBNRkEgUmVxdWVzdHNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBQZW5kaW5nIE1GQSBSZXF1ZXN0c1xuICAgICAqXG4gICAgICogUmV0cmlldmVzIGFuZCByZXR1cm5zIGFsbCBwZW5kaW5nIE1GQSByZXF1ZXN0cyB0aGF0IGFyZSBhY2Nlc3NpYmxlIHRvIHRoZSBjdXJyZW50IHNlc3Npb24sXG4gICAgICogaS5lLiwgdGhvc2UgY3JlYXRlZCBieSB0aGUgY3VycmVudCBzZXNzaW9uIGlkZW50aXR5IHBsdXMgdGhvc2UgaW4gd2hpY2ggdGhlIGN1cnJlbnQgdXNlclxuICAgICAqIGlzIGxpc3RlZCBhcyBhbiBhcHByb3ZlclxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcIm1mYUxpc3RcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9tZmEve21mYV9pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIEdldCBQZW5kaW5nIE1GQSBSZXF1ZXN0XG4gICAgICogQGRlc2NyaXB0aW9uIEdldCBQZW5kaW5nIE1GQSBSZXF1ZXN0XG4gICAgICpcbiAgICAgKiBSZXRyaWV2ZXMgYW5kIHJldHVybnMgYSBwZW5kaW5nIE1GQSByZXF1ZXN0IGJ5IGl0cyBpZC5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJtZmFHZXRcIl07XG4gICAgLyoqXG4gICAgICogQXBwcm92ZSBvciBSZWplY3QgTUZBIFJlcXVlc3RcbiAgICAgKiBAZGVzY3JpcHRpb24gQXBwcm92ZSBvciBSZWplY3QgTUZBIFJlcXVlc3RcbiAgICAgKlxuICAgICAqIEFwcHJvdmUgb3IgcmVqZWN0IHJlcXVlc3QgYWZ0ZXIgbG9nZ2luZyBpbiB3aXRoIEN1YmVTaWduZXIuXG4gICAgICpcbiAgICAgKiBJZiBhcHByb3ZpbmcsIGFkZHMgdGhlIGN1cnJlbnRseS1sb2dnZWQgdXNlciBhcyBhbiBhcHByb3ZlclxuICAgICAqIG9mIGEgcGVuZGluZyBNRkEgcmVxdWVzdCBvZiB0aGUgW1N0YXR1czo6UmVxdWlyZWRBcHByb3ZlcnNdIGtpbmQuIElmIHRoZSByZXF1aXJlZCBudW1iZXIgb2ZcbiAgICAgKiBhcHByb3ZlcnMgaXMgcmVhY2hlZCwgdGhlIE1GQSByZXF1ZXN0IGlzIGFwcHJvdmVkOyB0aGUgY29uZmlybWF0aW9uIHJlY2VpcHQgY2FuIGJlIHVzZWQgdG9cbiAgICAgKiByZXN1bWUgdGhlIG9yaWdpbmFsIEhUVFAgcmVxdWVzdC5cbiAgICAgKlxuICAgICAqIElmIHJlamVjdGluZywgaW1tZWRpYXRlbHkgZGVsZXRlcyB0aGUgcGVuZGluZyBNRkEgcmVxdWVzdC5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcIm1mYVZvdGVDc1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L21mYS97bWZhX2lkfS9lbWFpbFwiOiB7XG4gICAgLyoqXG4gICAgICogSW5pdGlhdGUgYW4gRW1haWwgT1RQIE1GQSBBcHByb3ZhbC9SZWplY3Rpb25cbiAgICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgYW4gRW1haWwgT1RQIE1GQSBBcHByb3ZhbC9SZWplY3Rpb25cbiAgICAgKlxuICAgICAqIEluaXRpYXRlcyB0aGUgYXBwcm92YWwvcmVqZWN0aW9uIHByb2Nlc3Mgb2YgYW4gTUZBIFJlcXVlc3QgdXNpbmcgRW1haWwgT1RQLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJtZmFFbWFpbEluaXRcIl07XG4gICAgLyoqXG4gICAgICogRmluYWxpemUgYSBFbWFpbCBPVFAgTUZBIEFwcHJvdmFsL1JlamVjdGlvbi5cbiAgICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgYSBFbWFpbCBPVFAgTUZBIEFwcHJvdmFsL1JlamVjdGlvbi5cbiAgICAgKlxuICAgICAqIFRoZSByZXF1ZXN0IHNob3VsZCBjb250YWluIHRoZSBmdWxsIEpXVCBvYnRhaW5lZCBieSBjb25jYXRlbmF0aW5nIHRoZVxuICAgICAqIHBhcnRpYWwgdG9rZW4gcmV0dXJuZWQgYnkgdGhlIGBtZmFfZW1haWxfaW5pdGAgZW5kcG9pbnQgYW5kIHRoZSBzaWduYXR1cmVcbiAgICAgKiBlbWFpbGVkIHRvIHRoZSB1c2VyIGlzc3VpbmcgdGhlIHJlcXVlc3QuXG4gICAgICpcbiAgICAgKiBJZiBhcHByb3ZpbmcsIGFkZHMgYW4gYXBwcm92ZXIgdG8gYSBwZW5kaW5nIE1GQSByZXF1ZXN0LlxuICAgICAqIElmIHRoZSByZXF1aXJlZCBudW1iZXIgb2YgYXBwcm92ZXJzIGlzIHJlYWNoZWQsIHRoZSBNRkEgcmVxdWVzdCBpcyBhcHByb3ZlZDtcbiAgICAgKiB0aGUgY29uZmlybWF0aW9uIHJlY2VpcHQgY2FuIGJlIHVzZWQgdG8gcmVzdW1lIHRoZSBvcmlnaW5hbCBIVFRQIHJlcXVlc3QuXG4gICAgICpcbiAgICAgKiBJZiByZWplY3RpbmcsIGltbWVkaWF0ZWx5IGRlbGV0ZXMgdGhlIHBlbmRpbmcgTUZBIHJlcXVlc3QuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJtZmFWb3RlRW1haWxDb21wbGV0ZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L21mYS97bWZhX2lkfS9maWRvXCI6IHtcbiAgICAvKipcbiAgICAgKiBJbml0aWF0ZSBhIEZJRE8gTUZBIEFwcHJvdmFsL1JlamVjdGlvblxuICAgICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSBhIEZJRE8gTUZBIEFwcHJvdmFsL1JlamVjdGlvblxuICAgICAqXG4gICAgICogSW5pdGlhdGVzIHRoZSBhcHByb3ZhbC9yZWplY3Rpb24gcHJvY2VzcyBvZiBhbiBNRkEgUmVxdWVzdCB1c2luZyBGSURPLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJtZmFGaWRvSW5pdFwiXTtcbiAgICAvKipcbiAgICAgKiBGaW5hbGl6ZSBhIEZJRE8gTUZBIEFwcHJvdmFsL1JlamVjdGlvblxuICAgICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSBhIEZJRE8gTUZBIEFwcHJvdmFsL1JlamVjdGlvblxuICAgICAqXG4gICAgICogSWYgYXBwcm92aW5nLCBhZGRzIGFuIGFwcHJvdmVyIHRvIGEgcGVuZGluZyBNRkEgcmVxdWVzdC5cbiAgICAgKiBJZiB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIGFwcHJvdmVycyBpcyByZWFjaGVkLCB0aGUgTUZBIHJlcXVlc3QgaXMgYXBwcm92ZWQ7XG4gICAgICogdGhlIGNvbmZpcm1hdGlvbiByZWNlaXB0IGNhbiBiZSB1c2VkIHRvIHJlc3VtZSB0aGUgb3JpZ2luYWwgSFRUUCByZXF1ZXN0LlxuICAgICAqXG4gICAgICogSWYgcmVqZWN0aW5nLCBpbW1lZGlhdGVseSBkZWxldGVzIHRoZSBwZW5kaW5nIE1GQSByZXF1ZXN0LlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1wibWZhVm90ZUZpZG9Db21wbGV0ZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L21mYS97bWZhX2lkfS90b3RwXCI6IHtcbiAgICAvKipcbiAgICAgKiBBcHByb3ZlL1JlamVjdCBhIFRPVFAgTUZBIFJlcXVlc3RcbiAgICAgKiBAZGVzY3JpcHRpb24gQXBwcm92ZS9SZWplY3QgYSBUT1RQIE1GQSBSZXF1ZXN0XG4gICAgICpcbiAgICAgKiBJZiBhcHByb3ZpbmcsIGFkZHMgdGhlIGN1cnJlbnQgdXNlciBhcyBhcHByb3ZlciB0byBhIHBlbmRpbmcgTUZBIHJlcXVlc3QgYnlcbiAgICAgKiBwcm92aWRpbmcgVE9UUCBjb2RlLiBJZiB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIGFwcHJvdmVycyBpcyByZWFjaGVkLCB0aGUgTUZBIHJlcXVlc3QgaXNcbiAgICAgKiBhcHByb3ZlZDsgdGhlIGNvbmZpcm1hdGlvbiByZWNlaXB0IGNhbiBiZSB1c2VkIHRvIHJlc3VtZSB0aGUgb3JpZ2luYWwgSFRUUCByZXF1ZXN0LlxuICAgICAqXG4gICAgICogSWYgcmVqZWN0aW5nLCBpbW1lZGlhdGVseSBkZWxldGVzIHRoZSBwZW5kaW5nIE1GQSByZXF1ZXN0LlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1wibWZhVm90ZVRvdHBcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9tbWkvdjMvbWVzc2FnZXNcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgcGVuZGluZyBNTUkgcmVxdWVzdHNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBwZW5kaW5nIE1NSSByZXF1ZXN0c1xuICAgICAqXG4gICAgICogUmV0cmlldmVzIGFuZCByZXR1cm5zIGFsbCBwZW5kaW5nIE1NSSBtZXNzYWdlcyBhY2Nlc3NpYmxlIHRvIHRoZSBjdXJyZW50IHNlc3Npb24gaWRlbnRpdHksIGkuZS4sXG4gICAgICogLSBhIHJvbGUgc2Vzc2lvbiBjYW4gYWNjZXNzIG9ubHkgdGhlIG1lc3NhZ2VzIGNyZWF0ZWQgYnkgdGhhdCByb2xlXG4gICAgICogLSBhIHVzZXIgc2Vzc2lvbiBjYW4gYWNjZXNzIHRoZSBtZXNzYWdlcyBjcmVhdGVkIGJ5IGVpdGhlciB0aGF0IHVzZXIgb3IgYW55IHJvbGUgd2hpY2ggdGhlIHVzZXIgaXMgYSBtZW1iZXIgb2ZcbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJtbWlNZXNzYWdlTGlzdFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L21taS92My9tZXNzYWdlcy97bXNnX2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IGFuIE1NSSByZXF1ZXN0XG4gICAgICogQGRlc2NyaXB0aW9uIEdldCBhbiBNTUkgcmVxdWVzdFxuICAgICAqXG4gICAgICogUmV0cmlldmVzIGEgcGVuZGluZyBNTUkgcmVxdWVzdCBieSBpdHMgSUQuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibW1pTWVzc2FnZUdldFwiXTtcbiAgICAvKipcbiAgICAgKiBEZWxldGUgYW4gTU1JIHJlcXVlc3RcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIGFuIE1NSSByZXF1ZXN0XG4gICAgICpcbiAgICAgKiBSZWplY3RzIGFuIGV4aXN0aW5nIE1NSSByZXF1ZXN0IGFuZCB0aGVuIGRlbGV0ZXMgaXQgZnJvbSB0aGUgZGF0YWJhc2UuXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1wibW1pTWVzc2FnZURlbGV0ZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L21taS92My9tZXNzYWdlcy97bXNnX2lkfS9yZWplY3RcIjoge1xuICAgIC8qKlxuICAgICAqIFJlamVjdCBhbiBNTUkgcmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBSZWplY3QgYW4gTU1JIHJlcXVlc3RcbiAgICAgKlxuICAgICAqIFJlamVjdHMgYSBwZW5kaW5nIE1NSSByZXF1ZXN0LiBUaGUgcmVjb3JkIG9mIHRoZSBNTUkgcmVxdWVzdCBpcyBrZXB0IGluXG4gICAgICogdGhlIGRhdGFiYXNlIHVudGlsIGl0IGV4cGlyZXMgb3IgaXMgZXhwbGljaXRseSBkZWxldGVkLlxuICAgICAqXG4gICAgICogUmV0dXJucyB0aGUgdXBkYXRlZCByZXF1ZXN0IGluZm9ybWF0aW9uLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJtbWlNZXNzYWdlUmVqZWN0XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vbW1pL3YzL21lc3NhZ2VzL3ttc2dfaWR9L3NpZ25cIjoge1xuICAgIC8qKlxuICAgICAqIEFwcHJvdmUgYW5kIHNpZ24gYW4gTU1JIHJlcXVlc3RcbiAgICAgKiBAZGVzY3JpcHRpb24gQXBwcm92ZSBhbmQgc2lnbiBhbiBNTUkgcmVxdWVzdFxuICAgICAqXG4gICAgICogU2lnbnMgYSBwZW5kaW5nIHJlcXVlc3QgdGhhdCB3YXMgZ2VuZXJhdGVkIHRocm91Z2ggdGhlIE1NSSBKU09OIFJQQyBlbmRwb2ludC5cbiAgICAgKiBUaGUgc2lnbmF0dXJlIGlzIHN0b3JlZCB3aXRoIHRoZSBwZW5kaW5nIG1lc3NhZ2UgYW5kIHRoZSB1cGRhdGVkIHJlcXVlc3QgaW5mbyBpcyByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIFRoZSBtZXNzYWdlIHNob3VsZCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIG9yZ2FuaXphdGlvbiB0aGlzIGlzIGNhbGxlZCBmcm9tLFxuICAgICAqIGFuZCB0aGUgdXNlciBzaG91bGQgYmUgdGhlIG93bmVyIG9mIHRoZSBjb3JyZXNwb25kaW5nIG1lc3NhZ2UncyBrZXkuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcIm1taU1lc3NhZ2VTaWduXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vb2F1dGgyL3R3aXR0ZXJcIjoge1xuICAgIC8qKlxuICAgICAqIE1pbnQgYW4gT0lEQyBJRCB0b2tlbiBmb3IgVHdpdHRlclxuICAgICAqIEBkZXNjcmlwdGlvbiBNaW50IGFuIE9JREMgSUQgdG9rZW4gZm9yIFR3aXR0ZXJcbiAgICAgKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gYWN0cyBpZGVudGljYWxseSB0byBUd2l0dGVyJ3MgW2BvYXV0aDIvdG9rZW5gXShodHRwczovL2RldmVsb3Blci50d2l0dGVyLmNvbS9lbi9kb2NzL2F1dGhlbnRpY2F0aW9uL2FwaS1yZWZlcmVuY2UvdG9rZW4pIGVuZHBvaW50LFxuICAgICAqIGJ1dCBleHRlbmRzIHRoZSBvdXRwdXQgd2l0aCBhbiBgaWRfdG9rZW5gLlxuICAgICAqXG4gICAgICogVGhpcyBgaWRfdG9rZW5gIGNhbiB0aGVuIGJlIHVzZWQgd2l0aCBhbnkgQ3ViZVNpZ25lciBlbmRwb2ludCB0aGF0IHJlcXVpcmVzIGFuIE9JREMgdG9rZW4uXG4gICAgICpcbiAgICAgKiA+IFshSU1QT1JUQU5UXVxuICAgICAqID4gVGhpcyBlbmRwb2ludCB3aWxsIGZhaWwgdW5sZXNzIHRoZSBvcmcgaXMgY29uZmlndXJlZCB0byBhbGxvdyB0aGUgaXNzdWVyIGBodHRwczovL3NoaW0ub2F1dGgyLmN1YmlzdC5kZXYvdHdpdHRlcmAgYW5kIGNsaWVudCBJRCBiZWluZyB1c2VkIGZvciBUd2l0dGVyLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJvYXV0aDJUd2l0dGVyXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vb2lkY1wiOiB7XG4gICAgLyoqXG4gICAgICogTG9naW4gd2l0aCBPSURDXG4gICAgICogQGRlc2NyaXB0aW9uIExvZ2luIHdpdGggT0lEQ1xuICAgICAqXG4gICAgICogRXhjaGFuZ2UgYW4gT0lEQyBJRCB0b2tlbiAocGFzc2VkIHZpYSB0aGUgYEF1dGhvcml6YXRpb25gIGhlYWRlcikgZm9yIGEgc2lnbmVyIHNlc3Npb24uXG4gICAgICpcbiAgICAgKiBNRkEgaXMgcmVxdWlyZWQgd2hlbjpcbiAgICAgKiAtIGFuIE1GQSBwb2xpY3kgaXMgZXhwbGljaXRseSBhdHRhY2hlZCB0byB0aGUgdXNlciBsb2dnaW5nIGluXG4gICAgICogKGUuZy4sIGFuIG9yZyBvd25lciBjYW4gZG8gdGhhdCBhdCB1c2VyIGNyZWF0aW9uIHRpbWUgdG8gcmVxdWlyZSBjZXJ0YWluIGtpbmQgb2YgTUZBKVxuICAgICAqIC0gdGhlIHVzZXIgaGFzIGF0IGxlYXN0IDEgTUZBIGZhY3RvciBjb25maWd1cmVkXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcIm9pZGNBdXRoXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vb2lkYy9lbWFpbC1vdHBcIjoge1xuICAgIC8qKlxuICAgICAqIEluaXRpYXRlIGxvZ2luIHZpYSBlbWFpbCB0b2tlblxuICAgICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSBsb2dpbiB2aWEgZW1haWwgdG9rZW5cbiAgICAgKlxuICAgICAqIFRoaXMgZW5kcG9pbnQgZ2VuZXJhdGVzIGFuIE9JREMgdG9rZW4gd2l0aG91dCBhIHNpZ25hdHVyZSAob2YgdGhlIGZvcm0gYGhlYWRlci5wYXlsb2FkLmApLCBhbmQgc2VuZHMgdGhlIHNpZ25hdHVyZSB0byB0aGUgdXNlcidzIGVtYWlsLlxuICAgICAqIENsaWVudCBhcHBsaWNhdGlvbnMgY2FuIHJlY29uc3RydWN0IHRoZSB0b2tlbiBieSBjb25jYXRlbmF0aW5nIHRoZSBgcGFydGlhbF90b2tlbmAgd2l0aCB0aGUgc2lnbmF0dXJlLCBwcm9kdWNpbmcgYSB2YWxpZCBPSURDIHRva2VuIG9mIHRoZSBmb3JtIGBoZWFkZXIucGF5bG9hZC5zaWduYXR1cmVgXG4gICAgICogVGhlIHRva2VuIGNhbiB0aGVuIGJlIHVzZWQgdG8gYXV0aGVudGljYXRlIHRoZSB1c2VyLlxuICAgICAqXG4gICAgICogPiBbIUlNUE9SVEFOVF1cbiAgICAgKiA+IEZvciB0aGlzIGVuZHBvaW50IHRvIHN1Y2NlZWQsIHRoZSBvcmcgbXVzdCBiZSBjb25maWd1cmVkIHRvOlxuICAgICAqID4gMS4gQWxsb3cgdGhlIGlzc3VlciBgaHR0cHM6Ly9zaGltLm9hdXRoMi5jdWJpc3QuZGV2L2VtYWlsLW90cGAgYW5kIGNsaWVudCBJRCBiZWluZyB0aGUgT3JnIElEXG4gICAgICogPiAyLiBIYXZlIGFuIGVtYWlsIHNlbmRlciBjb25maWd1cmVkIGZvciBPVFBzXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImVtYWlsT3RwQXV0aFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L29pZGMvc2l3ZVwiOiB7XG4gICAgLyoqXG4gICAgICogSW5pdGlhdGUgbG9naW4gdmlhIFNpZ24taW4gV2l0aCBFdGhlcmV1bSAoU0lXRSkuXG4gICAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIGxvZ2luIHZpYSBTaWduLWluIFdpdGggRXRoZXJldW0gKFNJV0UpLlxuICAgICAqXG4gICAgICogVGhpcyBlbmRwb2ludCBnZW5lcmF0ZXMgYSBjaGFsbGVuZ2Ugd2hpY2ggY2FuIGJlIGFuc3dlcmVkICh2aWEgdGhlIGNvcnJlc3BvbmRpbmcgUEFUQ0ggZW5kcG9pbnQpXG4gICAgICogdG8gb2J0YWluIGFuIE9JREMgdG9rZW4uIFRoZSBPSURDIHRva2VuIGNhbiB0aGVuIGJlIGV4Y2hhbmdlZCBmb3IgYSB1c2VyIHNlc3Npb24gdmlhIHRoZSBzdGFuZGFyZFxuICAgICAqIE9JREMgYXV0aCByb3V0ZS5cbiAgICAgKlxuICAgICAqID4gWyFJTVBPUlRBTlRdXG4gICAgICogPiBGb3IgdGhpcyBlbmRwb2ludCB0byBzdWNjZWVkLCB0aGUgb3JnIG11c3QgYmUgY29uZmlndXJlZCB0bzpcbiAgICAgKiA+IEFsbG93IHRoZSBpc3N1ZXIgYGh0dHBzOi8vc2hpbS5vYXV0aDIuY3ViaXN0LmRldi9zaXdlYCB3aXRoIHRoZSBPcmcgSUQgYXMgdGhlIGNsaWVudCBJRFxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJzaXdlSW5pdFwiXTtcbiAgICAvKipcbiAgICAgKiBDb21wbGV0ZSBsb2dpbiB2aWEgU2lnbi1pbiBXaXRoIEV0aGVyZXVtIChTSVdFKVxuICAgICAqIEBkZXNjcmlwdGlvbiBDb21wbGV0ZSBsb2dpbiB2aWEgU2lnbi1pbiBXaXRoIEV0aGVyZXVtIChTSVdFKVxuICAgICAqXG4gICAgICogSWYgdGhlIGNoYWxsZW5nZSAoaXNzdWVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIFBPU1QgZW5kcG9pbnQpIGlzIGFuc3dlcmVkIGNvcnJlY3RseSwgdGhpcyBlbmRwb2ludFxuICAgICAqIGdlbmVyYXRlcyBhbiBPSURDIHRva2VuIHRoYXQgY2FuIHRoZW4gYmUgZXhjaGFuZ2VkIGZvciBhIHVzZXIgc2Vzc2lvbiB2aWEgdGhlIHN0YW5kYXJkIE9JREMgYXV0aCByb3V0ZS5cbiAgICAgKlxuICAgICAqID4gWyFJTVBPUlRBTlRdXG4gICAgICogPiBGb3IgdGhpcyBlbmRwb2ludCB0byBzdWNjZWVkLCB0aGUgb3JnIG11c3QgYmUgY29uZmlndXJlZCB0bzpcbiAgICAgKiA+IEFsbG93IHRoZSBpc3N1ZXIgYGh0dHBzOi8vc2hpbS5vYXV0aDIuY3ViaXN0LmRldi9zaXdlYCB3aXRoIHRoZSBPcmcgSUQgYXMgdGhlIGNsaWVudCBJRFxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1wic2l3ZUNvbXBsZXRlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vb2lkYy90ZWxlZ3JhbVwiOiB7XG4gICAgLyoqXG4gICAgICogQWxsb3dzIGEgdXNlciB0byBhdXRoZW50aWNhdGUgd2l0aCB0aGUgdGVsZWdyYW0gQVBJIHVzaW5nIHRoZSB0Z1dlYkFwcERhdGEgdmFsdWVcbiAgICAgKiBAZGVzY3JpcHRpb24gQWxsb3dzIGEgdXNlciB0byBhdXRoZW50aWNhdGUgd2l0aCB0aGUgdGVsZWdyYW0gQVBJIHVzaW5nIHRoZSB0Z1dlYkFwcERhdGEgdmFsdWVcbiAgICAgKiBUaGUgdG9rZW4gaGFzIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAgICAgKiAtIFRoZSBgc3ViYCBmaWVsZCBpcyB0aGUgdGVsZWdyYW0gdXNlciBJRFxuICAgICAqIC0gVGhlIGBpc3NgIGZpZWxkIGRlcGVuZHMgb24gdGhlIGNob3NlbiBlbnZpcm9ubWVudDpcbiAgICAgKiAtIGBodHRwczovL3NoaW0ub2F1dGgyLmN1YmlzdC5kZXYvdGVsZWdyYW0vcHJvZHVjdGlvbmAgZm9yIHRoZSBwcm9kdWN0aW9uIGVudmlyb25tZW50XG4gICAgICogLSBgaHR0cHM6Ly9zaGltLm9hdXRoMi5jdWJpc3QuZGV2L3RlbGVncmFtL3Rlc3RgIGZvciB0aGUgdGVzdCBlbnZpcm9ubWVudFxuICAgICAqIC0gVGhlIGBhdWRgIGZpZWxkIGlzIHRoZSBwcm92aWRlZCB0ZWxlZ3JhbSBib3QgSURcbiAgICAgKiAtIFRoZSBgZXhwYCBmaWVsZCBpcyBkZXJpdmVkIGZyb20gdGhlIGBhdXRoX2RhdGVgIGZpZWxkIGluIHRoZSB0ZWxlZ3JhbSBkYXRhXG4gICAgICpcbiAgICAgKiBGYWlscyBpZiB0aGUgdGVsZWdyYW0gZGF0YSBpcyBpbnZhbGlkIG9yIHRoZSBzaWduYXR1cmUgaXMgaW52YWxpZFxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJ0ZWxlZ3JhbUF1dGhcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9vcmdzXCI6IHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgT3JnXG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBPcmdcbiAgICAgKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgb3JnYW5pemF0aW9uLiBUaGUgbmV3IG9yZyBpcyBhIGNoaWxkIG9mIHRoZVxuICAgICAqIGN1cnJlbnQgb3JnIGFuZCBpbmhlcml0cyBpdHMga2V5LWV4cG9ydCBwb2xpY3kuIFRoZSBuZXcgb3JnXG4gICAgICogaXMgY3JlYXRlZCB3aXRoIG9uZSBvd25lciwgdGhlIGNhbGxlciBvZiB0aGlzIEFQSS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3JlYXRlT3JnXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcG9saWNpZXNcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgUG9saWNpZXNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBQb2xpY2llc1xuICAgICAqXG4gICAgICogUmV0dXJucyB0aGUgbGlzdCBvZiBhbGwgcG9saWNpZXMgaW4gdGhlIE9yZy5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0UG9saWNpZXNcIl07XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIFBvbGljeVxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgUG9saWN5XG4gICAgICpcbiAgICAgKiBDcmVhdGVzIGEgbmV3IG5hbWVkIHBvbGljeSBpbiB0aGUgb3JnYW5pemF0aW9uLiBUaGUgdXNlciBtYWtpbmcgdGhlIHJlcXVlc3QgaXMgdGhlXG4gICAgICogb3duZXIgb2YgdGhlIHBvbGljeSwgZ2l2aW5nIHRoZW0gZWRpdCBhY2Nlc3MgdG8gdGhlIHBvbGljeSBhbG9uZyB3aXRoIHRoZSBvcmcgb3duZXJzLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJjcmVhdGVQb2xpY3lcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9wb2xpY2llcy97cG9saWN5X2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogRGVsZXRlIFBvbGljeVxuICAgICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgUG9saWN5XG4gICAgICpcbiAgICAgKiBEZWxldGUgdGhlIG5hbWVkIHBvbGljeSB3aXRoIHRoZSBnaXZlbiBuYW1lIG9yIGlkLlxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcImRlbGV0ZVBvbGljeVwiXTtcbiAgICAvKipcbiAgICAgKiBVcGRhdGUgUG9saWN5XG4gICAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBQb2xpY3lcbiAgICAgKlxuICAgICAqIFVwZGF0ZXMgdGhlIHBvbGljeSB3aXRoIHRoZSBnaXZlbiBuYW1lIG9yIGlkLlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1widXBkYXRlUG9saWN5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcG9saWNpZXMve3BvbGljeV9pZH0vbG9nc1wiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IFBvbGljeSBMb2dzXG4gICAgICogQGRlc2NyaXB0aW9uIEdldCBQb2xpY3kgTG9nc1xuICAgICAqXG4gICAgICogUmV0dXJucyB0aGUgbG9ncyBmb3IgdGhlIGdpdmVuIHBvbGljeSwgd2l0aGluIHRoZSBnaXZlbiB0aW1lZnJhbWUuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImdldFBvbGljeUxvZ3NcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9wb2xpY2llcy97cG9saWN5X2lkfS97dmVyc2lvbn1cIjoge1xuICAgIC8qKlxuICAgICAqIEdldCBQb2xpY3lcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IFBvbGljeVxuICAgICAqXG4gICAgICogUmV0dXJucyB0aGUgc3BlY2lmaWVkIHZlcnNpb24gb3IgbGF0ZXN0IG9mIGEgbmFtZWQgcG9saWN5IHdpdGggdGhlIGdpdmVuIG5hbWUgb3IgaWQuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiZ2V0UG9saWN5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcG9saWNpZXMve3BvbGljeV9pZH0ve3ZlcnNpb259L2ludm9rZVwiOiB7XG4gICAgLyoqXG4gICAgICogSW52b2tlIFBvbGljeVxuICAgICAqIEBkZXNjcmlwdGlvbiBJbnZva2UgUG9saWN5XG4gICAgICpcbiAgICAgKiBJbnZva2VzIHRoZSBbTmFtZWRQb2xpY3ldIHdpdGggdGhlIGdpdmVuIElEIHdpdGggdGhlIGdpdmVuIHJlcXVlc3QgaW5mb3JtYXRpb24uXG4gICAgICogSXQgaXMgb25seSBzdXBwb3J0ZWQgZm9yIFdhc20gcG9saWNpZXMuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImludm9rZVBvbGljeVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3BvbGljeS9pbXBvcnRfa2V5XCI6IHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgUG9saWN5IEltcG9ydCBLZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIFBvbGljeSBJbXBvcnQgS2V5XG4gICAgICpcbiAgICAgKiBHZW5lcmF0ZSBhbiBlcGhlbWVyYWwga2V5IHRoYXQgYSBjbGllbnQgY2FuIHVzZSBmb3IgZW5jcnlwdGluZyBkYXRhIHJlbGF0ZWQgdG8gV2FzbVxuICAgICAqIHBvbGljaWVzIChlLmcuLCBwb2xpY3kgc2VjcmV0cykuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiY3JlYXRlUG9saWN5SW1wb3J0S2V5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcG9saWN5L3NlY3JldHNcIjoge1xuICAgIC8qKlxuICAgICAqIEdldCB0aGUgb3JnLXdpZGUgcG9saWN5IHNlY3JldHMuXG4gICAgICogQGRlc2NyaXB0aW9uIEdldCB0aGUgb3JnLXdpZGUgcG9saWN5IHNlY3JldHMuXG4gICAgICpcbiAgICAgKiBOb3RlIHRoYXQgdGhpcyBvbmx5IHJldHVybnMgdGhlIGtleXMgZm9yIHRoZSBzZWNyZXRzLCBvbWl0aW5nIHRoZSB2YWx1ZXMuXG4gICAgICogVGhlIHZhbHVlcyBhcmUgc2VjcmV0IGFuZCBhcmUgbm90IGFjY2Vzc2libGUgb3V0c2lkZSBXYXNtIHBvbGljeSBleGVjdXRpb24uXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiZ2V0UG9saWN5U2VjcmV0c1wiXTtcbiAgICAvKipcbiAgICAgKiBVcGRhdGUgb3JnLWxldmVsIHBvbGljeSBzZWNyZXRzXG4gICAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBvcmctbGV2ZWwgcG9saWN5IHNlY3JldHNcbiAgICAgKlxuICAgICAqIFRoZSBwcm92aWRlZCBzZWNyZXRzIHdpbGwgcmVwbGFjZSBhbnkgZXhpc3Rpbmcgb3JnLWxldmVsIHNlY3JldHMuXG4gICAgICogSXQgZmFpbHMgaWYgdGhlIHNlY3JldHMgd2VyZW4ndCBwcmV2aW91c2x5IGNyZWF0ZWQuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJ1cGRhdGVQb2xpY3lTZWNyZXRzXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcG9saWN5L3NlY3JldHMve3NlY3JldF9uYW1lfVwiOiB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIG9yIG92ZXJ3cml0ZSBhbiBvcmctbGV2ZWwgcG9saWN5IHNlY3JldFxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgb3Igb3ZlcndyaXRlIGFuIG9yZy1sZXZlbCBwb2xpY3kgc2VjcmV0XG4gICAgICovXG4gICAgcHV0OiBvcGVyYXRpb25zW1wic2V0UG9saWN5U2VjcmV0XCJdO1xuICAgIC8qKlxuICAgICAqIERlbGV0ZSBhbiBvcmctbGV2ZWwgcG9saWN5IHNlY3JldFxuICAgICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgYW4gb3JnLWxldmVsIHBvbGljeSBzZWNyZXRcbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJkZWxldGVQb2xpY3lTZWNyZXRcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9wb2xpY3kvd2FzbVwiOiB7XG4gICAgLyoqXG4gICAgICogVXBsb2FkIFdhc20gUG9saWN5XG4gICAgICogQGRlc2NyaXB0aW9uIFVwbG9hZCBXYXNtIFBvbGljeVxuICAgICAqXG4gICAgICogUmV0dXJucyBhIHNpZ25lZCBVUkwgZm9yIHVwbG9hZGluZyBhIHdhc20gcG9saWN5IHRvIEN1YmVTaWduZXIuIFRoZSBwb2xpY3kgd2lsbCBiZVxuICAgICAqIGRlbGV0ZWQgaWYgbm90IGF0dGFjaGVkIHRvIGEgW05hbWVkUG9saWN5XSBzb29uIGFmdGVyIHRoZSB1cGxvYWQgaGFzIGJlZW4gY29tcGxldGVkLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJ1cGxvYWRXYXNtUG9saWN5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXNcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgUm9sZXNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBSb2xlc1xuICAgICAqXG4gICAgICogUmV0cmlldmVzIGFsbCByb2xlcyBpbiBhbiBvcmdhbml6YXRpb24gdGhhdCB0aGUgY3VycmVudCB1c2VyIGlzIGFsbG93ZWQgdG8gYWNjZXNzLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RSb2xlc1wiXTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgUm9sZVxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgUm9sZVxuICAgICAqXG4gICAgICogQ3JlYXRlcyBhIG5ldyByb2xlIGluIGFuIG9yZ2FuaXphdGlvbi4gVW5sZXNzIHRoZSBsb2dnZWQtaW4gdXNlclxuICAgICAqIGlzIHRoZSBvd25lciwgdGhleSBhcmUgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgbmV3bHkgY3JlYXRlZCByb2xlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJjcmVhdGVSb2xlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXMve3JvbGVfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgUm9sZVxuICAgICAqIEBkZXNjcmlwdGlvbiBHZXQgUm9sZVxuICAgICAqXG4gICAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IGEgcm9sZSBpbiBhbiBvcmdhbml6YXRpb25cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJnZXRSb2xlXCJdO1xuICAgIC8qKlxuICAgICAqIERlbGV0ZSBSb2xlXG4gICAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBSb2xlXG4gICAgICpcbiAgICAgKiBEZWxldGVzIGEgcm9sZSBpbiBhbiBvcmdhbml6YXRpb24uXG4gICAgICpcbiAgICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIGNhbiBwZXJmb3JtIHRoaXMgYWN0aW9uLlxuICAgICAqIEFkZGl0aW9uYWxseSwgdGhlIHJvbGUncyBlZGl0IHBvbGljeSAoaWYgc2V0KSBtdXN0IHBlcm1pdCB0aGUgdXBkYXRlLlxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcImRlbGV0ZVJvbGVcIl07XG4gICAgLyoqXG4gICAgICogVXBkYXRlIFJvbGVcbiAgICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlIFJvbGVcbiAgICAgKlxuICAgICAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgYSByb2xlICh0aGlzIHJlcXVpcmVzIHRoZSBgbWFuYWdlOnJvbGU6dXBkYXRlOmVuYWJsZWAgc2NvcGUpLlxuICAgICAqIFVwZGF0ZXMgdGhlIHJvbGUncyBwb2xpY2llcyAodGhpcyByZXF1aXJlcyB0aGUgYG1hbmFnZTpyb2xlOnVwZGF0ZTpwb2xpY3lgIHNjb3BlKS5cbiAgICAgKiBVcGRhdGVzIHRoZSByb2xlJ3MgZWRpdCBwb2xpY2llcyAodGhpcyByZXF1aXJlcyB0aGUgYG1hbmFnZTpyb2xlOnVwZGF0ZTplZGl0UG9saWN5YCBzY29wZSkuXG4gICAgICpcbiAgICAgKiBUaGUgdXNlciBtdXN0IGJlIGluIHRoZSByb2xlIG9yIGFuIG93bmVyIG9mIHRoZSBvcmdhbml6YXRpb24uXG4gICAgICogQWRkaXRpb25hbGx5LCB0aGUgcm9sZSdzIGVkaXQgcG9saWN5IChpZiBzZXQpIG11c3QgcGVybWl0IHRoZSB1cGRhdGUuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJ1cGRhdGVSb2xlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXMve3JvbGVfaWR9L2FkZF9rZXlzXCI6IHtcbiAgICAvKipcbiAgICAgKiBBZGQgS2V5c1xuICAgICAqIEBkZXNjcmlwdGlvbiBBZGQgS2V5c1xuICAgICAqXG4gICAgICogQWRkcyBhIGxpc3Qgb2YgZXhpc3Rpbmcga2V5cyB0byBhbiBleGlzdGluZyByb2xlLlxuICAgICAqXG4gICAgICogVGhlIGtleSBvd25lciBpcyBhbGxvd2VkIHRvIGFkZCB0aGVpciBrZXkgdG8gYW55IHJvbGUgdGhhdCB0aGV5IGFyZSBpbi5cbiAgICAgKlxuICAgICAqIEluIFwib3JnIGN1c3RvZHlcIiBtb2RlbCBvbmx5LCBvcmcgb3duZXJzIGFyZSBhbGxvd2VkIHRvIGFkZCBhbnkga2V5IHRvIGFueSByb2xlLlxuICAgICAqXG4gICAgICogSW4gYWxsIGNhc2VzOiB0aGUgcm9sZSdzIGVkaXQgcG9saWN5LCBhcyB3ZWxsIGFzIHRoZSBlZGl0IHBvbGljeSBvZiBlYWNoIG9mIHRoZSBrZXlzLCBtdXN0IHBlcm1pdCB0aGUgdXBkYXRlLlxuICAgICAqXG4gICAgICogRWFjaCByZXF1ZXN0IHRvIHRoaXMgZW5kcG9pbnQgY2FuIGFkZCwgYXQgbWF4aW11bSwgMzIga2V5cy5cbiAgICAgKi9cbiAgICBwdXQ6IG9wZXJhdGlvbnNbXCJhZGRLZXlzVG9Sb2xlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXMve3JvbGVfaWR9L2FkZF91c2VyL3t1c2VyX2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogQWRkIFVzZXJcbiAgICAgKiBAZGVzY3JpcHRpb24gQWRkIFVzZXJcbiAgICAgKlxuICAgICAqIEFkZHMgYW4gZXhpc3RpbmcgdXNlciB0byBhbiBleGlzdGluZyByb2xlLlxuICAgICAqXG4gICAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBvciBvcmcgb3duZXJzIGNhbiBhZGQgdXNlcnMgdG8gYSByb2xlLlxuICAgICAqIEFkZGl0aW9uYWxseSwgdGhlIHJvbGUncyBlZGl0IHBvbGljeSAoaWYgc2V0KSBtdXN0IHBlcm1pdCB0aGUgdXBkYXRlLlxuICAgICAqL1xuICAgIHB1dDogb3BlcmF0aW9uc1tcImFkZFVzZXJUb1JvbGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9yb2xlcy97cm9sZV9pZH0vYXR0ZXN0XCI6IHtcbiAgICAvKipcbiAgICAgKiBBdHRlc3QgdG8gUm9sZSBQcm9wZXJ0aWVzXG4gICAgICogQGRlc2NyaXB0aW9uIEF0dGVzdCB0byBSb2xlIFByb3BlcnRpZXNcbiAgICAgKlxuICAgICAqIFRoZSByZXNwb25zZSBpcyBhIEpXVCB3aG9zZSBjbGFpbXMgYXJlIHRoZSByZXF1ZXN0ZWQgcm9sZSBwcm9wZXJ0aWVzLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImF0dGVzdFJvbGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9yb2xlcy97cm9sZV9pZH0va2V5c1wiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBSb2xlIEtleXNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBSb2xlIEtleXNcbiAgICAgKlxuICAgICAqIFJldHVybnMgYW4gYXJyYXkgb2YgYWxsIGtleXMgaW4gYSByb2xlLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RSb2xlS2V5c1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzL3tyb2xlX2lkfS9rZXlzL3trZXlfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgYSBLZXkgaW4gUm9sZVxuICAgICAqIEBkZXNjcmlwdGlvbiBHZXQgYSBLZXkgaW4gUm9sZVxuICAgICAqXG4gICAgICogUmV0dXJucyB0aGUga2V5LWluLXJvbGUgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZW4ga2V5IGFuZCByb2xlLiBJZiBgZGV0YWlsc2AgaXMgc2V0IHRvIGB0cnVlYCxcbiAgICAgKiB0aGlzIGVuZHBvaW50IHJldHVybnMgZGV0YWlsZWQga2V5IGluZm9ybWF0aW9uLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImdldFJvbGVLZXlcIl07XG4gICAgLyoqXG4gICAgICogUmVtb3ZlIEtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBSZW1vdmUgS2V5XG4gICAgICpcbiAgICAgKiBSZW1vdmVzIGEgZ2l2ZW4ga2V5IGZyb20gYSByb2xlLlxuICAgICAqXG4gICAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBvciBvcmcgb3duZXJzIGNhbiByZW1vdmUga2V5cyBmcm9tIGEgcm9sZS5cbiAgICAgKiBBZGRpdGlvbmFsbHksIGJvdGggdGhlIHJvbGUncyBhbmQgdGhlIGtleSdzIGVkaXQgcG9saWN5IG11c3QgcGVybWl0IHRoZSB1cGRhdGUuXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1wicmVtb3ZlS2V5RnJvbVJvbGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9yb2xlcy97cm9sZV9pZH0vdG9rZW5zXCI6IHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgVG9rZW5cbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIFRva2VuXG4gICAgICpcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGFjY2VzcyB0b2tlbiBmb3IgYSBnaXZlbiByb2xlICh0byBiZSB1c2VkIGFzIFwiQVBJIEtleVwiIGZvciBhbGwgc2lnbmluZyBhY3Rpb25zKS5cbiAgICAgKiBUaGUgYHJlc3RyaWN0ZWRfYWN0aW9uc2AgZmllbGQgb24gdGhlIFtSb2xlXSBkZXRlcm1pbmVzIHRoZSBtZW1iZXJzaGlwIHJvbGUgdGhhdCBpcyByZXF1aXJlZCB0b1xuICAgICAqIGNyZWF0ZSB0b2tlbnMuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImNyZWF0ZVJvbGVUb2tlblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzL3tyb2xlX2lkfS90eFwiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBIaXN0b3JpY2FsIFRyYW5zYWN0aW9uc1xuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IEhpc3RvcmljYWwgVHJhbnNhY3Rpb25zXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIGEgc29ydGVkLCBwYWdpbmF0ZWQgbGlzdCBvZiB0cmFuc2FjdGlvbnMgc2lnbmVkIGJ5IHRoZSBnaXZlbiByb2xlLFxuICAgICAqIG9yZGVyZWQgZnJvbSBtb3N0IHJlY2VudCBmaXJzdC5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0SGlzdG9yaWNhbFJvbGVUeFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzL3tyb2xlX2lkfS91c2Vyc1wiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBSb2xlIFVzZXJzLlxuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IFJvbGUgVXNlcnMuXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIGFsbCB1c2VycyB3aG8gaGF2ZSBhY2Nlc3MgdG8gYSByb2xlLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RSb2xlVXNlcnNcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9yb2xlcy97cm9sZV9pZH0vdXNlcnMve3VzZXJfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBSZW1vdmUgVXNlclxuICAgICAqIEBkZXNjcmlwdGlvbiBSZW1vdmUgVXNlclxuICAgICAqXG4gICAgICogUmVtb3ZlcyBhbiBleGlzdGluZyB1c2VyIGZyb20gYW4gZXhpc3Rpbmcgcm9sZS5cbiAgICAgKlxuICAgICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgb3Igb3JnIG93bmVycyBjYW4gcmVtb3ZlIHVzZXJzIGZyb20gYSByb2xlLlxuICAgICAqIEFkZGl0aW9uYWxseSwgdGhlIHJvbGUncyBlZGl0IHBvbGljeSAoaWYgc2V0KSBtdXN0IHBlcm1pdCB0aGUgdXBkYXRlLlxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcInJlbW92ZVVzZXJGcm9tUm9sZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3Nlc3Npb25cIjoge1xuICAgIC8qKlxuICAgICAqIExpc3Qgc2Vzc2lvbnNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBzZXNzaW9uc1xuICAgICAqXG4gICAgICogSWYgbm8gcXVlcnkgcGFyYW1ldGVycyBhcmUgcHJvdmlkZWQsIGFsbCBhY3RpdmUgc2Vzc2lvbnMgZm9yIHRoZSBjdXJyZW50IHVzZXIgYXJlIHJldHVybmVkLlxuICAgICAqXG4gICAgICogSWYgYSBgcm9sZWAgcXVlcnkgcGFyYW1ldGVyIGlzIHByb3ZpZGVkLCBhbGwgYWN0aXZlIHNlc3Npb25zIGZvciB0aGUgc2VsZWN0ZWQgcm9sZSBhcmUgcmV0dXJuZWRcbiAgICAgKiAoYXNzZXJ0aW5nIGZpcnN0IHRoYXQgdGhlIGN1cnJlbnQgdXNlciBoYXMgcGVybWlzc2lvbnMgdG8gcmVhZCBzZXNzaW9ucyBmb3IgdGhhdCByb2xlKS5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0U2Vzc2lvbnNcIl07XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIG5ldyB1c2VyIHNlc3Npb24gKG1hbmFnZW1lbnQgYW5kL29yIHNpZ25pbmcpXG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBuZXcgdXNlciBzZXNzaW9uIChtYW5hZ2VtZW50IGFuZC9vciBzaWduaW5nKVxuICAgICAqXG4gICAgICogQ3JlYXRlcyBhIG5ldyB1c2VyIHNlc3Npb24sIHNpbGVudGx5IHRydW5jYXRpbmcgcmVxdWVzdGVkIHNlc3Npb24gYW5kIGF1dGggbGlmZXRpbWVzIHRvIGJlIGF0XG4gICAgICogbW9zdCByZXF1ZXN0b3IncyBzZXNzaW9uIGFuZCBhdXRoIGxpZmV0aW1lLCByZXNwZWN0aXZlbHkuIFRvIGV4dGVuZCB0aGUgcmVxdWVzdGVkIGxpZmV0aW1lcyBwYXN0XG4gICAgICogdGhlIHJlcXVlc3RvcidzLCBzZXQgdGhlIGBleHRlbmRfbGlmZXRpbWVzYCBmbGFnIGluIHRoZSByZXF1ZXN0IGJvZHkgKGluIHdoaWNoIGNhc2UgTUZBIHdpbGxcbiAgICAgKiBiZSByZXF1aXJlZCkuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImNyZWF0ZVNlc3Npb25cIl07XG4gICAgLyoqXG4gICAgICogUmV2b2tlIEFMTCBleGlzdGluZyB1c2VyIG9yIHJvbGUgc2Vzc2lvbihzKVxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXZva2UgQUxMIGV4aXN0aW5nIHVzZXIgb3Igcm9sZSBzZXNzaW9uKHMpXG4gICAgICpcbiAgICAgKiBJbW1lZGlhdGVseSByZXZva2VzIGV4aXN0aW5nIHNlc3Npb25zLCBwcmV2ZW50aW5nIHRoZW0gZnJvbSBiZWluZyB1c2VkIG9yIHJlZnJlc2hlZC5cbiAgICAgKlxuICAgICAqIElmIG5vIHF1ZXJ5IHBhcmFtcyBhcmUgcHJvdmlkZWQsICoqQUxMKiogc2Vzc2lvbnMgZm9yIHRoZSAqKkNVUlJFTlQgVVNFUioqIGFyZSByZXZva2VkXG4gICAgICogKHRvIHJldm9rZSBqdXN0IHRoZSBjdXJyZW50IHVzZXIgc2Vzc2lvbiwgdXNlIGBERUxFVEUgL3YwL29yZy88b3JnX2lkPi9zZXNzaW9uL3NlbGZgKVxuICAgICAqXG4gICAgICogSWYgYSBgcm9sZWAgcXVlcnkgcGFyYW1ldGVyIGlzIHByb3ZpZGVkLCAqKkFMTCoqIHNlc3Npb24gZm9yICoqVEhBVCBST0xFKiogYXJlIHJldm9rZWRcbiAgICAgKiAoaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgcGVybWlzc2lvbnMgdG8gcmV2b2tlIHNlc3Npb25zIGZvciB0aGUgcm9sZSkuXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1wicmV2b2tlU2Vzc2lvbnNcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9zZXNzaW9uL3NlbGZcIjoge1xuICAgIC8qKlxuICAgICAqIFJldm9rZSBjdXJyZW50IHNlc3Npb25cbiAgICAgKiBAZGVzY3JpcHRpb24gUmV2b2tlIGN1cnJlbnQgc2Vzc2lvblxuICAgICAqXG4gICAgICogSW1tZWRpYXRlbHkgcmV2b2tlcyB0aGUgY3VycmVudCBzZXNzaW9uLCBwcmV2ZW50aW5nIGl0IGZyb20gYmVpbmcgdXNlZCBvciByZWZyZXNoZWRcbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJyZXZva2VDdXJyZW50U2Vzc2lvblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3Nlc3Npb24ve3Nlc3Npb25faWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgc2Vzc2lvbiBpbmZvcm1hdGlvblxuICAgICAqIEBkZXNjcmlwdGlvbiBHZXQgc2Vzc2lvbiBpbmZvcm1hdGlvblxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImdldFNlc3Npb25cIl07XG4gICAgLyoqXG4gICAgICogUmV2b2tlIGEgc2Vzc2lvblxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXZva2UgYSBzZXNzaW9uXG4gICAgICpcbiAgICAgKiBJbW1lZGlhdGVseSByZXZva2VzIGFuIGV4aXN0aW5nIHNlc3Npb24sIHByZXZlbnRpbmcgaXQgZnJvbSBiZWluZyB1c2VkIG9yIHJlZnJlc2hlZFxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcInJldm9rZVNlc3Npb25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9zb2xhbmEvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBTb2xhbmEgTWVzc2FnZVxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIFNvbGFuYSBNZXNzYWdlXG4gICAgICpcbiAgICAgKiBTaWducyBhIFNvbGFuYSBtZXNzYWdlIHdpdGggYSBnaXZlbiBrZXkuXG4gICAgICogVGhpcyBpcyBhIHByZS1yZWxlYXNlIGZlYXR1cmUuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInNvbGFuYVNpZ25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9zdWkvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBhIHNlcmlhbGl6ZWQgU1VJIHRyYW5zYWN0aW9uLlxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIGEgc2VyaWFsaXplZCBTVUkgdHJhbnNhY3Rpb24uXG4gICAgICpcbiAgICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wic3VpU2lnblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3RlbmRlcm1pbnQvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBhIHRlbmRlcm1pbnQgbWVzc2FnZS5cbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBhIHRlbmRlcm1pbnQgbWVzc2FnZS5cbiAgICAgKlxuICAgICAqIFNpZ25zIHRoZSBnaXZlbiBiYXNlLTY0IGVuY29kZWQgdm90ZSBvciBwcm9wb3NhbCB3aXRoIHRoZSBnaXZlbiB0ZW5kZXJtaW50IGtleS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1widGVuZGVybWludFNpZ25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS90b2tlbi9rZXlzXCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgVG9rZW4tQWNjZXNzaWJsZSBLZXlzXG4gICAgICogQGRlc2NyaXB0aW9uIEdldCBUb2tlbi1BY2Nlc3NpYmxlIEtleXNcbiAgICAgKlxuICAgICAqIFJldHJpZXZlcyB0aGUga2V5cyB0aGF0IGEgdXNlciBvciByb2xlIHNlc3Npb24gY2FuIGFjY2Vzcy5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0VG9rZW5LZXlzXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlci9tZVwiOiB7XG4gICAgLyoqXG4gICAgICogVXNlciBJbmZvXG4gICAgICogQGRlc2NyaXB0aW9uIFVzZXIgSW5mb1xuICAgICAqXG4gICAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IHVzZXIuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiYWJvdXRNZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3VzZXIvbWUvZW1haWxcIjoge1xuICAgIC8qKlxuICAgICAqIEluaXRpYXRlIFJlc2V0IFZlcmlmaWVkIEVtYWlsIEZsb3dcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgUmVzZXQgVmVyaWZpZWQgRW1haWwgRmxvd1xuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJ1c2VyUmVzZXRFbWFpbEluaXRcIl07XG4gICAgLyoqXG4gICAgICogRmluYWxpemUgYSBSZXNldCBWZXJpZmllZCBFbWFpbCBGbG93XG4gICAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIGEgUmVzZXQgVmVyaWZpZWQgRW1haWwgRmxvd1xuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1widXNlclJlc2V0RW1haWxDb21wbGV0ZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3VzZXIvbWUvZXhwb3J0XCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IG91dHN0YW5kaW5nIHVzZXItZXhwb3J0IHJlcXVlc3RzXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3Qgb3V0c3RhbmRpbmcgdXNlci1leHBvcnQgcmVxdWVzdHNcbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJ1c2VyRXhwb3J0TGlzdFwiXTtcbiAgICAvKipcbiAgICAgKiBJbml0aWF0ZSBhIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgYSB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAgICpcbiAgICAgKiBUaGlzIHN0YXJ0cyBhIGRlbGF5ICh3aG9zZSBsZW5ndGggaXMgZGV0ZXJtaW5lZCBieSBPcmctd2lkZSBzZXR0aW5ncylcbiAgICAgKiBiZWZvcmUgZXhwb3J0IGNhbiBiZSBjb21wbGV0ZWQsIGFuZCByZXR1cm5zIGEgdGlja2V0IHRoYXQgY2FuIGJlIHVzZWRcbiAgICAgKiB0byBjb21wbGV0ZSB0aGUgZXhwb3J0IG9uY2UgdGhlIHRpbWVyIGhhcyBleHBpcmVkLlxuICAgICAqXG4gICAgICogT25seSBvbmUgdXNlci1leHBvcnQgcmVxdWVzdCBjYW4gYmUgYWN0aXZlIGZvciBhIGdpdmVuIGtleS4gSWYgdGhlcmVcbiAgICAgKiBpcyBhbHJlYWR5IGFuIGFjdGl2ZSBleHBvcnQsIHRoaXMgZW5kcG9pbnQgd2lsbCByZXR1cm4gYW4gZXJyb3IuIFRvXG4gICAgICogY3JlYXRlIGEgbmV3IHJlcXVlc3QsIGZpcnN0IGRlbGV0ZSB0aGUgZXhpc3Rpbmcgb25lLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJ1c2VyRXhwb3J0SW5pdFwiXTtcbiAgICAvKipcbiAgICAgKiBEZWxldGUgYW4gZXhpc3RpbmcgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgYW4gZXhpc3RpbmcgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcInVzZXJFeHBvcnREZWxldGVcIl07XG4gICAgLyoqXG4gICAgICogQ29tcGxldGUgYSB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAgICogQGRlc2NyaXB0aW9uIENvbXBsZXRlIGEgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgICAqXG4gICAgICogVGhpcyBlbmRwb2ludCBjYW4gYmUgY2FsbGVkIG9ubHkgYWZ0ZXIgaW5pdGlhdGluZyBhIHVzZXItZXhwb3J0IHJlcXVlc3QgdmlhXG4gICAgICogdGhlIGB1c2VyX2V4cG9ydF9pbml0YCBBUEksIGFuZCBvbmx5IHdpdGhpbiB0aGUgc3Vic2VxdWVudCBleHBvcnQgd2luZG93XG4gICAgICogKGkuZS4sIGFmdGVyIHRoZSBleHBvcnQgZGVsYXkgaGFzIHBhc3NlZCBhbmQgYmVmb3JlIHRoZSByZXF1ZXN0IGhhcyBleHBpcmVkKS5cbiAgICAgKlxuICAgICAqIFRvIGNoZWNrIG9uIHRoZSBzdGF0dXMgb2YgYW4gZXhwb3J0IHJlcXVlc3QsIHNlZSB0aGUgYHVzZXJfZXhwb3J0X2xpc3RgIEFQSS5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInVzZXJFeHBvcnRDb21wbGV0ZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3VzZXIvbWUvZmlkb1wiOiB7XG4gICAgLyoqXG4gICAgICogSW5pdGlhdGUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXkuXG4gICAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5LlxuICAgICAqXG4gICAgICogSWYgYSBkaXNjb3ZlcmFibGUga2V5IGlzIHJlcXVlc3RlZCwgdXNlciB2ZXJpZmljYXRpb24gKFBJTikgaXMgcmVxdWlyZWQuXG4gICAgICpcbiAgICAgKiBHZW5lcmF0ZXMgYSBjaGFsbGVuZ2UgdGhhdCBtdXN0IGJlIGFuc3dlcmVkIHRvIHByb3ZlIG93bmVyc2hpcCBvZiBhIGtleS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1widXNlclJlZ2lzdGVyRmlkb0luaXRcIl07XG4gICAgLyoqXG4gICAgICogRmluYWxpemUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICAgKlxuICAgICAqIEFjY2VwdHMgdGhlIHJlc3BvbnNlIHRvIHRoZSBjaGFsbGVuZ2UgZ2VuZXJhdGVkIGJ5IHRoZSBQT1NUIHRvIHRoaXMgZW5kcG9pbnQuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJ1c2VyUmVnaXN0ZXJGaWRvQ29tcGxldGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS91c2VyL21lL2ZpZG8ve2ZpZG9faWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBEZWxldGUgRklETyBrZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIEZJRE8ga2V5XG4gICAgICpcbiAgICAgKiBEZWxldGVzIGEgRklETyBrZXkgZnJvbSB0aGUgdXNlcidzIGFjY291bnQgKGlmIHRoZSBrZXkgaXMgbm90IHRoZSBzb2xlIE1GQSBmYWN0b3IpLiBNRkEgaXMgYWx3YXlzIHJlcXVpcmVkLlxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcInVzZXJEZWxldGVGaWRvXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlci9tZS90b3RwXCI6IHtcbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplIFRPVFAgUmVzZXRcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhbGl6ZSBUT1RQIFJlc2V0XG4gICAgICpcbiAgICAgKiBDcmVhdGVzIGEgbmV3IFRPVFAgY2hhbGxlbmdlIHRoYXQgbXVzdCBiZSBhbnN3ZXJlZCB0byBwcm92ZSB0aGF0IHRoZSBuZXcgVE9UUFxuICAgICAqIHdhcyBzdWNjZXNzZnVsbHkgaW1wb3J0ZWQgaW50byBhbiBhdXRoZW50aWNhdG9yIGFwcC5cbiAgICAgKlxuICAgICAqIFRoaXMgb3BlcmF0aW9uIGlzIGFsbG93ZWQgaWYgRUlUSEVSXG4gICAgICogLSB0aGUgdXNlciBhY2NvdW50IGlzIG5vdCB5ZXQgaW5pdGlhbGl6ZWQgYW5kIG5vIFRPVFAgaXMgYWxyZWFkeSBzZXQsIE9SXG4gICAgICogLSB0aGUgdXNlciBoYXMgbm90IGNvbmZpZ3VyZWQgYW55IGF1dGggZmFjdG9ycztcbiAgICAgKiBvdGhlcndpc2UsIE1GQSBpcyByZXF1aXJlZC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1widXNlclJlc2V0VG90cEluaXRcIl07XG4gICAgLyoqXG4gICAgICogRGVsZXRlIFRPVFBcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIFRPVFBcbiAgICAgKlxuICAgICAqIERlbGV0ZXMgVE9UUCBmcm9tIHRoZSB1c2VyJ3MgYWNjb3VudCAoaWYgVE9UUCBpcyBub3QgdGhlIHNvbGUgTUZBIGZhY3RvcikuIE1GQSBpcyBhbHdheXMgcmVxdWlyZWQuXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1widXNlckRlbGV0ZVRvdHBcIl07XG4gICAgLyoqXG4gICAgICogRmluYWxpemUgcmVzZXR0aW5nIFRPVFBcbiAgICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgcmVzZXR0aW5nIFRPVFBcbiAgICAgKlxuICAgICAqIENoZWNrcyBpZiB0aGUgcmVzcG9uc2UgY29udGFpbnMgdGhlIGNvcnJlY3QgVE9UUCBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlXG4gICAgICogY2hhbGxlbmdlIGdlbmVyYXRlZCBieSB0aGUgUE9TVCBtZXRob2Qgb2YgdGhpcyBlbmRwb2ludC5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInVzZXJSZXNldFRvdHBDb21wbGV0ZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3VzZXIvbWUvdG90cC92ZXJpZnlcIjoge1xuICAgIC8qKlxuICAgICAqIFZlcmlmeSBUT1RQXG4gICAgICogQGRlc2NyaXB0aW9uIFZlcmlmeSBUT1RQXG4gICAgICpcbiAgICAgKiBDaGVja3MgaWYgYSBnaXZlbiBjb2RlIG1hdGNoZXMgdGhlIGN1cnJlbnQgVE9UUCBjb2RlIGZvciB0aGUgY3VycmVudCB1c2VyLlxuICAgICAqIEVycm9ycyB3aXRoIDQwMyBpZiB0aGUgY3VycmVudCB1c2VyIGhhcyBub3Qgc2V0IHVwIFRPVFAgb3IgdGhlIGNvZGUgZmFpbHMgdmVyaWZpY2F0aW9uLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJ1c2VyVmVyaWZ5VG90cFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3VzZXJzXCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IHVzZXJzIGluIG9yZ2FuaXphdGlvblxuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IHVzZXJzIGluIG9yZ2FuaXphdGlvblxuICAgICAqXG4gICAgICogSWYgYSBxdWVyeSBpcyBkZWZpbmVkLCB0aGUgcmVzdWx0IHdpbGwgY29udGFpbiBvbmx5IHRoZSB1c2VycyB3aG9zZSBuYW1lIG9yXG4gICAgICogZW1haWwgY29udGFpbiB0aGUgcXVlcnkgc3RyaW5nLiBOT1RFIHRoYXQgaWYgcGFnaW5hdGlvbiBpcyB1c2VkIGFuZCBhIHBhZ2VcbiAgICAgKiBsaW1pdCBpcyBzZXQsIHRoZSByZXR1cm5lZCByZXN1bHQgc2V0IG1heSBjb250YWluIEZFV0VSIGVsZW1lbnRzIHRoYW4gdGhlXG4gICAgICogcmVxdWVzdGVkIHBhZ2UgbGltaXQuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibGlzdFVzZXJzSW5PcmdcIl07XG4gICAgLyoqXG4gICAgICogQWRkIGEgdGhpcmQtcGFydHkgdXNlciB0byB0aGUgb3JnXG4gICAgICogQGRlc2NyaXB0aW9uIEFkZCBhIHRoaXJkLXBhcnR5IHVzZXIgdG8gdGhlIG9yZ1xuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJjcmVhdGVPaWRjVXNlclwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3VzZXJzL2VtYWlsL3tlbWFpbH1cIjoge1xuICAgIC8qKlxuICAgICAqIEdldCB1c2VyIGJ5IGVtYWlsLlxuICAgICAqIEBkZXNjcmlwdGlvbiBHZXQgdXNlciBieSBlbWFpbC5cbiAgICAgKlxuICAgICAqIFRoZSBzZWFyY2ggaW5jbHVkZXMgYWxsIHVzZXJzIGFuZCB0aGVpciB0aGlyZC1wYXJ0eSBpZGVudGl0aWVzLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImdldFVzZXJJbk9yZ0J5RW1haWxcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS91c2Vycy9vaWRjXCI6IHtcbiAgICAvKipcbiAgICAgKiBSZW1vdmUgYSB0aGlyZC1wYXJ0eSB1c2VyIGZyb20gdGhlIG9yZ1xuICAgICAqIEBkZXNjcmlwdGlvbiBSZW1vdmUgYSB0aGlyZC1wYXJ0eSB1c2VyIGZyb20gdGhlIG9yZ1xuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcImRlbGV0ZU9pZGNVc2VyXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlcnMvb2lkYy97aXNzfS97c3VifVwiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IGEgdXNlciBieSB0aGVpciBPSURDIGlkZW50aXR5XG4gICAgICogQGRlc2NyaXB0aW9uIEdldCBhIHVzZXIgYnkgdGhlaXIgT0lEQyBpZGVudGl0eVxuICAgICAqXG4gICAgICogUmV0cmlldmVzIGEgdXNlciBpbiB0aGUgb3JnYW5pemF0aW9uIGJ5IHRoZWlyIE9JREMgaXNzdWVyIGFuZCBzdWJqZWN0LlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImdldFVzZXJJbk9yZ0J5T2lkY1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3VzZXJzL3Jlc2V0X21mYVwiOiB7XG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZSBNRkEgcmVzZXQgZm9yIHVzZXJcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhbGl6ZSBNRkEgcmVzZXQgZm9yIHVzZXJcbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wicmVzZXRNZW1iZXJNZmFcIl07XG4gICAgLyoqXG4gICAgICogQ29tcGxldGUgTUZBIHJlc2V0IGZvciB1c2VyXG4gICAgICogQGRlc2NyaXB0aW9uIENvbXBsZXRlIE1GQSByZXNldCBmb3IgdXNlclxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1wiY29tcGxldGVSZXNldE1lbWJlck1mYVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3VzZXJzL3t1c2VyX2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IHVzZXIgYnkgaWRcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IHVzZXIgYnkgaWRcbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJnZXRVc2VySW5PcmdcIl07XG4gICAgLyoqXG4gICAgICogUmVtb3ZlIGEgdXNlciBmcm9tIHRoZSBvcmdcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVtb3ZlIGEgdXNlciBmcm9tIHRoZSBvcmdcbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJkZWxldGVVc2VyXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlcnMve3VzZXJfaWR9L21lbWJlcnNoaXBcIjoge1xuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBhIHVzZXIncyBtZW1iZXJzaGlwIGluIHRoZSBvcmdcbiAgICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlIGEgdXNlcidzIG1lbWJlcnNoaXAgaW4gdGhlIG9yZ1xuICAgICAqXG4gICAgICogRW5hYmxlL2Rpc2FibGUgYW5vdGhlciB1c2VyIGluIHRoZSBvcmcsIG9yIGNoYW5nZSB0aGVpciBtZW1iZXJzaGlwIHJvbGUuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJ1cGRhdGVVc2VyTWVtYmVyc2hpcFwiXTtcbiAgfTtcbiAgXCIvdjAvcGFzc2tleVwiOiB7XG4gICAgLyoqXG4gICAgICogSW5pdGlhdGUgTG9naW4gd2l0aCBQYXNza2V5XG4gICAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIExvZ2luIHdpdGggUGFzc2tleVxuICAgICAqXG4gICAgICogVGhlIHJlc3BvbnNlIGNvbnRhaW5zIGEgRklETyBjaGFsbGVuZ2UgdGhhdCB0aGUgY2xpZW50IG11c3QgYW5zd2VyIHdpdGggYW55IG9mIHRoZWlyXG4gICAgICogZGlzY292ZXJhYmxlIGNyZWRlbnRpYWxzLiAgVGhlIGFuc3dlciBzaG91bGQgYmUgc3VibWl0dGVkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgUEFUQ0ggcmVxdWVzdC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wicGFzc2tleUF1dGhJbml0XCJdO1xuICAgIC8qKlxuICAgICAqIENvbXBsZXRlIExvZ2luIHdpdGggUGFzc2tleVxuICAgICAqIEBkZXNjcmlwdGlvbiBDb21wbGV0ZSBMb2dpbiB3aXRoIFBhc3NrZXlcbiAgICAgKlxuICAgICAqIFRoZSByZXF1ZXN0IHNob3VsZCBjb250YWluIGFuIGFuc3dlciB0byB0aGUgY2hhbGxlbmdlIGlzc3VlZCBieSB0aGUgY29ycmVzcG9uZGluZyBQT1NUIHJlcXVlc3QuXG4gICAgICogVGhlIGNoYWxsZW5nZSBtYXkgYmUgYW5zd2VyZWQgd2l0aCBhbnkgb2YgdGhlIHVzZXIncyBkaXNjb3ZlcmFibGUgY3JlZGVudGlhbHM7IGlmIHRoZSBjcmVkZW50aWFsXG4gICAgICogaW5jbHVkZWQgaW4gdGhlIGFuc3dlciBpcyByZWdpc3RlcmVkIHdpdGggYSB1c2VyIGFuZCBhbiBvcmdhbml6YXRpb24sIHRoZSByZXNwb25zZSB3aWxsIGNvbnRhaW5cbiAgICAgKiBhIEN1YmVTaWduZXIgc2Vzc2lvbiAod2l0aCB0aGUgcGFyYW1ldGVycyBzdXBwbGllZCBpbiB0aGUgcHJldmlvdXMgUE9TVCByZXF1ZXN0KSBmb3IgdGhhdCB1c2VyXG4gICAgICogaW4gdGhhdCBvcmdhbml6YXRpb24uXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJwYXNza2V5QXV0aENvbXBsZXRlXCJdO1xuICB9O1xuICBcIi92MC9wcml2YXRlL3BvbGljeS1leGVjdXRlL3twb2xpY3lfbmFtZX1cIjoge1xuICAgIC8qKlxuICAgICAqIFRoZSBwb2xpY3lfZXhlY3V0ZSBBUEkgZW5kcG9pbnQgaXMgaW50ZW5kZWQgdG8gZGVtb25zdHJhdGUgdGhhdCB0aGUgc2lnbmVyXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSBwb2xpY3lfZXhlY3V0ZSBBUEkgZW5kcG9pbnQgaXMgaW50ZW5kZWQgdG8gZGVtb25zdHJhdGUgdGhhdCB0aGUgc2lnbmVyXG4gICAgICogY2FuIHVzZSB0aGUgcG9saWN5IGVuZ2luZSwgYnkgd2F5IG9mIHRoZSBQb2xpY3lFbmdpbmVDbGllbnQuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInBvbGljeS1leGVjdXRlXCJdO1xuICB9O1xuICBcIi92MC91c2VyL21lL2ZpZG9cIjoge1xuICAgIC8qKlxuICAgICAqIEluaXRpYXRlIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICAgKlxuICAgICAqIERFUFJFQ0FURUQuIFVzZSBgUE9TVCAvdjAvb3JnL3tvcmdfaWR9L3VzZXIvbWUvZmlkb2AgaW5zdGVhZC5cbiAgICAgKlxuICAgICAqIEdlbmVyYXRlcyBhIGNoYWxsZW5nZSB0aGF0IG11c3QgYmUgYW5zd2VyZWQgdG8gcHJvdmUgb3duZXJzaGlwIG9mIGEga2V5XG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInJlZ2lzdGVyRmlkb0luaXRMZWdhY3lcIl07XG4gICAgLyoqXG4gICAgICogRmluYWxpemUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgICAqXG4gICAgICogREVQUkVDQVRFRC4gVXNlIGBQQVRDSCAvdjAvb3JnL3tvcmdfaWR9L3VzZXIvbWUvZmlkb2AgaW5zdGVhZC5cbiAgICAgKlxuICAgICAqIEFjY2VwdHMgdGhlIHJlc3BvbnNlIHRvIHRoZSBjaGFsbGVuZ2UgZ2VuZXJhdGVkIGJ5IHRoZSBQT1NUIHRvIHRoaXMgZW5kcG9pbnQuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJyZWdpc3RlckZpZG9Db21wbGV0ZUxlZ2FjeVwiXTtcbiAgfTtcbiAgXCIvdjAvdXNlci9tZS90b3RwXCI6IHtcbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplIFRPVFAgUmVzZXRcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBkZXNjcmlwdGlvbiBJbml0aWFsaXplIFRPVFAgUmVzZXRcbiAgICAgKlxuICAgICAqIERFUFJFQ0FURUQuIFVzZSBgUE9TVCAvdjAvb3JnL3tvcmdfaWR9L3VzZXIvbWUvdG90cGAgaW5zdGVhZC5cbiAgICAgKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgVE9UUCBjaGFsbGVuZ2UgdGhhdCBtdXN0IGJlIGFuc3dlcmVkIHRvIHByb3ZlIHRoYXQgdGhlIG5ldyBUT1RQXG4gICAgICogd2FzIHN1Y2Nlc3NmdWxseSBpbXBvcnRlZCBpbnRvIGFuIGF1dGhlbnRpY2F0b3IgYXBwLlxuICAgICAqXG4gICAgICogVGhpcyBvcGVyYXRpb24gaXMgYWxsb3dlZCBpZiBFSVRIRVJcbiAgICAgKiAtIHRoZSB1c2VyIGFjY291bnQgaXMgbm90IHlldCBpbml0aWFsaXplZCBhbmQgbm8gVE9UUCBpcyBhbHJlYWR5IHNldCwgT1JcbiAgICAgKiAtIHRoZSB1c2VyIGhhcyBub3QgY29uZmlndXJlZCBhbnkgYXV0aCBmYWN0b3JzO1xuICAgICAqIG90aGVyd2lzZSwgTUZBIGlzIHJlcXVpcmVkLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJyZXNldFRvdHBJbml0TGVnYWN5XCJdO1xuICAgIC8qKlxuICAgICAqIEZpbmFsaXplIHJlc2V0dGluZyBUT1RQXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgcmVzZXR0aW5nIFRPVFBcbiAgICAgKlxuICAgICAqIERFUFJFQ0FURUQuIFVzZSBgUEFUQ0ggL3YwL29yZy97b3JnX2lkfS91c2VyL21lL3RvdHBgIGluc3RlYWQuXG4gICAgICpcbiAgICAgKiBDaGVja3MgaWYgdGhlIHJlc3BvbnNlIGNvbnRhaW5zIHRoZSBjb3JyZWN0IFRPVFAgY29kZSBjb3JyZXNwb25kaW5nIHRvIHRoZVxuICAgICAqIGNoYWxsZW5nZSBnZW5lcmF0ZWQgYnkgdGhlIFBPU1QgbWV0aG9kIG9mIHRoaXMgZW5kcG9pbnQuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJyZXNldFRvdHBDb21wbGV0ZUxlZ2FjeVwiXTtcbiAgfTtcbiAgXCIvdjAvdXNlci9tZS90b3RwL3ZlcmlmeVwiOiB7XG4gICAgLyoqXG4gICAgICogVmVyaWZ5IFRPVFBcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBkZXNjcmlwdGlvbiBWZXJpZnkgVE9UUFxuICAgICAqXG4gICAgICogREVQUkVDQVRFRC4gVXNlIGBQT1NUIC92MC9vcmcve29yZ19pZH0vdXNlci9tZS90b3RwL3ZlcmlmeWAgaW5zdGVhZC5cbiAgICAgKlxuICAgICAqIENoZWNrcyBpZiBhIGdpdmVuIGNvZGUgbWF0Y2hlcyB0aGUgY3VycmVudCBUT1RQIGNvZGUgZm9yIHRoZSBjdXJyZW50IHVzZXIuXG4gICAgICogRXJyb3JzIHdpdGggNDAzIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIG5vdCBzZXQgdXAgVE9UUCBvciB0aGUgY29kZSBmYWlscyB2ZXJpZmljYXRpb24uXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInZlcmlmeVRvdHBMZWdhY3lcIl07XG4gIH07XG4gIFwiL3YwL3VzZXIvb3Jnc1wiOiB7XG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIGFsbCB0aGUgb3JncyB0aGUgdXNlciBpcyBhIHBhcnQgb2ZcbiAgICAgKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIGFsbCB0aGUgb3JncyB0aGUgdXNlciBpcyBhIHBhcnQgb2ZcbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJ1c2VyT3Jnc1wiXTtcbiAgfTtcbiAgXCIvdjEvb3JnL3tvcmdfaWR9L2Jsb2Ivc2lnbi97a2V5X2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBSYXcgQmxvYlxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIFJhdyBCbG9iXG4gICAgICpcbiAgICAgKiBTaWducyBhbiBhcmJpdHJhcnkgYmxvYiB3aXRoIGEgZ2l2ZW4ga2V5LlxuICAgICAqXG4gICAgICogLSBFQ0RTQSBzaWduYXR1cmVzIGFyZSBzZXJpYWxpemVkIGFzIGJpZy1lbmRpYW4gciBhbmQgcyBwbHVzIHJlY292ZXJ5LWlkXG4gICAgICogYnl0ZSB2LCB3aGljaCBjYW4gaW4gZ2VuZXJhbCB0YWtlIGFueSBvZiB0aGUgdmFsdWVzIDAsIDEsIDIsIG9yIDMuXG4gICAgICpcbiAgICAgKiAtIEVkRFNBIHNpZ25hdHVyZXMgYXJlIHNlcmlhbGl6ZWQgaW4gdGhlIHN0YW5kYXJkIGZvcm1hdC5cbiAgICAgKlxuICAgICAqIC0gQkxTIHNpZ25hdHVyZXMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gdGhlIGJsb2Itc2lnbiBlbmRwb2ludC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiYmxvYlNpZ25cIl07XG4gIH07XG4gIFwiL3YxL29yZy97b3JnX2lkfS9jdWJlM3NpZ25lci9oZWFydGJlYXRcIjoge1xuICAgIC8qKlxuICAgICAqIFJlY29yZCBoZWFydGJlYXRcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVjb3JkIGhlYXJ0YmVhdFxuICAgICAqXG4gICAgICogVGhpcyBlbmRwb2ludCBpcyBjYWxsZWQgYnkgdGhlIGN1YmUzc2lnbmVyIHByb3h5IHRvIHJlY29yZCB2YXJpb3VzIG1ldHJpY3MgdG8gQ2xvdWRXYXRjaC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3ViZTNzaWduZXJIZWFydGJlYXRcIl07XG4gIH07XG4gIFwiL3YxL29yZy97b3JnX2lkfS9ldGgxL3NpZ24ve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gRVZNIFRyYW5zYWN0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gRVZNIFRyYW5zYWN0aW9uXG4gICAgICpcbiAgICAgKiBTaWducyBhbiBFdGhlcmV1bSAoYW5kIG90aGVyIEVWTSkgdHJhbnNhY3Rpb24gd2l0aCBhIGdpdmVuIFNlY3AyNTZrMSBrZXkuXG4gICAgICogUmV0dXJucyBhbiBSTFAtZW5jb2RlZCB0cmFuc2FjdGlvbiB3aXRoIEVJUC0xNTUgc2lnbmF0dXJlLlxuICAgICAqXG4gICAgICogVGhlIGtleSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm9sZSBhbmQgb3JnYW5pemF0aW9uIG9uIHdob3NlIGJlaGFsZiB0aGlzIGFjdGlvbiBpcyBjYWxsZWQuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImV0aDFTaWduXCJdO1xuICB9O1xuICBcIi92MS9vcmcve29yZ19pZH0vZXRoMi9zaWduL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIFZhbGlkYXRvciBSZXF1ZXN0XG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gVmFsaWRhdG9yIFJlcXVlc3RcbiAgICAgKlxuICAgICAqIFNpZ25zIGFuIGV0aDIgdmFsaWRhdG9yIHJlcXVlc3Qgd2l0aCBhIGdpdmVuIEJMUyBrZXkuXG4gICAgICpcbiAgICAgKiBUaGUga2V5IG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSByb2xlIGFuZCBvcmdhbml6YXRpb24gb24gd2hvc2UgYmVoYWxmIHRoaXMgYWN0aW9uIGlzIGNhbGxlZC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiZXRoMlNpZ25cIl07XG4gIH07XG4gIFwiL3YxL29yZy97b3JnX2lkfS9ldGgyL3N0YWtlXCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIFN0YWtlIERlcG9zaXRcbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBTdGFrZSBEZXBvc2l0XG4gICAgICpcbiAgICAgKiBTaWducyBhIGRlcG9zaXQgdHJhbnNhY3Rpb24gd2l0aCBhIGB2YWxpZGF0b3Jfa2V5YC4gSWYgYHZhbGlkYXRvcl9rZXlgIGlzIHNldCB0byBhIHByZWdlbmVyYXRlZCBrZXksIHdlIHVzZSB0aGVcbiAgICAgKiBwcm92aWRlZCB2YWxpZGF0b3Iga2V5LiBPdGhlcndpc2UsIHdlIGdlbmVyYXRlIGEgbmV3IEJMUyBrZXkuXG4gICAgICpcbiAgICAgKiBXaGVuIHVzaW5nIGEgcHJlZ2VuZXJhdGVkIGtleSwgdGhlIGtleSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm9sZSBhbmQgb3JnYW5pemF0aW9uIG9uIHdob3NlXG4gICAgICogYmVoYWxmIHRoaXMgYWN0aW9uIGlzIGNhbGxlZC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wic3Rha2VcIl07XG4gIH07XG4gIFwiL3YxL29yZy97b3JnX2lkfS9ldGgyL3Vuc3Rha2Uve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gVW5zdGFrZSBSZXF1ZXN0XG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gVW5zdGFrZSBSZXF1ZXN0XG4gICAgICpcbiAgICAgKiBIYW5kbGUgdW5zdGFraW5nIHJlcXVlc3QsIHByb2R1Y2luZyBhIHNpZ25lZCB2b2x1bnRhcnkgZXhpdCBtZXNzYWdlXG4gICAgICogdGhhdCBjYW4gYmUgcG9zdGVkIGRpcmVjdGx5IHRvIHRoZSBCZWFjb24gY2hhaW4uXG4gICAgICpcbiAgICAgKiBUaGUga2V5IG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSByb2xlIGFuZCBvcmdhbml6YXRpb24gb24gd2hvc2UgYmVoYWxmIHRoaXMgYWN0aW9uIGlzIGNhbGxlZC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1widW5zdGFrZVwiXTtcbiAgfTtcbiAgXCIvdjEvb3JnL3tvcmdfaWR9L3Rva2VuL3JlZnJlc2hcIjoge1xuICAgIC8qKlxuICAgICAqIFJlZnJlc2ggU2lnbmVyIFNlc3Npb25cbiAgICAgKiBAZGVzY3JpcHRpb24gUmVmcmVzaCBTaWduZXIgU2Vzc2lvblxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1wic2lnbmVyU2Vzc2lvblJlZnJlc2hcIl07XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIHdlYmhvb2tzID0gUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuXG5leHBvcnQgaW50ZXJmYWNlIGNvbXBvbmVudHMge1xuICBzY2hlbWFzOiB7XG4gICAgQWNjZXB0ZWRSZXNwb25zZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdICYgUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBEaWZmZXJlbnQgcmVzcG9uc2VzIHdlIHJldHVybiBmb3Igc3RhdHVzIGNvZGUgXCIyMDIgQWNjZXB0ZWRcIi5cbiAgICAgKlxuICAgICAqIEV2ZW4gdGhvdWdoIFwiMjAyIEFjY2VwdGVkXCIgaXMgYSBzdWNjZXNzZnVsIHJlc3BvbnNlLCB3ZSByZXByZXNlbnRcbiAgICAgKiBpdCBhcyBhIFJ1c3QgZXJyb3IgYmVjYXVzZSB0aGF0IG1ha2VzIGl0IGVhc3kgdG8gaGF2ZSByb3V0ZSBoYW5kbGVyc1xuICAgICAqIHJldHVybiBgUmVzdWx0PFQsIFNpZ25lckVycm9yPmAgd2hlcmUgYFRgIGlzIHRoZSB0eXBlIG9mIHRoZVxuICAgICAqIHJlc3BvbnNlIGZvciB0aGUgc3RhdHVzIGNvZGUgXCIyMDAgT2tcIi5cbiAgICAgKi9cbiAgICBBY2NlcHRlZFZhbHVlOiB7XG4gICAgICBNZmFSZXF1aXJlZDoge1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFsd2F5cyBzZXQgdG8gZmlyc3QgTUZBIGlkIGZyb20gYFNlbGY6Omlkc2AgKi9cbiAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBOb24tZW1wdHkgTUZBIHJlcXVlc3QgSURzICovXG4gICAgICAgIGlkczogc3RyaW5nW107XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3JnYW5pemF0aW9uIGlkICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHBvbGljeSBldmFsdWF0aW9uIHRyZWUgKGluY2x1ZGVkIGluIHNpZ25lciByZXNwb25zZXMsIHdoZW4gcmVxdWVzdGVkKSAqL1xuICAgICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICAgICAgc2Vzc2lvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTmV3U2Vzc2lvblJlc3BvbnNlXCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBBY2NlcHRlZFZhbHVlQ29kZTogXCJNZmFSZXF1aXJlZFwiO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBEZXRlcm1pbmVzIHdobyBjb250cm9scyB0aGUga2V5cyB3aXRoaW4gYW4gb3JnXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBBY2Nlc3NNb2RlbDogXCJVc2VyXCIgfCBcIk9yZ1wiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVxdWVzdCB0byBhZGQgT0lEQyBpZGVudGl0eSB0byBhbiBleGlzdGluZyB1c2VyIGFjY291bnQgKi9cbiAgICBBZGRJZGVudGl0eVJlcXVlc3Q6IHtcbiAgICAgIG9pZGNfdG9rZW46IHN0cmluZztcbiAgICAgIHVzZXJfaWQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdIHwgbnVsbDtcbiAgICB9O1xuICAgIEFkZEtleXNUb1JvbGVSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGxpc3Qgb2Yga2V5cyB0byBhZGQgdG8gYSByb2xlXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwiS2V5IzYzMDIzYTI3LTFlNzAtNDMwYS1iMjkzLWZmYmM5ZDZjNDQ4NFwiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIGtleV9pZHM6IHN0cmluZ1tdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWNpZXMgdG8gYXBwbHkgZm9yIGVhY2gga2V5XG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlR4UmVjZWl2ZXJcIjogXCIweDhjNTk0NjkxYzBlNTkyZmZhMjFmMTUzYTE2YWU0MWRiNWJlZmNhYWFcIlxuICAgICAgICogICB9LFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJUeERlcG9zaXRcIjoge1xuICAgICAgICogICAgICAgXCJraW5kXCI6IFwiQ2Fub25pY2FsXCJcbiAgICAgICAqICAgICB9XG4gICAgICAgKiAgIH0sXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlJlcXVpcmVNZmFcIjoge1xuICAgICAgICogICAgICAgXCJraW5kXCI6IHtcbiAgICAgICAqICAgICAgICAgXCJSZXF1aXJlZEFwcHJvdmVyc1wiOiB7XG4gICAgICAgKiAgICAgICAgICAgXCJjb3VudFwiOiAxXG4gICAgICAgKiAgICAgICAgIH1cbiAgICAgICAqICAgICAgIH0sXG4gICAgICAgKiAgICAgICBcInJlc3RyaWN0ZWRfb3BlcmF0aW9uc1wiOiBbXG4gICAgICAgKiAgICAgICAgIFwiRXRoMVNpZ25cIixcbiAgICAgICAqICAgICAgICAgXCJCbG9iU2lnblwiXG4gICAgICAgKiAgICAgICBdXG4gICAgICAgKiAgICAgfVxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHBvbGljeT86IHVua25vd25bXSB8IG51bGw7XG4gICAgfTtcbiAgICBBZGRUaGlyZFBhcnR5VXNlclJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHVzZXIgZW1haWxcbiAgICAgICAqIEBleGFtcGxlIGFsaWNlQGV4YW1wbGUuY29tXG4gICAgICAgKi9cbiAgICAgIGVtYWlsPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIGlkZW50aXR5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPaWRjSWRlbnRpdHlcIl0gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBsb2dpbiBNRkEgcG9saWN5ICovXG4gICAgICBtZmFfcG9saWN5PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgdXNlciBmdWxsIG5hbWVcbiAgICAgICAqIEBleGFtcGxlIEFsaWNlIFdvbmRlcmxhbmRcbiAgICAgICAqL1xuICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICBwcm9vZj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRlbnRpdHlQcm9vZlwiXSB8IG51bGw7XG4gICAgICByb2xlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1lbWJlclJvbGVcIl07XG4gICAgfTtcbiAgICBBZGRUaGlyZFBhcnR5VXNlclJlc3BvbnNlOiB7XG4gICAgICAvKiogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGYgKi9cbiAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGFkZHJlc3NlcyBhc3NvY2lhdGVkIHdpdGggYSBjb250YWN0LiAqL1xuICAgIEFkZHJlc3NNYXA6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQml0Y29pbiBhZGRyZXNzZXMuICovXG4gICAgICBidGM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJpdGNvaW5BZGRyZXNzSW5mb1wiXVtdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBDYW50b24gcGFydGllcy4gKi9cbiAgICAgIGNhbnRvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2FudG9uUGFydHlJbmZvXCJdW107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEVWTSBhZGRyZXNzZXMuICovXG4gICAgICBldm0/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkV2bUFkZHJlc3NJbmZvXCJdW107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFNvbGFuYSBhZGRyZXNzZXMuICovXG4gICAgICBzb2w/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNvbGFuYUFkZHJlc3NJbmZvXCJdW107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFNVSSBhZGRyZXNzZXMuICovXG4gICAgICBzdWk/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlN1aUFkZHJlc3NJbmZvXCJdW107XG4gICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBBbGVydEtpbmQ6IFwiUG9saWN5Q2hhbmdlc1wiIHwgXCJFdGgyQ29uY3VycmVudEJsb2NrU2lnbmluZ1wiIHwgXCJCYWJ5bG9uRW90c0NvbmN1cnJlbnRTaWduaW5nXCI7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIE1GQSB0eXBlcyB0aGF0IGFyZSBhbGxvd2VkIHRvIGJlIHVzZWQgZm9yIGluZGl2aWR1YWwgaW1wbGljaXRseSBzZWN1cml0eS1zZW5zaXRpdmVcbiAgICAgKiBvcGVyYXRpb25zIChsaWtlIGxvZ2dpbmcgaW4sIGFkZGluZyBhbiBNRkEgZmFjdG9yLCBleHBvcnRpbmcga2V5cywgZXRjOyBzZWUgYE1mYVByb3RlY3RlZEFjdGlvbmApLlxuICAgICAqL1xuICAgIEFsbG93ZWRNZmFNYXA6IHtcbiAgICAgIFtrZXk6IHN0cmluZ106IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhVHlwZVwiXVtdO1xuICAgIH07XG4gICAgQXBwcm92YWxJbmZvOiB7XG4gICAgICB0aW1lc3RhbXA6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBXZWJBdXRobiBSZWx5aW5nIFBhcnRpZXMgbWF5IHVzZSBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlIHRvIHNwZWNpZnlcbiAgICAgKiB0aGVpciBwcmVmZXJlbmNlIHJlZ2FyZGluZyBhdHRlc3RhdGlvbiBjb252ZXlhbmNlIGR1cmluZyBjcmVkZW50aWFsXG4gICAgICogZ2VuZXJhdGlvbi5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNlbnVtZGVmLWF0dGVzdGF0aW9uY29udmV5YW5jZXByZWZlcmVuY2VcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2U6IFwibm9uZVwiIHwgXCJpbmRpcmVjdFwiIHwgXCJkaXJlY3RcIiB8IFwiZW50ZXJwcmlzZVwiO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBdWRpZW5jZShzKSB0aGF0IHRoaXMgSUQgVG9rZW4gaXMgaW50ZW5kZWQgZm9yLiBJdCBNVVNUIGNvbnRhaW4gdGhlXG4gICAgICogT0F1dGggMi4wIGNsaWVudF9pZCBvZiB0aGUgUmVseWluZyBQYXJ0eSBhcyBhbiBhdWRpZW5jZSB2YWx1ZS4gSXQgTUFZIGFsc28gY29udGFpblxuICAgICAqIGlkZW50aWZpZXJzIGZvciBvdGhlciBhdWRpZW5jZXMuIEluIHRoZSBnZW5lcmFsIGNhc2UsIHRoZSBhdWQgdmFsdWUgaXMgYW4gYXJyYXkgb2ZcbiAgICAgKiBjYXNlLXNlbnNpdGl2ZSBzdHJpbmdzLiBJbiB0aGUgY29tbW9uIHNwZWNpYWwgY2FzZSB3aGVuIHRoZXJlIGlzIG9uZSBhdWRpZW5jZSxcbiAgICAgKiB0aGUgYXVkIHZhbHVlIE1BWSBiZSBhIHNpbmdsZSBjYXNlLXNlbnNpdGl2ZSBzdHJpbmcuXG4gICAgICovXG4gICAgQXVkOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgICBBdWRpdExvZ0VudHJ5OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBuYW1lIG9mIHRoZSBldmVudCAqL1xuICAgICAgZXZlbnQ6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVVVJRCBvZiB0aGUgZXZlbnQuIFVuaXF1ZSBhY3Jvc3MgYWxsIGV2ZW50cy4gKi9cbiAgICAgIGV2ZW50X2lkOiBzdHJpbmc7XG4gICAgICBvcmdfaWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIEhUVFAgcmVxdWVzdCB3aGljaCB0cmlnZ2VyZWQgdGhlIGV2ZW50XG4gICAgICAgKiAoYSBzaW5nbGUgcmVxdWVzdCBjYW4gdHJpZ2dlciBtdWx0aXBsZSBldmVudHMpLlxuICAgICAgICovXG4gICAgICByZXF1ZXN0X2lkOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB0aW1lIHdoZW4gdGhlIGV2ZW50IHdhcyBsb2dnZWQuICovXG4gICAgICB0aW1lOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGlkZW50aXR5ICh1c2VyIG9yIHJvbGUpIHdoaWNoIHRyaWdnZXJlZCB0aGUgZXZlbnRcbiAgICAgICAqIChtYXkgYmUgdW5kZWZpbmVkIGZvciBjZXJ0YWluIHVuYXV0aGVudGljYXRlZCBlbmRwb2ludHMpXG4gICAgICAgKi9cbiAgICAgIHRyaWdnZXJlZF9ieT86IHN0cmluZyB8IG51bGw7XG4gICAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVxdWVzdCB0eXBlIGZvciBxdWVyeWluZyB0aGUgYXVkaXQgbG9nLiAqL1xuICAgIEF1ZGl0TG9nUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gRW5kIHRpbWUgaW4gc2Vjb25kcyBzaW5jZSB1bml4IGVwb2NoLiBJZiBvbWl0dGVkLCBkZWZhdWx0cyB0byAnbm93Jy5cbiAgICAgICAqL1xuICAgICAgZW5kX3RpbWU/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gRmlsdGVyIHRoZSBsb2cgYnkgdGhlIGV2ZW50IG5hbWUuXG4gICAgICAgKiBJZiBvbWl0dGVkLCBhbGwgZXZlbnRzIHdpbGwgYmUgaW5jbHVkZWQuXG4gICAgICAgKiBNdXN0IG5vdCBiZSBzZXQgdG8gYW4gZW1wdHkgYXJyYXlcbiAgICAgICAqL1xuICAgICAgZXZlbnRzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPcmdFdmVudERpc2NyaW1pbmFudHNcIl1bXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBTdGFydCB0aW1lIGluIHNlY29uZHMgc2luY2UgdW5peCBlcG9jaC5cbiAgICAgICAqL1xuICAgICAgc3RhcnRfdGltZTogbnVtYmVyO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgYXVkaXQgbG9nIHJlc3BvbnNlICovXG4gICAgQXVkaXRMb2dSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBdWRpdCBsb2cgZW50cmllcyAqL1xuICAgICAgZW50cmllczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBdWRpdExvZ0VudHJ5XCJdW107XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIERhdGEgcmVxdWlyZWQgZm9yIGJvdGggYGF1dGhlbnRpY2F0ZWAgYW5kIGByZWZyZXNoYC4gKi9cbiAgICBBdXRoRGF0YToge1xuICAgICAgLyoqIEZvcm1hdDogaW50MzIgKi9cbiAgICAgIGVwb2NoX251bTogbnVtYmVyO1xuICAgICAgZXBvY2hfdG9rZW46IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQjMyXCJdO1xuICAgICAgb3RoZXJfdG9rZW46IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBdCByZWRlbXB0aW9uIHRpbWUsIHRoZSB1c2VyIG11c3QgcHJvdmlkZSBhIGNyZWRlbnRpYWwgdGhleSB3aXNoIHRvIHVzZSB0byBhdXRoZW50aWNhdGUuXG4gICAgICogVGhpcyBlbnVtIHJlcHJlc2VudHMgdGhlIHR3byBwb3NzaWJsZSBzb3VyY2VzIG9mIGF1dGhlbnRpY2F0aW9uLlxuICAgICAqL1xuICAgIEF1dGhTb3VyY2U6IHtcbiAgICAgIGNyZWRlbnRpYWw6IHN0cmluZztcbiAgICAgIGtpbmQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXV0aFNvdXJjZUtpbmRcIl07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQXQgcmVkZW1wdGlvbiB0aW1lLCB0aGUgdXNlciBtdXN0IHByb3ZpZGUgYSBjcmVkZW50aWFsIHRoZXkgd2lzaCB0byB1c2UgdG8gYXV0aGVudGljYXRlLlxuICAgICAqIFRoaXMgZW51bSByZXByZXNlbnRzIHRoZSB0d28gcG9zc2libGUgc291cmNlcyBvZiBhdXRoZW50aWNhdGlvbi5cbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIEF1dGhTb3VyY2VLaW5kOiBcInBhc3N3b3JkXCIgfCBcIm9pZGNcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXF1ZXN0IGJvZHkgZm9yIHRoZSBpZHAgYXV0aGVudGljYXRlIGVuZHBvaW50ICovXG4gICAgQXV0aGVudGljYXRpb25SZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZW1haWwgYWRkcmVzcyBvZiB0aGUgdXNlciBhdHRlbXB0aW5nIHRvIGF1dGhlbnRpY2F0ZVxuICAgICAgICogQGV4YW1wbGUgYWxpY2VAZXhhbXBsZS5jb21cbiAgICAgICAqL1xuICAgICAgZW1haWw6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHBhc3N3b3JkIGZvciB0aGF0IHVzZXIgKi9cbiAgICAgIHBhc3N3b3JkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXNwb25zZSB0byB0aGUgaWRwIGF1dGhlbnRpY2F0ZSBlbmRwb2ludCAqL1xuICAgIEF1dGhlbnRpY2F0aW9uUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gT0lEQyB0b2tlbiB0aGF0IGNhbiBiZSB1c2VkIHRvIGF1dGhlbnRpY2F0ZSB3aXRoIEN1YmVTaWduZXIgKi9cbiAgICAgIGlkX3Rva2VuOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVwcmVzZW50cyB0aGUgYXNzZXJ0aW9uIHJlc3BvbnNlIHVzZWQgYnkgY2xpZW50cyB3aGVuIGF0dGVtcHRpbmcgdG8gbG9nIGluIHdpdGggYSBrbm93biBjcmVkZW50aWFsXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2F1dGhlbnRpY2F0b3Jhc3NlcnRpb25yZXNwb25zZVxuICAgICAqL1xuICAgIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ29udGFpbnMgdGhlIHN0YW5kYXJkIENUQVAyIGF1dGhlbnRpY2F0b3IgZGF0YS4gTXVzdCBiZSBhIHZhbGlkIFtgQXV0aGVudGljYXRvckRhdGFgXS5cbiAgICAgICAqIFRoaXMgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgaG93IGtleSB3YXMgaW52b2tlZC5cbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tYXV0aGVudGljYXRvcmFzc2VydGlvbnJlc3BvbnNlLWF1dGhlbnRpY2F0b3JkYXRhXG4gICAgICAgKi9cbiAgICAgIGF1dGhlbnRpY2F0b3JEYXRhOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDb250YWlucyBVVEY4IGVuY29kZWQgSlNPTiB3aGljaCBtdXN0IGJlIGEgdmFsaWQgW2BDbGllbnREYXRhYF1cbiAgICAgICAqIFRoaXMgZGF0YSBpcyBjb21iaW5lZCB3aXRoIGBhdXRoZW50aWNhdG9yX2RhdGFgIHRvIHByb2R1Y2UgdGhlIHNpZ25hdHVyZVxuICAgICAgICogbWVhbmluZyB0aGUgY2xpZW50IGF0dGVzdHMgdG8gdGhlIGNvcnJlY3RuZXNzIG9mIHRoaXMgZGF0YS5cbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tYXV0aGVudGljYXRvcnJlc3BvbnNlLWNsaWVudGRhdGFqc29uXG4gICAgICAgKi9cbiAgICAgIGNsaWVudERhdGFKU09OOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc2lnbmF0dXJlIG9mIHRoZSBjb25jYXRlbmF0ZWQgYGF1dGhlbnRpY2F0b3JEYXRhIHx8IGhhc2hgIHdoZXJlXG4gICAgICAgKiBgaGFzaGAgaXMgdGhlIFNIQTI1NiBoYXNoIG9mIHRoZSBgY2xpZW50RGF0YUpTT05gIGJ1ZmZlcjpcbiAgICAgICAqXG4gICAgICAgKiBGaWVsZCBEZWZpbml0aW9uOiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLWF1dGhlbnRpY2F0b3Jhc3NlcnRpb25yZXNwb25zZS1zaWduYXR1cmVcbiAgICAgICAqIFN0ZXAgMTEgb2YgYGdldEFzc2VydGlvbmAgc3BlY2lmaWVzIHRoZSBjb25jYXRlbmF0aW9uOiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jc2N0bi1vcC1nZXQtYXNzZXJ0aW9uXG4gICAgICAgKiBSZXF1aXJlbWVudCBmb3IgU0hBLTI1NjogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2NvbGxlY3RlZGNsaWVudGRhdGEtaGFzaC1vZi10aGUtc2VyaWFsaXplZC1jbGllbnQtZGF0YVxuICAgICAgICovXG4gICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFsbG93cyB0aGUgYXV0aGVudGljYXRvciB0byBvcHRpb25hbGx5IGRlY2xhcmUgdGhlIGNyZWRlbnRpYWwgaWRlbnRpZmllciB0aGV5IHVzZWQuXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLWF1dGhlbnRpY2F0b3Jhc3NlcnRpb25yZXNwb25zZS11c2VyaGFuZGxlXG4gICAgICAgKi9cbiAgICAgIHVzZXJIYW5kbGU/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZW51bWVyYXRpb27igJlzIHZhbHVlcyBkZXNjcmliZSBhdXRoZW50aWNhdG9ycycgYXR0YWNobWVudCBtb2RhbGl0aWVzLlxuICAgICAqIFJlbHlpbmcgUGFydGllcyB1c2UgdGhpcyB0byBleHByZXNzIGEgcHJlZmVycmVkIGF1dGhlbnRpY2F0b3IgYXR0YWNobWVudFxuICAgICAqIG1vZGFsaXR5IHdoZW4gY2FsbGluZyBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKCkgdG8gY3JlYXRlIGEgY3JlZGVudGlhbC5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNlbnVtZGVmLWF1dGhlbnRpY2F0b3JhdHRhY2htZW50XG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBBdXRoZW50aWNhdG9yQXR0YWNobWVudDogXCJwbGF0Zm9ybVwiIHwgXCJjcm9zcy1wbGF0Zm9ybVwiO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UgaW50ZXJmYWNlIHJlcHJlc2VudHMgdGhlIGF1dGhlbnRpY2F0b3Inc1xuICAgICAqIHJlc3BvbnNlIHRvIGEgY2xpZW504oCZcyByZXF1ZXN0IGZvciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgcHVibGljIGtleVxuICAgICAqIGNyZWRlbnRpYWwuIEl0IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBuZXcgY3JlZGVudGlhbCB0aGF0IGNhbiBiZVxuICAgICAqIHVzZWQgdG8gaWRlbnRpZnkgaXQgZm9yIGxhdGVyIHVzZSwgYW5kIG1ldGFkYXRhIHRoYXQgY2FuIGJlIHVzZWQgYnkgdGhlXG4gICAgICogV2ViQXV0aG4gUmVseWluZyBQYXJ0eSB0byBhc3Nlc3MgdGhlIGNoYXJhY3RlcmlzdGljcyBvZiB0aGUgY3JlZGVudGlhbFxuICAgICAqIGR1cmluZyByZWdpc3RyYXRpb24uXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jaWZhY2UtYXV0aGVudGljYXRvcmF0dGVzdGF0aW9ucmVzcG9uc2VcbiAgICAgKi9cbiAgICBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgYW4gYXR0ZXN0YXRpb24gb2JqZWN0LCB3aGljaCBpcyBvcGFxdWUgdG8sIGFuZFxuICAgICAgICogY3J5cHRvZ3JhcGhpY2FsbHkgcHJvdGVjdGVkIGFnYWluc3QgdGFtcGVyaW5nIGJ5LCB0aGUgY2xpZW50LiBUaGVcbiAgICAgICAqIGF0dGVzdGF0aW9uIG9iamVjdCBjb250YWlucyBib3RoIGF1dGhlbnRpY2F0b3IgZGF0YSBhbmQgYW4gYXR0ZXN0YXRpb25cbiAgICAgICAqIHN0YXRlbWVudC4gVGhlIGZvcm1lciBjb250YWlucyB0aGUgQUFHVUlELCBhIHVuaXF1ZSBjcmVkZW50aWFsIElELCBhbmRcbiAgICAgICAqIHRoZSBjcmVkZW50aWFsIHB1YmxpYyBrZXkuIFRoZSBjb250ZW50cyBvZiB0aGUgYXR0ZXN0YXRpb24gc3RhdGVtZW50IGFyZVxuICAgICAgICogZGV0ZXJtaW5lZCBieSB0aGUgYXR0ZXN0YXRpb24gc3RhdGVtZW50IGZvcm1hdCB1c2VkIGJ5IHRoZVxuICAgICAgICogYXV0aGVudGljYXRvci4gSXQgYWxzbyBjb250YWlucyBhbnkgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0aGF0IHRoZVxuICAgICAgICogUmVseWluZyBQYXJ0eSdzIHNlcnZlciByZXF1aXJlcyB0byB2YWxpZGF0ZSB0aGUgYXR0ZXN0YXRpb24gc3RhdGVtZW50LFxuICAgICAgICogYXMgd2VsbCBhcyB0byBkZWNvZGUgYW5kIHZhbGlkYXRlIHRoZSBhdXRoZW50aWNhdG9yIGRhdGEgYWxvbmcgd2l0aCB0aGVcbiAgICAgICAqIEpTT04tY29tcGF0aWJsZSBzZXJpYWxpemF0aW9uIG9mIGNsaWVudCBkYXRhLiBGb3IgbW9yZSBkZXRhaWxzLCBzZWVcbiAgICAgICAqIMKn4oCvNi41IEF0dGVzdGF0aW9uLCDCp+KArzYuNS40IEdlbmVyYXRpbmcgYW4gQXR0ZXN0YXRpb24gT2JqZWN0LCBhbmQgRmlndXJlXG4gICAgICAgKiA2LlxuICAgICAgICovXG4gICAgICBhdHRlc3RhdGlvbk9iamVjdDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBhdHRyaWJ1dGUsIGluaGVyaXRlZCBmcm9tIEF1dGhlbnRpY2F0b3JSZXNwb25zZSwgY29udGFpbnMgdGhlXG4gICAgICAgKiBKU09OLWNvbXBhdGlibGUgc2VyaWFsaXphdGlvbiBvZiBjbGllbnQgZGF0YSAoc2VlIMKn4oCvNi41IEF0dGVzdGF0aW9uKVxuICAgICAgICogcGFzc2VkIHRvIHRoZSBhdXRoZW50aWNhdG9yIGJ5IHRoZSBjbGllbnQgaW4gb3JkZXIgdG8gZ2VuZXJhdGUgdGhpc1xuICAgICAgICogY3JlZGVudGlhbC4gVGhlIGV4YWN0IEpTT04gc2VyaWFsaXphdGlvbiBNVVNUIGJlIHByZXNlcnZlZCwgYXMgdGhlIGhhc2hcbiAgICAgICAqIG9mIHRoZSBzZXJpYWxpemVkIGNsaWVudCBkYXRhIGhhcyBiZWVuIGNvbXB1dGVkIG92ZXIgaXQuXG4gICAgICAgKi9cbiAgICAgIGNsaWVudERhdGFKU09OOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gV2ViQXV0aG4gUmVseWluZyBQYXJ0aWVzIG1heSB1c2UgdGhlIEF1dGhlbnRpY2F0b3JTZWxlY3Rpb25Dcml0ZXJpYVxuICAgICAqIGRpY3Rpb25hcnkgdG8gc3BlY2lmeSB0aGVpciByZXF1aXJlbWVudHMgcmVnYXJkaW5nIGF1dGhlbnRpY2F0b3JcbiAgICAgKiBhdHRyaWJ1dGVzLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RpY3RkZWYtYXV0aGVudGljYXRvcnNlbGVjdGlvbmNyaXRlcmlhXG4gICAgICovXG4gICAgQXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRlcmlhOiB7XG4gICAgICBhdXRoZW50aWNhdG9yQXR0YWNobWVudD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXV0aGVudGljYXRvckF0dGFjaG1lbnRcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZW1iZXIgaXMgcmV0YWluZWQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggV2ViQXV0aG4gTGV2ZWxcbiAgICAgICAqIDEgYW5kLCBmb3IgaGlzdG9yaWNhbCByZWFzb25zLCBpdHMgbmFtaW5nIHJldGFpbnMgdGhlIGRlcHJlY2F0ZWRcbiAgICAgICAqIOKAnHJlc2lkZW504oCdIHRlcm1pbm9sb2d5IGZvciBkaXNjb3ZlcmFibGUgY3JlZGVudGlhbHMuIFJlbHlpbmcgUGFydGllc1xuICAgICAgICogU0hPVUxEIHNldCBpdCB0byB0cnVlIGlmLCBhbmQgb25seSBpZiwgcmVzaWRlbnRLZXkgaXMgc2V0IHRvIHJlcXVpcmVkLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tYXV0aGVudGljYXRvcnNlbGVjdGlvbmNyaXRlcmlhLXJlcXVpcmVyZXNpZGVudGtleVxuICAgICAgICovXG4gICAgICByZXF1aXJlUmVzaWRlbnRLZXk/OiBib29sZWFuO1xuICAgICAgcmVzaWRlbnRLZXk/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJlc2lkZW50S2V5UmVxdWlyZW1lbnRcIl0gfCBudWxsO1xuICAgICAgdXNlclZlcmlmaWNhdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50XCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEF1dGhlbnRpY2F0b3JzIG1heSBpbXBsZW1lbnQgdmFyaW91cyB0cmFuc3BvcnRzIGZvciBjb21tdW5pY2F0aW5nIHdpdGhcbiAgICAgKiBjbGllbnRzLiBUaGlzIGVudW1lcmF0aW9uIGRlZmluZXMgaGludHMgYXMgdG8gaG93IGNsaWVudHMgbWlnaHQgY29tbXVuaWNhdGVcbiAgICAgKiB3aXRoIGEgcGFydGljdWxhciBhdXRoZW50aWNhdG9yIGluIG9yZGVyIHRvIG9idGFpbiBhbiBhc3NlcnRpb24gZm9yIGFcbiAgICAgKiBzcGVjaWZpYyBjcmVkZW50aWFsLiBOb3RlIHRoYXQgdGhlc2UgaGludHMgcmVwcmVzZW50IHRoZSBXZWJBdXRobiBSZWx5aW5nXG4gICAgICogUGFydHkncyBiZXN0IGJlbGllZiBhcyB0byBob3cgYW4gYXV0aGVudGljYXRvciBtYXkgYmUgcmVhY2hlZC4gQSBSZWx5aW5nXG4gICAgICogUGFydHkgd2lsbCB0eXBpY2FsbHkgbGVhcm4gb2YgdGhlIHN1cHBvcnRlZCB0cmFuc3BvcnRzIGZvciBhIHB1YmxpYyBrZXlcbiAgICAgKiBjcmVkZW50aWFsIHZpYSBnZXRUcmFuc3BvcnRzKCkuXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZW51bWRlZi1hdXRoZW50aWNhdG9ydHJhbnNwb3J0XG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBBdXRoZW50aWNhdG9yVHJhbnNwb3J0OiBcInVzYlwiIHwgXCJuZmNcIiB8IFwiYmxlXCIgfCBcImludGVybmFsXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IHRvIHNpZ24gYSBzZXJpYWxpemVkIEF2YWxhbmNoZSB0cmFuc2FjdGlvbiAqL1xuICAgIEF2YVNlcmlhbGl6ZWRUeFNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBleHBsYWluaW5nXG4gICAgICAgKiB0aGUgb3V0Y29tZSAoaS5lLiwgcGVybWl0dGVkIHZzLiBkZW5pZWQgdnMuIE1GQSByZXF1aXJlZCkgb2YgdGhlIHNpZ24gcmVxdWVzdC5cbiAgICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBleHBsYWluPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIE1GQSBpcyByZXF1aXJlZCwgZmFpbCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIHJldHVybmluZyAyMDIgYW5kIGNyZWF0aW5nXG4gICAgICAgKiBwZW5kaW5nIE1GQSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZmFpbF9vbl9tZmE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuIFBhc3NpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBtYWtlIHJldmlld2luZ1xuICAgICAgICogb2YgcGVuZGluZyBNRkEgcmVxdWVzdHMgYW5kL29yIGhpc3RvcmljYWwga2V5IHRyYW5zYWN0aW9ucyBtb3JlIHRyYW5zcGFyZW50LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGUuZy4sIHRvIGNhcnJ5IGFkZGl0aW9uYWwgZGF0YSB0byBXZWJIb29rIHBvbGljaWVzLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gU2VyaWFsaXplZCB0cmFuc2FjdGlvbiB0byBzaWduICovXG4gICAgICB0eDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IHRvIHNpZ24gYW4gQXZhbGFuY2hlIHRyYW5zYWN0aW9uICovXG4gICAgQXZhU2lnblJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFJlcXVlc3QgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcmVzcG9uc2UsIGV4cGxhaW5pbmdcbiAgICAgICAqIHRoZSBvdXRjb21lIChpLmUuLCBwZXJtaXR0ZWQgdnMuIGRlbmllZCB2cy4gTUZBIHJlcXVpcmVkKSBvZiB0aGUgc2lnbiByZXF1ZXN0LlxuICAgICAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGV4cGxhaW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgTUZBIGlzIHJlcXVpcmVkLCBmYWlsIHRoZSByZXF1ZXN0IGluc3RlYWQgb2YgcmV0dXJuaW5nIDIwMiBhbmQgY3JlYXRpbmdcbiAgICAgICAqIHBlbmRpbmcgTUZBIHJlcXVlc3QuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBmYWlsX29uX21mYT86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBtZXRhZGF0YS4gUGFzc2luZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFzIG1ldGFkYXRhIGNhbiBiZSB1c2VkIHRvIG1ha2UgcmV2aWV3aW5nXG4gICAgICAgKiBvZiBwZW5kaW5nIE1GQSByZXF1ZXN0cyBhbmQvb3IgaGlzdG9yaWNhbCBrZXkgdHJhbnNhY3Rpb25zIG1vcmUgdHJhbnNwYXJlbnQuIEl0IGNhbiBhbHNvIGJlIHVzZWQgZS5nLiwgdG8gY2FycnkgYWRkaXRpb25hbCBkYXRhIHRvIFdlYkhvb2sgcG9saWNpZXMuXG4gICAgICAgKi9cbiAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVHJhbnNhY3Rpb24gdG8gc2lnbi5cbiAgICAgICAqXG4gICAgICAgKiBFeGFtcGxlczpcbiAgICAgICAqIC0ge1wiUFwiOiB7IFwiQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3JcIjogW1R4SnNvbl0oaHR0cHM6Ly9naXRodWIuY29tL2F2YS1sYWJzL2F2YWxhbmNoZS1ycy9ibG9iL2F2YWxhbmNoZS10eXBlcy12MC4xLjMvY3JhdGVzL2F2YWxhbmNoZS10eXBlcy9zcmMvcGxhdGZvcm12bS90eHMvYWRkX3Blcm1pc3Npb25sZXNzX3ZhbGlkYXRvci5ycyNMMTQpIH19XG4gICAgICAgKiAtIHtcIlBcIjogeyBcIkFkZFN1Ym5ldFZhbGlkYXRvclwiOiBbVHhKc29uXShodHRwczovL2dpdGh1Yi5jb20vYXZhLWxhYnMvYXZhbGFuY2hlLXJzL2Jsb2IvYXZhbGFuY2hlLXR5cGVzLXYwLjEuMy9jcmF0ZXMvYXZhbGFuY2hlLXR5cGVzL3NyYy9wbGF0Zm9ybXZtL3R4cy9hZGRfc3VibmV0X3ZhbGlkYXRvci5ycyNMMjkpIH19XG4gICAgICAgKiAtIHtcIlBcIjogeyBcIkFkZFZhbGlkYXRvclwiOiBbVHhKc29uXShodHRwczovL2dpdGh1Yi5jb20vYXZhLWxhYnMvYXZhbGFuY2hlLXJzL2Jsb2IvYXZhbGFuY2hlLXR5cGVzLXYwLjEuMy9jcmF0ZXMvYXZhbGFuY2hlLXR5cGVzL3NyYy9wbGF0Zm9ybXZtL3R4cy9hZGRfdmFsaWRhdG9yLnJzI0wxMikgfX1cbiAgICAgICAqIC0ge1wiUFwiOiB7IFwiQ3JlYXRlQ2hhaW5cIjogW1R4SnNvbl0oaHR0cHM6Ly9naXRodWIuY29tL2F2YS1sYWJzL2F2YWxhbmNoZS1ycy9ibG9iL2F2YWxhbmNoZS10eXBlcy12MC4xLjMvY3JhdGVzL2F2YWxhbmNoZS10eXBlcy9zcmMvcGxhdGZvcm12bS90eHMvY3JlYXRlX2NoYWluLnJzI0w4KSB9fVxuICAgICAgICogLSB7XCJQXCI6IHsgXCJDcmVhdGVTdWJuZXRcIjogW1R4SnNvbl0oaHR0cHM6Ly9naXRodWIuY29tL2F2YS1sYWJzL2F2YWxhbmNoZS1ycy9ibG9iL2F2YWxhbmNoZS10eXBlcy12MC4xLjMvY3JhdGVzL2F2YWxhbmNoZS10eXBlcy9zcmMvcGxhdGZvcm12bS90eHMvY3JlYXRlX3N1Ym5ldC5ycyNMOCkgfX1cbiAgICAgICAqIC0ge1wiUFwiOiB7IFwiRXhwb3J0XCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL3BsYXRmb3Jtdm0vdHhzL2V4cG9ydC5ycyNMMTIpIH19XG4gICAgICAgKiAtIHtcIlBcIjogeyBcIkltcG9ydFwiOiBbVHhKc29uXShodHRwczovL2dpdGh1Yi5jb20vYXZhLWxhYnMvYXZhbGFuY2hlLXJzL2Jsb2IvYXZhbGFuY2hlLXR5cGVzLXYwLjEuMy9jcmF0ZXMvYXZhbGFuY2hlLXR5cGVzL3NyYy9wbGF0Zm9ybXZtL3R4cy9pbXBvcnQucnMjTDEyKSB9fVxuICAgICAgICogLSB7XCJYXCI6IHsgXCJCYXNlXCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL2F2bS90eHMvbW9kLnJzI0wyMSkgfX1cbiAgICAgICAqIC0ge1wiWFwiOiB7IFwiRXhwb3J0XCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL2F2bS90eHMvZXhwb3J0LnJzI0wxNikgfX1cbiAgICAgICAqIC0ge1wiWFwiOiB7IFwiSW1wb3J0XCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL2F2bS90eHMvaW1wb3J0LnJzI0wxNCkgfX1cbiAgICAgICAqL1xuICAgICAgdHg6IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gV3JhcHBlciBhcm91bmQgYSB6ZXJvaXppbmcgMzItYnl0ZSBmaXhlZC1zaXplIGFycmF5ICovXG4gICAgQjMyOiBzdHJpbmc7XG4gICAgQmFieWxvbkNvdlNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBleHBsYWluaW5nXG4gICAgICAgKiB0aGUgb3V0Y29tZSAoaS5lLiwgcGVybWl0dGVkIHZzLiBkZW5pZWQgdnMuIE1GQSByZXF1aXJlZCkgb2YgdGhlIHNpZ24gcmVxdWVzdC5cbiAgICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBleHBsYWluPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIE1GQSBpcyByZXF1aXJlZCwgZmFpbCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIHJldHVybmluZyAyMDIgYW5kIGNyZWF0aW5nXG4gICAgICAgKiBwZW5kaW5nIE1GQSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZmFpbF9vbl9tZmE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuIFBhc3NpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBtYWtlIHJldmlld2luZ1xuICAgICAgICogb2YgcGVuZGluZyBNRkEgcmVxdWVzdHMgYW5kL29yIGhpc3RvcmljYWwga2V5IHRyYW5zYWN0aW9ucyBtb3JlIHRyYW5zcGFyZW50LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGUuZy4sIHRvIGNhcnJ5IGFkZGl0aW9uYWwgZGF0YSB0byBXZWJIb29rIHBvbGljaWVzLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBrZXlzIGZvciB0aGUgZmluYWxpdHkgcHJvdmlkZXJzIHRvIHdoaWNoIHRoaXMgdHJhbnNhY3Rpb24gaXMgYmVpbmcgc3Rha2VkLlxuICAgICAgICogRWFjaCBrZXkgaXMgYSBoZXggc3RyaW5nIGNvbnRhaW5pbmcgYSBTRUMxLWVuY29kZWQgc2VjcDI1NmsxIHB1YmxpYyBrZXkuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwiMDNiNTczZTMxODgwM2ZkN2FlZTFiZTViNmIxOGQ0OTZjYzYwZWNjNTI0MjlkYmQ0NzdhODc5MjE3YzNlZDI2YTc5NWNiNGY0ZTg4MGFhZmYzYTZhZDY2MzM1ZTU0MDRmYTUxY2FlYjQ5NjRmMGM5Zjc1NjI3Mzc4NjRlM2JkZTViY1wiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIGZwX2VuY19rZXlzOiBzdHJpbmdbXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzbGFzaC11bmJvbmRpbmcgdHJhbnNhY3Rpb24gYmVpbmcgYXBwcm92ZWQgYnkgdGhlIGNvdmVuYW50IHNpZ25lci5cbiAgICAgICAqIFRoaXMgaXMgYSBCaXRjb2luIGNvbnNlbnN1cy0tZW5jb2RlZCBoZXggc3RyaW5nLlxuICAgICAgICogQGV4YW1wbGUgNjg5OWI1YmFmNzEzYTJjNjBlNmFiZjA1ZTg5MDk0NDBkNDFkYzQxMjViOTg4OTFjMzMyZjcwODdkYWYwMTdmYjI0MzYyODZlMmFhMDk3NDY0ZDljOTI3ZDY0NGZhNmRlXG4gICAgICAgKi9cbiAgICAgIHNsYXNoX3VuYm9uZGluZ190eDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHNsYXNoaW5nIHNjcmlwdCBpbiB0aGUgc3Rha2luZyB0cmFuc2FjdGlvbi5cbiAgICAgICAqIFRoaXMgaXMgYSBCaXRjb2luIGNvbnNlbnN1cy0tZW5jb2RlZCBoZXggc3RyaW5nLlxuICAgICAgICogQGV4YW1wbGUgODc3ZjA1Y2M2MjZkZWRjZjUzYjUwZWViYTA4MjFjYTBcbiAgICAgICAqL1xuICAgICAgc2xhc2hpbmdfc2NyaXB0OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc2xhc2hpbmcgdHJhbnNhY3Rpb24gYmVpbmcgYXBwcm92ZWQgYnkgdGhlIGNvdmVuYW50IHNpZ25lci5cbiAgICAgICAqIFRoaXMgaXMgYSBCaXRjb2luIGNvbnNlbnN1cy0tZW5jb2RlZCBoZXggc3RyaW5nLlxuICAgICAgICogQGV4YW1wbGUgZjM3ZTdjYTJiMjRhNWY3YjhiNmM5YmEwNTRmOTkzMmVmYjA0N2NlODBjZjUwYTExOGUzZjcyNzUxNDI5ZmIxM2EzNTVmYTA5M2JkMzU4Y2RjMzBlZmFjZjVhNjJjYWJlXG4gICAgICAgKi9cbiAgICAgIHNsYXNoaW5nX3R4OiBzdHJpbmc7XG4gICAgICBzdGFrZV9leHBhbnNpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJhYnlsb25Db3ZTdGFrZUV4cGFuc2lvblJlcXVlc3RcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG91dHB1dCBpbmRleCBvZiB0aGUgQmFieWxvbiBzdGFraW5nIHNjcmlwdHMgaW4gdGhlIHN0YWtpbmcgdHJhbnNhY3Rpb24uXG4gICAgICAgKiBAZXhhbXBsZSAxXG4gICAgICAgKi9cbiAgICAgIHN0YWtpbmdfb3V0cHV0X2lkeDogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YWtpbmcgdHJhbnNhY3Rpb24gYmVpbmcgYXBwcm92ZWQgYnkgdGhlIGNvdmVuYW50IHNpZ25lci5cbiAgICAgICAqIFRoaXMgaXMgYSBCaXRjb2luIGNvbnNlbnN1cy0tZW5jb2RlZCBoZXggc3RyaW5nLlxuICAgICAgICogQGV4YW1wbGUgOTU0YmExMThlNzEzM2I0YmIzYTY3YWNjNGY0MGNiOTUyOWFhYmJjMDEwMDcyMjlmN2JmZDg1NzA2ODUwMTc1ZDc3ZDVjYmU1ZTRjMGNhNjcyMzhkMTRhZmE0N2M1MWNjXG4gICAgICAgKi9cbiAgICAgIHN0YWtpbmdfdHg6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1bmJvbmRpbmcgc2NyaXB0IGluIHRoZSBzdGFraW5nIHRyYW5zYWN0aW9uLlxuICAgICAgICogVGhpcyBpcyBhIEJpdGNvaW4gY29uc2Vuc3VzLS1lbmNvZGVkIGhleCBzdHJpbmcuXG4gICAgICAgKiBAZXhhbXBsZSA1NWY2NjM4YzBjMGMwYjBlNTFjYTkyMmUwZTllNmFiZFxuICAgICAgICovXG4gICAgICB1bmJvbmRpbmdfc2NyaXB0OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc2xhc2hpbmcgc2NyaXB0IGluIHRoZSB1bmJvbmRpbmcgdHJhbnNhY3Rpb24uXG4gICAgICAgKiBUaGlzIGlzIGEgQml0Y29pbiBjb25zZW5zdXMtLWVuY29kZWQgaGV4IHN0cmluZy5cbiAgICAgICAqIEBleGFtcGxlIGUxMzNmNWE5MjNhMDdiOWM3ZjY3NjdjZGExNzEwMDViXG4gICAgICAgKi9cbiAgICAgIHVuYm9uZGluZ19zbGFzaGluZ19zY3JpcHQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1bmJvbmRpbmcgdHJhbnNhY3Rpb24gYmVpbmcgYXBwcm92ZWQgYnkgdGhlIGNvdmVuYW50IHNpZ25lci5cbiAgICAgICAqIFRoaXMgaXMgYSBCaXRjb2luIGNvbnNlbnN1cy0tZW5jb2RlZCBoZXggc3RyaW5nLlxuICAgICAgICogQGV4YW1wbGUgOTY5Y2I5NTEyOWE1NWE5NmQ1MTkxOWY1ZjY3ZjNhZGM1OTdlY2RlZTZlZGEyMWU3Nzc3ZjM3MGMzYjE4MDkzMzZlZTdkMDhlYzU3NGM4YmJiMzYxZmY2M2QwMzJhOTc2XG4gICAgICAgKi9cbiAgICAgIHVuYm9uZGluZ190eDogc3RyaW5nO1xuICAgIH07XG4gICAgQmFieWxvbkNvdlNpZ25SZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY3kgZXZhbHVhdGlvbiB0cmVlLiAqL1xuICAgICAgcG9saWN5X2V2YWxfdHJlZT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzbGFzaC11bmJvbmRpbmcgdHJhbnNhY3Rpb24gc2lnbmF0dXJlcyBhcyBhbiBhcnJheSBvZiBoZXggc3RyaW5ncyB3aXRoIG5vIDB4IHByZWZpeFxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICBcIjAyZTIxYTdiMDUxOTUzOWVmNjcwZjc5ZDFjMjVhNTRmOTBiMGM2ZDlmZGI1NmE3ZGU4MTNmYjIwNzAzMzAzMmZmZmFkOGFhYWZlYjFiNzdkZDllYThmMTdkYWRjZjI5NzY5NmJiZjVhNDEzMzI5MmYzNTE1Yjg2YmI5YzJkNzhkOWNcIlxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBzbGFzaF91bmJvbmRpbmdfdHJhbnNhY3Rpb25zX3NpZ25hdHVyZXM6IHN0cmluZ1tdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHNsYXNoaW5nIHRyYW5zYWN0aW9uIHNpZ25hdHVyZXMgYXMgYW4gYXJyYXkgb2YgaGV4IHN0cmluZ3Mgd2l0aCBubyAweCBwcmVmaXhcbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAgXCIwMzA3NWVjYTlkMTc2ZDE2MDVkNmMwOTZjMTExZTlhNGY4ZDg3MzlhYzk3MDhjMWRmM2VkNTE2MTA2ZTdhYjEzODdhMzkyNGE2NjUyYWNmMmUzNTI0MzU5NzMxY2ExZmJiMzM4YTNhZmIxYTY3ZjZlYTE5YzIwN2I2ZmY0NjZhNWFkXCIsXG4gICAgICAgKiAgIFwiMDIyMjI0NDkzZjRjZmZhZDViODQwNzZkYjMyZGQ4YzQ5YTI4ZmY0OGFmNGUxOWUyYmNjOTk1M2ZmODAzNDdiYTZlODM0M2NmN2E0NGU3NGE5NmZmNzFlYTU5YTAzYjQwMTY2ZTg1YjBkMTM1NTk1NGUwNGE0NDI3ZGM4ZDYzN2ZmMFwiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHNsYXNoaW5nX3RyYW5zYWN0aW9uc19zaWduYXR1cmVzOiBzdHJpbmdbXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzaWduYXR1cmUgdGhhdCBhbGxvd3MgZXhwYW5kaW5nIGEgc3Rha2UgYnkgc3BlbmRpbmcgdGhlIGN1cnJlbnQgYWN0aXZlXG4gICAgICAgKiBzdGFrZSB0cmFuc2FjdGlvbiBpbnRvIGEgbmV3IHN0YWtpbmcgdHJhbnNhY3Rpb24uIEEgdmFsdWUgaXMgcHJlc2VudCBpZmYgdGhlXG4gICAgICAgKiBjb3JyZXNwb25kaW5nIHJlcXVlc3QgaW5jbHVkZWQgYSBgc3Rha2VfZXhwYW5zaW9uYCB2YWx1ZS5cbiAgICAgICAqIEBleGFtcGxlIGI1NzNlMzE4ODAzZmQ3YWVlMWJlNWI2YjE4ZDQ5NmNjNjBlY2M1MjQyOWRiZDQ3N2E4NzkyMTdjM2VkMjZhNzk1Y2I0ZjRlODgwYWFmZjNhNmFkNjYzMzVlNTQwNGZhNTFjYWViNDk2NGYwYzlmNzU2MjczNzg2NGUzYmRlNWJjXG4gICAgICAgKi9cbiAgICAgIHN0YWtlX2V4cGFuc2lvbl90cmFuc2FjdGlvbl9zaWduYXR1cmU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHVuYm9uZGluZyB0cmFuc2FjdGlvbiBzaWduYXR1cmUgYXMgaGV4IHN0cmluZyB3aXRoIG5vIDB4IHByZWZpeFxuICAgICAgICogQGV4YW1wbGUgYjU3M2UzMTg4MDNmZDdhZWUxYmU1YjZiMThkNDk2Y2M2MGVjYzUyNDI5ZGJkNDc3YTg3OTIxN2MzZWQyNmE3OTVjYjRmNGU4ODBhYWZmM2E2YWQ2NjMzNWU1NDA0ZmE1MWNhZWI0OTY0ZjBjOWY3NTYyNzM3ODY0ZTNiZGU1YmNcbiAgICAgICAqL1xuICAgICAgdW5ib25kaW5nX3RyYW5zYWN0aW9uX3NpZ25hdHVyZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IHRvIGV4cGFuZCBhbiBhY3RpdmUgc3Rha2Ugd2l0aCBhZGRpdGlvbmFsIGZ1bmRzLiAqL1xuICAgIEJhYnlsb25Db3ZTdGFrZUV4cGFuc2lvblJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB0cmFuc2FjdGlvbiBvdXRwdXQgdGhhdCBpcyBiZWluZyB1c2VkIHRvIGZ1bmQgdGhlIHN0YWtlIGV4cGFuc2lvbi5cbiAgICAgICAqIFRoaXMgaXMgYSBCaXRjb2luIGNvbnNlbnN1cy0tZW5jb2RlZCBoZXggc3RyaW5nLlxuICAgICAgICovXG4gICAgICBvdGhlcl9mdW5kaW5nX291dHB1dDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGFjdGl2ZSBzdGFraW5nIHRyYW5zYWN0aW9uIHRoYXQgaXMgYmVpbmcgZXhwYW5kZWQgd2l0aCB0aGlzIHJlcXVlc3QuXG4gICAgICAgKiBUaGlzIGlzIGEgQml0Y29pbiBjb25zZW5zdXMtLWVuY29kZWQgaGV4IHN0cmluZy5cbiAgICAgICAqIEBleGFtcGxlIDk1NGJhMTE4ZTcxMzNiNGJiM2E2N2FjYzRmNDBjYjk1MjlhYWJiYzAxMDA3MjI5ZjdiZmQ4NTcwNjg1MDE3NWQ3N2Q1Y2JlNWU0YzBjYTY3MjM4ZDE0YWZhNDdjNTFjY1xuICAgICAgICovXG4gICAgICBwcmV2aW91c19hY3RpdmVfc3Rha2VfdHg6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1bmJvbmRpbmcgc2NyaXB0IGluIHRoZSBhY3RpdmUgc3Rha2luZyB0cmFuc2FjdGlvbi5cbiAgICAgICAqIFRoaXMgaXMgYSBCaXRjb2luIGNvbnNlbnN1cy0tZW5jb2RlZCBoZXggc3RyaW5nLlxuICAgICAgICogQGV4YW1wbGUgZTEzM2Y1YTkyM2EwN2I5YzdmNjc2N2NkYTE3MTAwNWJcbiAgICAgICAqL1xuICAgICAgcHJldmlvdXNfYWN0aXZlX3N0YWtlX3VuYm9uZGluZ19zY3JpcHQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpbmRleCBvZiB0aGUgYWN0aXZlIHN0YWtlIG91dHB1dCBpbiB0aGUgYWN0aXZlIHN0YWtpbmcgdHJhbnNhY3Rpb24uXG4gICAgICAgKiBAZXhhbXBsZSAxXG4gICAgICAgKi9cbiAgICAgIHByZXZpb3VzX3N0YWtpbmdfb3V0cHV0X2lkeDogbnVtYmVyO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXR3b3JrLWlkIGZvciBCYWJ5bG9uIHN0YWtpbmdcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIEJhYnlsb25OZXR3b3JrSWQ6IFwiYmJ0NFwiIHwgXCJiYm4xXCIgfCBcImJidDVcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEJhYnlsb24gc3Rha2luZyByZWdpc3RyYXRpb24gc3BlY2lmaWNhdGlvbiAqL1xuICAgIEJhYnlsb25SZWdpc3RyYXRpb25SZXF1ZXN0OiAoe1xuICAgICAgZXhwbGljaXRfcGFyYW1zPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCYWJ5bG9uU3Rha2luZ1BhcmFtc1wiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgU2Nobm9yciBwdWJsaWMga2V5IChpLmUuLCAzMi1ieXRlIFgtY29vcmRpbmF0ZSkgb2YgdGhlIGZpbmFsaXR5XG4gICAgICAgKiBwcm92aWRlciB0byB3aGljaCB0aGUgc3Rha2UgaXMgZGVsZWdhdGVkLlxuICAgICAgICovXG4gICAgICBmaW5hbGl0eV9wcm92aWRlcl9wa3M6IHN0cmluZ1tdO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGxvY2sgdGltZSB1c2VkIGZvciB0aGUgd2l0aGRyYXdhbCBvdXRwdXQgaW4gdGhlIHN0YWtpbmcgZGVwb3NpdCB0cmFuc2FjdGlvblxuICAgICAgICovXG4gICAgICBsb2NrX3RpbWU6IG51bWJlcjtcbiAgICAgIG5ldHdvcms6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFieWxvbk5ldHdvcmtJZFwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBTY2hub3JyIHB1YmxpYyBrZXkgKGkuZS4sIDMyLWJ5dGUgWC1jb29yZGluYXRlKSBvZiB0aGUgc3Rha2VyLiBUaGlzXG4gICAgICAgKiBpcyB0aGUga2V5IHRoYXQgc2lnbnMgdGhlIHNsYXNoaW5nLCB3aXRoZHJhd2FsLCBhbmQgdW5ib25kaW5nIHNjcmlwdHMuXG4gICAgICAgKi9cbiAgICAgIHN0YWtlcl9wazogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHBhcmFtZXRlciB2ZXJzaW9uIHRvIHVzZS4gSWYgYE5vbmVgLCB1c2VzIHRoZSBsYXRlc3QgdmVyc2lvbi5cbiAgICAgICAqL1xuICAgICAgdmVyc2lvbj86IG51bWJlciB8IG51bGw7XG4gICAgfSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGNoYW5nZSBhZGRyZXNzLCBzcGVjaWZpZWQgYXMgYSBCaXRjb2luIHNwZW5kIHNjcmlwdCAqL1xuICAgICAgY2hhbmdlOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdHJhbnNhY3Rpb24gZmVlIHZhbHVlLiBUaGUgYGZlZV90eXBlYCBmaWVsZCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhpc1xuICAgICAgICogaXMgYSBmaXhlZCBmZWUgaW4gc2F0cyBvciBhIHJhdGUgaW4gc2F0cyBwZXIgKGVzdGltYXRlZCkgdmlydHVhbCBieXRlIG9mXG4gICAgICAgKiB0cmFuc2FjdGlvbiB3ZWlnaHQgKGkuZS4sIHNhdHMgcGVyIHZiKS5cbiAgICAgICAqL1xuICAgICAgZmVlOiBudW1iZXI7XG4gICAgICBmZWVfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJGZWVUeXBlXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQnkgZGVmYXVsdCwgdGhlIFBTQlQgaW4gdGhpcyByZXF1ZXN0IGNhbiBvbmx5IHNwZWNpZnkgdHJhbnNhY3Rpb24gaW5wdXRzOlxuICAgICAgICogUFNCVHMgdGhhdCBzcGVjaWZ5IG91dHB1dHMgd2lsbCByZXN1bHQgaW4gYW4gZXJyb3IuIFdoZW4gdGhpcyBmbGFnIGlzIHNldCxcbiAgICAgICAqIGV4aXN0aW5nIG91dHB1dHMgaW4gdGhlIFBTQlQgd2lsbCBpbnN0ZWFkIGJlIGlnbm9yZWQgKGkuZS4sIGRlbGV0ZWQgZnJvbVxuICAgICAgICogdGhlIFBTQlQpIHdoZW4gY3JlYXRpbmcgdGhlIGRlcG9zaXQgdHJhbnNhY3Rpb24uXG4gICAgICAgKi9cbiAgICAgIGlnbm9yZV9wc2J0X291dHB1dHM/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBoZXgtc2VyaWFsaXplZCBQU0JUICh2ZXJzaW9uIDApIGNvbnRhaW5pbmcgdGhlIHRyYW5zYWN0aW9uIGlucHV0cyBhbmRcbiAgICAgICAqIGFsbCBuZWNlc3NhcnkgaW5mb3JtYXRpb24gZm9yIHNpZ25pbmcgKGUuZy4sIHRhcHJvb3QgcGF0aCBhbmQgbGVhZlxuICAgICAgICogaW5mb3JtYXRpb24pLiBUaGlzIFBTQlQgbXVzdCBub3QgaGF2ZSBhbnkgdHJhbnNhY3Rpb24gb3V0cHV0czsgdGhleVxuICAgICAgICogd2lsbCBiZSBhZGRlZCB0byB0aGUgcmV0dXJuZWQgUFNCVC5cbiAgICAgICAqL1xuICAgICAgcHNidDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHZhbHVlIHRvIGJlIHN0YWtlZCBpbiBzYXRzXG4gICAgICAgKi9cbiAgICAgIHZhbHVlOiBudW1iZXI7XG4gICAgfSkgJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBleHBsYWluaW5nXG4gICAgICAgKiB0aGUgb3V0Y29tZSAoaS5lLiwgcGVybWl0dGVkIHZzLiBkZW5pZWQgdnMuIE1GQSByZXF1aXJlZCkgb2YgdGhlIHNpZ24gcmVxdWVzdC5cbiAgICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBleHBsYWluPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIE1GQSBpcyByZXF1aXJlZCwgZmFpbCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIHJldHVybmluZyAyMDIgYW5kIGNyZWF0aW5nXG4gICAgICAgKiBwZW5kaW5nIE1GQSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZmFpbF9vbl9tZmE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuIFBhc3NpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBtYWtlIHJldmlld2luZ1xuICAgICAgICogb2YgcGVuZGluZyBNRkEgcmVxdWVzdHMgYW5kL29yIGhpc3RvcmljYWwga2V5IHRyYW5zYWN0aW9ucyBtb3JlIHRyYW5zcGFyZW50LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGUuZy4sIHRvIGNhcnJ5IGFkZGl0aW9uYWwgZGF0YSB0byBXZWJIb29rIHBvbGljaWVzLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBCYWJ5bG9uIGFkZHJlc3MgdGhhdCB3aWxsIHJlY2VpdmUgdGhlIHN0YWtpbmcgcmV3YXJkcyBmb3IgdGhpcyBkZXBvc2l0LlxuICAgICAgICogQmFieWxvbiByZXF1aXJlcyB0aGlzIHRvIGJlIHRoZSBzYW1lIGFkZHJlc3MgdGhhdCByZWdpc3RlcnMgdGhlIGRlcG9zaXQgb25cbiAgICAgICAqIHRoZSBCYWJ5bG9uIGNoYWluLlxuICAgICAgICpcbiAgICAgICAqIFRoaXMgbXVzdCBiZSBhIHNlY3AyNTZrMSBDb3Ntb3MgYWRkcmVzcyB3aXRoIGVpdGhlciBhIGBiYm5gIG9yIGEgYGNvc21vc2BcbiAgICAgICAqIGh1bWFuLXJlYWRhYmxlIHBhcnQgKGkuZS4sIGBiYm4xLi4uYCBvciBgY29zbW9zMS4uLmApLiBUaGUgbGF0dGVyIGxldHMgeW91XG4gICAgICAgKiBzcGVjaWZ5IHRoZSBtYXRlcmlhbC1pZCBvZiBhIFNlY3BDb3Ntb3MgQ3ViZVNpZ25lciBrZXkuXG4gICAgICAgKiBAZXhhbXBsZSBiYm4xbjVhbm1jMGtrcmg3MHlqeTdmNmYzOTljNzR5ZDA5eGw1dGVmZm1cbiAgICAgICAqL1xuICAgICAgYmJuX2FkZHI6IHN0cmluZztcbiAgICB9O1xuICAgIEJhYnlsb25SZWdpc3RyYXRpb25SZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY3kgZXZhbHVhdGlvbiB0cmVlLiAqL1xuICAgICAgcG9saWN5X2V2YWxfdHJlZT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBCYWJ5bG9uIGFkZHJlc3MgdGhhdCB3aWxsIHJlY2VpdmUgdGhlIHN0YWtpbmcgcmV3YXJkcyBmb3IgdGhpcyBkZXBvc2l0LlxuICAgICAgICpcbiAgICAgICAqIFRoaXMgdmFsdWUgd2lsbCBjb3JyZXNwb25kIHRvIHRoZSBgYmJuX2FkZHJgIHZhbHVlIHNwZWNpZmllZCBpbiB0aGUgcmVxdWVzdCxcbiAgICAgICAqIGJ1dCBpdCB3aWxsIGFsd2F5cyBoYXZlIGEgYGJibmAgaHVtYW4tcmVhZGFibGUgcGFydC5cbiAgICAgICAqIEBleGFtcGxlIGJibjFuNWFubWMwa2tyaDcweWp5N2Y2ZjM5OWM3NHlkMDl4bDV0ZWZmbVxuICAgICAgICovXG4gICAgICBiYm5fYWRkcjogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGRlcG9zaXQgdHJhbnNhY3Rpb24gUFNCVC4gVGhpcyBQU0JUIGluY2x1ZGVzIHNpZ25hdHVyZXMgb24gYW55XG4gICAgICAgKiBpbnB1dHMgY29udHJvbGxlZCBieSB0aGUgc3Rha2VyIHRhcHJvb3Qga2V5IHNwZWNpZmllZCBpbiB0aGUgcmVxdWVzdC5cbiAgICAgICAqL1xuICAgICAgZGVwb3NpdDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGRlcG9zaXQgdHJhbnNhY3Rpb24gZmVlIGluIHNhdHMuXG4gICAgICAgKiBAZXhhbXBsZSAxMzM3XG4gICAgICAgKi9cbiAgICAgIGRlcG9zaXRfZmVlOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcHJvb2Ygb2YgcG9zc2Vzc2lvbiwgaS5lLiwgYSBCSVAzMjIgc2lnbmF0dXJlIG9uIHRoZSBzdGFrZXInc1xuICAgICAgICogQmFieWxvbiBhZGRyZXNzIHNpZ25lZCBieSB0aGUgc3Rha2VyIHRhcHJvb3Qga2V5LiBUaGlzIGlzIGEgQml0Y29pblxuICAgICAgICogd2l0bmVzcyBzdGFjayBpbiBCaXRjb2luIGNvbnNlbnN1cyBoZXggZW5jb2RpbmcuXG4gICAgICAgKi9cbiAgICAgIHBvcDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgc2xhc2gtZGVwb3NpdCB0cmFuc2FjdGlvbiBpbiBCaXRjb2luIGNvbnNlbnN1cyBoZXggZW5jb2RpbmcuICovXG4gICAgICBzbGFzaF9kZXBvc2l0OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3Rha2VyIHRhcHJvb3Qga2V5J3Mgc2lnbmF0dXJlIG9uIHRoZSBzbGFzaC1kZXBvc2l0IHRyYW5zYWN0aW9uLlxuICAgICAgICogVGhpcyBpcyBhIEJJUDM0MCBzaWduYXR1cmUgaW4gaGV4IGZvcm1hdC5cbiAgICAgICAqL1xuICAgICAgc2xhc2hfZGVwb3NpdF9zaWc6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHNsYXNoLXVuYm9uZCB0cmFuc2FjdGlvbiBpbiBCaXRjb2luIGNvbnNlbnN1cyBoZXggZW5jb2RpbmcuICovXG4gICAgICBzbGFzaF91bmJvbmQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFrZXIgdGFwcm9vdCBrZXkncyBzaWduYXR1cmUgb24gdGhlIHNsYXNoLXVuYm9uZCB0cmFuc2FjdGlvbi5cbiAgICAgICAqIFRoaXMgaXMgYSBCSVAzNDAgc2lnbmF0dXJlIGluIGhleCBmb3JtYXQuXG4gICAgICAgKi9cbiAgICAgIHNsYXNoX3VuYm9uZF9zaWc6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlICh1bnNpZ25lZCkgdW5ib25kaW5nIHRyYW5zYWN0aW9uIGluIEJpdGNvaW4gY29uc2Vuc3VzIGhleCBlbmNvZGluZy4gKi9cbiAgICAgIHVuYm9uZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBEYXRhIG5lZWRlZCB0byBjcmVhdGUgdGhlIEJhYnlsb24gZGVwb3NpdCBzY3JpcHRzICovXG4gICAgQmFieWxvblNjcmlwdERhdGE6IHtcbiAgICAgIGV4cGxpY2l0X3BhcmFtcz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFieWxvblN0YWtpbmdQYXJhbXNcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFNjaG5vcnIgcHVibGljIGtleSAoaS5lLiwgMzItYnl0ZSBYLWNvb3JkaW5hdGUpIG9mIHRoZSBmaW5hbGl0eVxuICAgICAgICogcHJvdmlkZXIgdG8gd2hpY2ggdGhlIHN0YWtlIGlzIGRlbGVnYXRlZC5cbiAgICAgICAqL1xuICAgICAgZmluYWxpdHlfcHJvdmlkZXJfcGtzOiBzdHJpbmdbXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBsb2NrIHRpbWUgdXNlZCBmb3IgdGhlIHdpdGhkcmF3YWwgb3V0cHV0IGluIHRoZSBzdGFraW5nIGRlcG9zaXQgdHJhbnNhY3Rpb25cbiAgICAgICAqL1xuICAgICAgbG9ja190aW1lOiBudW1iZXI7XG4gICAgICBuZXR3b3JrOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJhYnlsb25OZXR3b3JrSWRcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgU2Nobm9yciBwdWJsaWMga2V5IChpLmUuLCAzMi1ieXRlIFgtY29vcmRpbmF0ZSkgb2YgdGhlIHN0YWtlci4gVGhpc1xuICAgICAgICogaXMgdGhlIGtleSB0aGF0IHNpZ25zIHRoZSBzbGFzaGluZywgd2l0aGRyYXdhbCwgYW5kIHVuYm9uZGluZyBzY3JpcHRzLlxuICAgICAgICovXG4gICAgICBzdGFrZXJfcGs6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwYXJhbWV0ZXIgdmVyc2lvbiB0byB1c2UuIElmIGBOb25lYCwgdXNlcyB0aGUgbGF0ZXN0IHZlcnNpb24uXG4gICAgICAgKi9cbiAgICAgIHZlcnNpb24/OiBudW1iZXIgfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBEYXRhIG5lZWRlZCB0byBjcmVhdGUgYSBCYWJ5bG9uIGRlcG9zaXQgdHJhbnNhY3Rpb24gKi9cbiAgICBCYWJ5bG9uU3Rha2luZ0RlcG9zaXQ6IHtcbiAgICAgIGV4cGxpY2l0X3BhcmFtcz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFieWxvblN0YWtpbmdQYXJhbXNcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFNjaG5vcnIgcHVibGljIGtleSAoaS5lLiwgMzItYnl0ZSBYLWNvb3JkaW5hdGUpIG9mIHRoZSBmaW5hbGl0eVxuICAgICAgICogcHJvdmlkZXIgdG8gd2hpY2ggdGhlIHN0YWtlIGlzIGRlbGVnYXRlZC5cbiAgICAgICAqL1xuICAgICAgZmluYWxpdHlfcHJvdmlkZXJfcGtzOiBzdHJpbmdbXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBsb2NrIHRpbWUgdXNlZCBmb3IgdGhlIHdpdGhkcmF3YWwgb3V0cHV0IGluIHRoZSBzdGFraW5nIGRlcG9zaXQgdHJhbnNhY3Rpb25cbiAgICAgICAqL1xuICAgICAgbG9ja190aW1lOiBudW1iZXI7XG4gICAgICBuZXR3b3JrOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJhYnlsb25OZXR3b3JrSWRcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgU2Nobm9yciBwdWJsaWMga2V5IChpLmUuLCAzMi1ieXRlIFgtY29vcmRpbmF0ZSkgb2YgdGhlIHN0YWtlci4gVGhpc1xuICAgICAgICogaXMgdGhlIGtleSB0aGF0IHNpZ25zIHRoZSBzbGFzaGluZywgd2l0aGRyYXdhbCwgYW5kIHVuYm9uZGluZyBzY3JpcHRzLlxuICAgICAgICovXG4gICAgICBzdGFrZXJfcGs6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwYXJhbWV0ZXIgdmVyc2lvbiB0byB1c2UuIElmIGBOb25lYCwgdXNlcyB0aGUgbGF0ZXN0IHZlcnNpb24uXG4gICAgICAgKi9cbiAgICAgIHZlcnNpb24/OiBudW1iZXIgfCBudWxsO1xuICAgIH0gJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBjaGFuZ2UgYWRkcmVzcywgc3BlY2lmaWVkIGFzIGEgQml0Y29pbiBzcGVuZCBzY3JpcHQgKi9cbiAgICAgIGNoYW5nZTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHRyYW5zYWN0aW9uIGZlZSB2YWx1ZS4gVGhlIGBmZWVfdHlwZWAgZmllbGQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoaXNcbiAgICAgICAqIGlzIGEgZml4ZWQgZmVlIGluIHNhdHMgb3IgYSByYXRlIGluIHNhdHMgcGVyIChlc3RpbWF0ZWQpIHZpcnR1YWwgYnl0ZSBvZlxuICAgICAgICogdHJhbnNhY3Rpb24gd2VpZ2h0IChpLmUuLCBzYXRzIHBlciB2YikuXG4gICAgICAgKi9cbiAgICAgIGZlZTogbnVtYmVyO1xuICAgICAgZmVlX3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRmVlVHlwZVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEJ5IGRlZmF1bHQsIHRoZSBQU0JUIGluIHRoaXMgcmVxdWVzdCBjYW4gb25seSBzcGVjaWZ5IHRyYW5zYWN0aW9uIGlucHV0czpcbiAgICAgICAqIFBTQlRzIHRoYXQgc3BlY2lmeSBvdXRwdXRzIHdpbGwgcmVzdWx0IGluIGFuIGVycm9yLiBXaGVuIHRoaXMgZmxhZyBpcyBzZXQsXG4gICAgICAgKiBleGlzdGluZyBvdXRwdXRzIGluIHRoZSBQU0JUIHdpbGwgaW5zdGVhZCBiZSBpZ25vcmVkIChpLmUuLCBkZWxldGVkIGZyb21cbiAgICAgICAqIHRoZSBQU0JUKSB3aGVuIGNyZWF0aW5nIHRoZSBkZXBvc2l0IHRyYW5zYWN0aW9uLlxuICAgICAgICovXG4gICAgICBpZ25vcmVfcHNidF9vdXRwdXRzPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgaGV4LXNlcmlhbGl6ZWQgUFNCVCAodmVyc2lvbiAwKSBjb250YWluaW5nIHRoZSB0cmFuc2FjdGlvbiBpbnB1dHMgYW5kXG4gICAgICAgKiBhbGwgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIGZvciBzaWduaW5nIChlLmcuLCB0YXByb290IHBhdGggYW5kIGxlYWZcbiAgICAgICAqIGluZm9ybWF0aW9uKS4gVGhpcyBQU0JUIG11c3Qgbm90IGhhdmUgYW55IHRyYW5zYWN0aW9uIG91dHB1dHM7IHRoZXlcbiAgICAgICAqIHdpbGwgYmUgYWRkZWQgdG8gdGhlIHJldHVybmVkIFBTQlQuXG4gICAgICAgKi9cbiAgICAgIHBzYnQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB2YWx1ZSB0byBiZSBzdGFrZWQgaW4gc2F0c1xuICAgICAgICovXG4gICAgICB2YWx1ZTogbnVtYmVyO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBEYXRhIG5lZWRlZCB0byBjcmVhdGUgYSBCYWJ5bG9uIGVhcmx5LXVuYm9uZGluZyBvciBzbGFzaGluZyB0cmFuc2FjdGlvbiAqL1xuICAgIEJhYnlsb25TdGFraW5nRWFybHlVbmJvbmQ6IHtcbiAgICAgIGV4cGxpY2l0X3BhcmFtcz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFieWxvblN0YWtpbmdQYXJhbXNcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFNjaG5vcnIgcHVibGljIGtleSAoaS5lLiwgMzItYnl0ZSBYLWNvb3JkaW5hdGUpIG9mIHRoZSBmaW5hbGl0eVxuICAgICAgICogcHJvdmlkZXIgdG8gd2hpY2ggdGhlIHN0YWtlIGlzIGRlbGVnYXRlZC5cbiAgICAgICAqL1xuICAgICAgZmluYWxpdHlfcHJvdmlkZXJfcGtzOiBzdHJpbmdbXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBsb2NrIHRpbWUgdXNlZCBmb3IgdGhlIHdpdGhkcmF3YWwgb3V0cHV0IGluIHRoZSBzdGFraW5nIGRlcG9zaXQgdHJhbnNhY3Rpb25cbiAgICAgICAqL1xuICAgICAgbG9ja190aW1lOiBudW1iZXI7XG4gICAgICBuZXR3b3JrOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJhYnlsb25OZXR3b3JrSWRcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgU2Nobm9yciBwdWJsaWMga2V5IChpLmUuLCAzMi1ieXRlIFgtY29vcmRpbmF0ZSkgb2YgdGhlIHN0YWtlci4gVGhpc1xuICAgICAgICogaXMgdGhlIGtleSB0aGF0IHNpZ25zIHRoZSBzbGFzaGluZywgd2l0aGRyYXdhbCwgYW5kIHVuYm9uZGluZyBzY3JpcHRzLlxuICAgICAgICovXG4gICAgICBzdGFrZXJfcGs6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwYXJhbWV0ZXIgdmVyc2lvbiB0byB1c2UuIElmIGBOb25lYCwgdXNlcyB0aGUgbGF0ZXN0IHZlcnNpb24uXG4gICAgICAgKi9cbiAgICAgIHZlcnNpb24/OiBudW1iZXIgfCBudWxsO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBgdHJ1ZWAsIHRoZSByZXN1bHRpbmcgUFNCVCBpcyBlbmNvZGVkIGFzIGEgYmFzZTY0IHN0cmluZy5cbiAgICAgICAqIE90aGVyd2lzZSwgaXQgaXMgZW5jb2RlZCBhcyBhIGhleCBzdHJpbmcuXG4gICAgICAgKi9cbiAgICAgIGFzX2Jhc2U2ND86IGJvb2xlYW47XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRyYW5zYWN0aW9uLWlkIG9mIHRoZSBkZXBvc2l0IHRyYW5zYWN0aW9uIHRvIHVuYm9uZCBvciBzbGFzaC4gKi9cbiAgICAgIHR4aWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB2YWx1ZSBpbiBzYXRzIHRoYXQgd2FzIHN0YWtlZCBpbiB0aGUgdHJhbnNhY3Rpb24gdG8gdW5ib25kIG9yIHNsYXNoLlxuICAgICAgICovXG4gICAgICB2YWx1ZTogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVHJhbnNhY3Rpb24gb3V0cHV0IGluZGV4IG9mIHRoZSBzdGFraW5nIHRyYW5zYWN0aW9uIHRvIHVuYm9uZCBvciBzbGFzaC5cbiAgICAgICAqIEZvciBzdGFraW5nIHRyYW5zYWN0aW9ucyBnZW5lcmF0ZWQgYnkgQ3ViZVNpZ25lciwgdGhpcyB3aWxsIGFsd2F5cyBiZSB6ZXJvLlxuICAgICAgICovXG4gICAgICB2b3V0OiBudW1iZXI7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUGFyYW1ldGVyIHNldCBmb3IgQmFieWxvbiBzdGFraW5nLiBUaGUgbGF0ZXN0IHBhcmFtZXRlciBzZXRzIGFyZVxuICAgICAqIGF2YWlsYWJsZSBmcm9tIDxodHRwczovL2dpdGh1Yi5jb20vYmFieWxvbmNoYWluL25ldHdvcmtzPlxuICAgICAqL1xuICAgIEJhYnlsb25TdGFraW5nUGFyYW1zOiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBCbG9jayBoZWlnaHQgYXQgd2hpY2ggdGhlc2UgcGFyYW1zIHdpbGwgZW50ZXIgdXNlXG4gICAgICAgKi9cbiAgICAgIGFjdGl2YXRpb25faGVpZ2h0OiBudW1iZXI7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFB1YmxpYyBrZXlzIG9mIHRoZSBjb3ZlbmFudCBzaWduZXJzICovXG4gICAgICBjb3ZlbmFudF9wa3M6IHN0cmluZ1tdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBRdW9ydW0gZm9yIGNvdmVuYW50IHNpZ25lciAqL1xuICAgICAgY292ZW5hbnRfcXVvcnVtOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggYW1vdW50IHRoYXQgY2FuIGJlIHN0YWtlZCBpbiBhIHNpbmdsZSB0eG5cbiAgICAgICAqL1xuICAgICAgbWF4X3N0YWtpbmdfYW1vdW50OiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggdGltZWxvY2sgZm9yIHN0YWtpbmdcbiAgICAgICAqL1xuICAgICAgbWF4X3N0YWtpbmdfdGltZTogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gTWluIGFtb3VudCB0aGF0IG11c3QgYmUgc3Rha2VkXG4gICAgICAgKi9cbiAgICAgIG1pbl9zdGFraW5nX2Ftb3VudDogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTWluIHRpbWVsb2NrIGZvciBzdGFraW5nXG4gICAgICAgKi9cbiAgICAgIG1pbl9zdGFraW5nX3RpbWU6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE1pbmltdW0gZmVlIChpbiBzYXRzKSB0aGF0IG11c3QgYmUgcGFpZCBhcyBwYXJ0IG9mIHRoZSBzbGFzaGluZyB0eG5cbiAgICAgICAqL1xuICAgICAgc2xhc2hpbmdfZmVlPzogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gQW4gZXh0cmEgbnVtYmVyIG9mIHNhdHMgdG8gc2xhc2ggaW4gdGhlIHNsYXNoaW5nIHR4bi4gVGhpcyBjYW4gYmUgdXNlZFxuICAgICAgICogdG8gZW5zdXJlIHRoYXQgdGhlIHRyYW5zYWN0aW9uIG1lZXRzIHRoZSBtaW5pbXVtIHNsYXNoaW5nIHJlcXVpcmVtZW50XG4gICAgICAgKiBldmVuIGlmIHRoZSBjb3ZlbmFudCBjb21taXR0ZWUgbWVtYmVycyB1c2UgZmxvYXRzIHRvIGNvbXB1dGUgdGhlIGFtb3VudFxuICAgICAgICogdGhhdCBzaG91bGQgYmUgc2xhc2hlZC4gVGhlIGRlZmF1bHQgaXMgMjsgaXQgc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnkgdG9cbiAgICAgICAqIGdvIGhpZ2hlciB0aGFuIHRoaXMuXG4gICAgICAgKi9cbiAgICAgIHNsYXNoaW5nX21hcmdpbj86IG51bWJlciB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcGtfc2NyaXB0IHZhbHVlIGZvciB0aGUgMHRoIG91dHB1dCBpbmRleCBvZiBhIHNsYXNoaW5nIHRyYW5zYWN0aW9uLFxuICAgICAgICogc2VyaWFsaXplZCBhcyBhIGhleCBieXRlIHN0cmluZy4gVGhpcyB2YWx1ZSBtdXN0IGJlIHByZXNlbnQgdG8gY3JlYXRlXG4gICAgICAgKiBzbGFzaGluZyBzaWduYXR1cmVzLlxuICAgICAgICovXG4gICAgICBzbGFzaGluZ19wa19zY3JpcHQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgZnJhY3Rpb24gb2Ygc3Rha2Ugc2xhc2hlZCBpZiBhIGRvdWJsZS1zaWduIGlzIGRldGVjdGVkICovXG4gICAgICBzbGFzaGluZ19yYXRlPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEJpdGNvaW4gdHJhbnNhY3Rpb24gdGFnIGZvciBzdGFraW5nIG1ldGFkYXRhLiBJZiBwcmVzZW50LCBhbiBpZGVudGlmaWFibGVcbiAgICAgICAqIHN0YWtpbmcgb3V0cHV0IChpLmUuLCBvbmUgd2l0aCBhbiBPUF9SRVRVUk4pIHdpbGwgYmUgY3JlYXRlZC5cbiAgICAgICAqL1xuICAgICAgdGFnPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIEZlZSAoaW4gc2F0cykgdGhhdCBtdXN0IGJlIHNwZW50IGFzIHBhcnQgb2YgdGhlIHVuYm9uZGluZyB0eG5cbiAgICAgICAqL1xuICAgICAgdW5ib25kaW5nX2ZlZTogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTWluIHRpbWVsb2NrIGZvciBhbiB1bmJvbmRpbmcgc2NyaXB0XG4gICAgICAgKi9cbiAgICAgIHVuYm9uZGluZ190aW1lOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBQYXJhbWV0ZXIgdmVyc2lvblxuICAgICAgICovXG4gICAgICB2ZXJzaW9uOiBudW1iZXI7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBhY3Rpb25zIHBvc3NpYmxlIHZpYSB0aGUgQmFieWxvbiBTdGFraW5nIGVuZHBvaW50ICovXG4gICAgQmFieWxvblN0YWtpbmdSZXF1ZXN0OlxuICAgICAgfCAoY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCYWJ5bG9uU3Rha2luZ0RlcG9zaXRcIl0gJiB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgYWN0aW9uOiBcImRlcG9zaXRcIjtcbiAgICAgICAgfSlcbiAgICAgIHwgKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFieWxvblN0YWtpbmdFYXJseVVuYm9uZFwiXSAmIHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBhY3Rpb246IFwiZWFybHlfdW5ib25kXCI7XG4gICAgICAgIH0pXG4gICAgICB8IChjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJhYnlsb25TdGFraW5nV2l0aGRyYXdhbFwiXSAmIHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBhY3Rpb246IFwid2l0aGRyYXdfdGltZWxvY2tcIjtcbiAgICAgICAgfSlcbiAgICAgIHwgKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFieWxvblN0YWtpbmdXaXRoZHJhd2FsXCJdICYge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIGFjdGlvbjogXCJ3aXRoZHJhd19lYXJseV91bmJvbmRcIjtcbiAgICAgICAgfSlcbiAgICAgIHwgKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFieWxvblN0YWtpbmdXaXRoZHJhd2FsXCJdICYge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIGFjdGlvbjogXCJ3aXRoZHJhd19zbGFzaGluZ1wiO1xuICAgICAgICB9KVxuICAgICAgfCAoY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCYWJ5bG9uU3Rha2luZ0Vhcmx5VW5ib25kXCJdICYge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIGFjdGlvbjogXCJzbGFzaF9kZXBvc2l0XCI7XG4gICAgICAgIH0pXG4gICAgICB8IChjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJhYnlsb25TdGFraW5nRWFybHlVbmJvbmRcIl0gJiB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgYWN0aW9uOiBcInNsYXNoX2Vhcmx5X3VuYm9uZFwiO1xuICAgICAgICB9KTtcbiAgICBCYWJ5bG9uU3Rha2luZ1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHBvbGljeSBldmFsdWF0aW9uIHRyZWUuICovXG4gICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHRyYW5zYWN0aW9uIGZlZSBpbiBzYXRzXG4gICAgICAgKiBAZXhhbXBsZSAxMzM3XG4gICAgICAgKi9cbiAgICAgIGZlZTogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFBTQlQgaW4gZWl0aGVyIGhleCBvciBiYXNlNjQgc2VyaWFsaXphdGlvblxuICAgICAgICogQGV4YW1wbGUgNzA3MzYyNzRmZjAxMDA1ZS4uLlxuICAgICAgICovXG4gICAgICBwc2J0OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIERhdGEgbmVlZGVkIHRvIGNyZWF0ZSBhIEJhYnlsb24gd2l0aGRyYXdhbCB0cmFuc2FjdGlvbiAqL1xuICAgIEJhYnlsb25TdGFraW5nV2l0aGRyYXdhbDoge1xuICAgICAgZXhwbGljaXRfcGFyYW1zPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCYWJ5bG9uU3Rha2luZ1BhcmFtc1wiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgU2Nobm9yciBwdWJsaWMga2V5IChpLmUuLCAzMi1ieXRlIFgtY29vcmRpbmF0ZSkgb2YgdGhlIGZpbmFsaXR5XG4gICAgICAgKiBwcm92aWRlciB0byB3aGljaCB0aGUgc3Rha2UgaXMgZGVsZWdhdGVkLlxuICAgICAgICovXG4gICAgICBmaW5hbGl0eV9wcm92aWRlcl9wa3M6IHN0cmluZ1tdO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGxvY2sgdGltZSB1c2VkIGZvciB0aGUgd2l0aGRyYXdhbCBvdXRwdXQgaW4gdGhlIHN0YWtpbmcgZGVwb3NpdCB0cmFuc2FjdGlvblxuICAgICAgICovXG4gICAgICBsb2NrX3RpbWU6IG51bWJlcjtcbiAgICAgIG5ldHdvcms6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFieWxvbk5ldHdvcmtJZFwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBTY2hub3JyIHB1YmxpYyBrZXkgKGkuZS4sIDMyLWJ5dGUgWC1jb29yZGluYXRlKSBvZiB0aGUgc3Rha2VyLiBUaGlzXG4gICAgICAgKiBpcyB0aGUga2V5IHRoYXQgc2lnbnMgdGhlIHNsYXNoaW5nLCB3aXRoZHJhd2FsLCBhbmQgdW5ib25kaW5nIHNjcmlwdHMuXG4gICAgICAgKi9cbiAgICAgIHN0YWtlcl9wazogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHBhcmFtZXRlciB2ZXJzaW9uIHRvIHVzZS4gSWYgYE5vbmVgLCB1c2VzIHRoZSBsYXRlc3QgdmVyc2lvbi5cbiAgICAgICAqL1xuICAgICAgdmVyc2lvbj86IG51bWJlciB8IG51bGw7XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIGB0cnVlYCwgdGhlIHJlc3VsdGluZyBQU0JUIGlzIGVuY29kZWQgYXMgYSBiYXNlNjQgc3RyaW5nLlxuICAgICAgICogT3RoZXJ3aXNlLCBpdCBpcyBlbmNvZGVkIGFzIGEgaGV4IHN0cmluZy5cbiAgICAgICAqL1xuICAgICAgYXNfYmFzZTY0PzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB0cmFuc2FjdGlvbiBmZWUgdmFsdWUuIFRoZSBgZmVlX3R5cGVgIGZpZWxkIGRldGVybWluZXMgd2hldGhlciB0aGlzXG4gICAgICAgKiBpcyBhIGZpeGVkIGZlZSBpbiBzYXRzIG9yIGEgcmF0ZSBpbiBzYXRzIHBlciAoZXN0aW1hdGVkKSB2aXJ0dWFsIGJ5dGUgb2ZcbiAgICAgICAqIHRyYW5zYWN0aW9uIHdlaWdodCAoaS5lLiwgc2F0cyBwZXIgdmIpLlxuICAgICAgICovXG4gICAgICBmZWU6IG51bWJlcjtcbiAgICAgIGZlZV90eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkZlZVR5cGVcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB3aXRoZHJhd2FsIHJlY2lwaWVudCwgc3BlY2lmaWVkIGFzIGEgQml0Y29pbiBzcGVuZCBzY3JpcHQgKi9cbiAgICAgIHJlY2lwaWVudDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUcmFuc2FjdGlvbi1pZCBvZiB0aGUgZGVwb3NpdCBvciBlYXJseSB1bmJvbmRpbmcgdHJhbnNhY3Rpb24gdG8gd2l0aGRyYXcgZnJvbSAqL1xuICAgICAgdHhpZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQW4gb3B0aW9uYWwgbG9jayBoZWlnaHQgKGluIGJsb2NrcykgZm9yIHRoaXMgdHJhbnNhY3Rpb24uIFRoZSByZXN1bHRpbmdcbiAgICAgICAqIHRyYW5zYWN0aW9uIGNhbm5vdCBiZSBtaW5lZCBiZWZvcmUgdGhlIHNwZWNpZmllZCBibG9jayBoZWlnaHQuXG4gICAgICAgKi9cbiAgICAgIHR4bl9sb2NrX2hlaWdodD86IG51bWJlciB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdmFsdWUgaW4gc2F0cyB0aGF0IGlzIHN0YWtlZCBpbiB0aGUgdHJhbnNhY3Rpb24gYmVpbmcgd2l0aGRyYXduXG4gICAgICAgKi9cbiAgICAgIHZhbHVlOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUcmFuc2FjdGlvbiBvdXRwdXQgaW5kZXggb2YgdGhlIHN0YWtpbmcgdHJhbnNhY3Rpb24gZnJvbSB3aGljaCB0byB3aXRoZHJhdy5cbiAgICAgICAqIEZvciBzdGFraW5nIHRyYW5zYWN0aW9ucyBnZW5lcmF0ZWQgYnkgQ3ViZVNpZ25lciwgdGhpcyB3aWxsIGFsd2F5cyBiZSAwLlxuICAgICAgICogRm9yIHNsYXNoaW5nIHRyYW5zYWN0aW9ucyBnZW5lcmF0ZWQgYnkgQ3ViZVNpZ25lciwgdGhpcyB3aWxsIGFsd2F5cyBiZSAxLlxuICAgICAgICovXG4gICAgICB2b3V0OiBudW1iZXI7XG4gICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBCYWRHYXRld2F5RXJyb3JDb2RlOlxuICAgICAgfCBcIkdlbmVyaWNcIlxuICAgICAgfCBcIkN1c3RvbUNoYWluUnBjRXJyb3JcIlxuICAgICAgfCBcIkVzcGxvcmFBcGlFcnJvclwiXG4gICAgICB8IFwiU2VudHJ5QXBpRXJyb3JcIlxuICAgICAgfCBcIkNhbGxXZWJob29rRXJyb3JcIlxuICAgICAgfCBcIk9BdXRoUHJvdmlkZXJFcnJvclwiXG4gICAgICB8IFwiT2lkY0Rpc292ZXJ5RmFpbGVkXCJcbiAgICAgIHwgXCJPaWRjSXNzdWVySndrRW5kcG9pbnRVbmF2YWlsYWJsZVwiXG4gICAgICB8IFwiU210cFNlcnZlclVuYXZhaWxhYmxlXCI7XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgQmFkUmVxdWVzdEVycm9yQ29kZTpcbiAgICAgIHwgXCJHZW5lcmljQmFkUmVxdWVzdFwiXG4gICAgICB8IFwiRGlzYWxsb3dlZEFsbG93UnVsZVJlZmVyZW5jZVwiXG4gICAgICB8IFwiSW52YWxpZFBhZ2luYXRpb25Ub2tlblwiXG4gICAgICB8IFwiSW52YWxpZEVtYWlsXCJcbiAgICAgIHwgXCJJbnZhbGlkRW1haWxUZW1wbGF0ZVwiXG4gICAgICB8IFwiUXVlcnlNZXRyaWNzRXJyb3JcIlxuICAgICAgfCBcIkludmFsaWRUZWxlZ3JhbURhdGFcIlxuICAgICAgfCBcIlZhbGlkYXRpb25FcnJvclwiXG4gICAgICB8IFwiV2ViaG9va1BvbGljeVRpbWVvdXRPdXRPZkJvdW5kc1wiXG4gICAgICB8IFwiV2ViaG9va1BvbGljeURpc2FsbG93ZWRVcmxTY2hlbWVcIlxuICAgICAgfCBcIldlYmhvb2tQb2xpY3lEaXNhbGxvd2VkVXJsSG9zdFwiXG4gICAgICB8IFwiV2ViaG9va1BvbGljeURpc2FsbG93ZWRIZWFkZXJzXCJcbiAgICAgIHwgXCJSZXNlcnZlZE5hbWVcIlxuICAgICAgfCBcIlVzZXJFbWFpbE5vdENvbmZpZ3VyZWRcIlxuICAgICAgfCBcIkVtYWlsUGFzc3dvcmROb3RGb3VuZFwiXG4gICAgICB8IFwiUGFzc3dvcmRBdXRoTm90QWxsb3dlZEJ5SW52aXRhdGlvblwiXG4gICAgICB8IFwiT25lVGltZUNvZGVFeHBpcmVkXCJcbiAgICAgIHwgXCJJbnZhbGlkQm9keVwiXG4gICAgICB8IFwiSW52YWxpZEp3dFwiXG4gICAgICB8IFwiSW52aXRhdGlvbk5vTG9uZ2VyVmFsaWRcIlxuICAgICAgfCBcIlRva2VuUmVxdWVzdEVycm9yXCJcbiAgICAgIHwgXCJJbnZhbGlkTWZhUmVjZWlwdFwiXG4gICAgICB8IFwiSW52YWxpZE1mYVBvbGljeUNvdW50XCJcbiAgICAgIHwgXCJJbnZhbGlkTWZhUG9saWN5TnVtQXV0aEZhY3RvcnNcIlxuICAgICAgfCBcIkludmFsaWRNZmFQb2xpY3lOdW1BbGxvd2VkQXBwcm92ZXJzXCJcbiAgICAgIHwgXCJJbnZhbGlkTWZhUG9saWN5R3JhY2VQZXJpb2RUb29Mb25nXCJcbiAgICAgIHwgXCJJbnZhbGlkQmFieWxvblN0YWtpbmdQb2xpY3lQYXJhbXNcIlxuICAgICAgfCBcIkludmFsaWRTdWlUeFJlY2VpdmVyc0VtcHR5QWxsb3dsaXN0XCJcbiAgICAgIHwgXCJJbnZhbGlkQnRjVHhSZWNlaXZlcnNFbXB0eUFsbG93bGlzdFwiXG4gICAgICB8IFwiSW52YWxpZFJlcXVpcmVSb2xlU2Vzc2lvbkFsbG93bGlzdFwiXG4gICAgICB8IFwiSW52YWxpZENyZWF0ZUtleUNvdW50XCJcbiAgICAgIHwgXCJJbnZhbGlkRGlmZmllSGVsbG1hbkNvdW50XCJcbiAgICAgIHwgXCJPcmdJbnZpdGVFeGlzdGluZ1VzZXJcIlxuICAgICAgfCBcIk9yZ1VzZXJBbHJlYWR5RXhpc3RzXCJcbiAgICAgIHwgXCJPcmdOYW1lVGFrZW5cIlxuICAgICAgfCBcIkt3a05vdEZvdW5kSW5SZWdpb25cIlxuICAgICAgfCBcIk9yZ0lzTm90T3JnRXhwb3J0XCJcbiAgICAgIHwgXCJSb2xlTmFtZVRha2VuXCJcbiAgICAgIHwgXCJQb2xpY3lOYW1lVGFrZW5cIlxuICAgICAgfCBcIk5hbWVUYWtlblwiXG4gICAgICB8IFwiQ29udGFjdE5hbWVJbnZhbGlkXCJcbiAgICAgIHwgXCJDb250YWN0QWRkcmVzc2VzSW52YWxpZFwiXG4gICAgICB8IFwiQ29udGFjdExhYmVsSW52YWxpZFwiXG4gICAgICB8IFwiQ29udGFjdE1vZGlmaWVkXCJcbiAgICAgIHwgXCJQb2xpY3lOb3RGb3VuZFwiXG4gICAgICB8IFwiUG9saWN5VmVyc2lvbk5vdEZvdW5kXCJcbiAgICAgIHwgXCJQb2xpY3lSdWxlRGlzYWxsb3dlZEJ5VHlwZVwiXG4gICAgICB8IFwiUG9saWN5VHlwZURpc2FsbG93ZWRcIlxuICAgICAgfCBcIlBvbGljeUR1cGxpY2F0ZUVycm9yXCJcbiAgICAgIHwgXCJQb2xpY3lTdGlsbEF0dGFjaGVkXCJcbiAgICAgIHwgXCJQb2xpY3lNb2RpZmllZFwiXG4gICAgICB8IFwiUG9saWN5Tm90QXR0YWNoZWRcIlxuICAgICAgfCBcIkFkZEtleVRvUm9sZUNvdW50VG9vSGlnaFwiXG4gICAgICB8IFwiSW52YWxpZEtleUlkXCJcbiAgICAgIHwgXCJJbnZhbGlkVGltZUxvY2tBbHJlYWR5SW5UaGVQYXN0XCJcbiAgICAgIHwgXCJJbnZhbGlkUmVzdHJpY3RlZFNjb3Blc1wiXG4gICAgICB8IFwiSW52YWxpZFVwZGF0ZVwiXG4gICAgICB8IFwiSW52YWxpZE1ldGFkYXRhTGVuZ3RoXCJcbiAgICAgIHwgXCJJbnZhbGlkTGVuZ3RoXCJcbiAgICAgIHwgXCJJbnZhbGlkS2V5TWF0ZXJpYWxJZFwiXG4gICAgICB8IFwiS2V5Tm90Rm91bmRcIlxuICAgICAgfCBcIlNpd2VDaGFsbGVuZ2VOb3RGb3VuZFwiXG4gICAgICB8IFwiU2l3ZUludmFsaWRSZXF1ZXN0XCJcbiAgICAgIHwgXCJVc2VyRXhwb3J0RGVyaXZlZEtleVwiXG4gICAgICB8IFwiVXNlckV4cG9ydFB1YmxpY0tleUludmFsaWRcIlxuICAgICAgfCBcIk5pc3RQMjU2UHVibGljS2V5SW52YWxpZFwiXG4gICAgICB8IFwiVW5hYmxlVG9BY2Nlc3NTbXRwUmVsYXlcIlxuICAgICAgfCBcIlVzZXJFeHBvcnRJblByb2dyZXNzXCJcbiAgICAgIHwgXCJSb2xlTm90Rm91bmRcIlxuICAgICAgfCBcIkludmFsaWRSb2xlTmFtZU9ySWRcIlxuICAgICAgfCBcIkludmFsaWRNZmFSZWNlaXB0T3JnSWRNaXNzaW5nXCJcbiAgICAgIHwgXCJJbnZhbGlkTWZhUmVjZWlwdEludmFsaWRPcmdJZFwiXG4gICAgICB8IFwiTWZhUmVxdWVzdE5vdEZvdW5kXCJcbiAgICAgIHwgXCJJbnZhbGlkS2V5VHlwZVwiXG4gICAgICB8IFwiSW52YWxpZEtleU1hdGVyaWFsXCJcbiAgICAgIHwgXCJJbnZhbGlkSGV4VmFsdWVcIlxuICAgICAgfCBcIkludmFsaWRCYXNlMzJWYWx1ZVwiXG4gICAgICB8IFwiSW52YWxpZEJhc2U1OFZhbHVlXCJcbiAgICAgIHwgXCJJbnZhbGlkU3M1OFZhbHVlXCJcbiAgICAgIHwgXCJJbnZhbGlkRm9ya1ZlcnNpb25MZW5ndGhcIlxuICAgICAgfCBcIkludmFsaWRFdGhBZGRyZXNzXCJcbiAgICAgIHwgXCJJbnZhbGlkU3RlbGxhckFkZHJlc3NcIlxuICAgICAgfCBcIkludmFsaWRPcmdOYW1lT3JJZFwiXG4gICAgICB8IFwiSW52YWxpZFVwZGF0ZU9yZ1JlcXVlc3REaXNhbGxvd2VkTWZhVHlwZVwiXG4gICAgICB8IFwiSW52YWxpZFVwZGF0ZU9yZ1JlcXVlc3RFbXB0eUFsbG93ZWRNZmFUeXBlc1wiXG4gICAgICB8IFwiRW1haWxPdHBEZWxheVRvb1Nob3J0Rm9yUmVnaXN0ZXJNZmFcIlxuICAgICAgfCBcIkludmFsaWRTdGFrZURlcG9zaXRcIlxuICAgICAgfCBcIkludmFsaWRCbG9iU2lnblJlcXVlc3RcIlxuICAgICAgfCBcIkludmFsaWREaWZmaWVIZWxsbWFuUmVxdWVzdFwiXG4gICAgICB8IFwiSW52YWxpZFNvbGFuYVNpZ25SZXF1ZXN0XCJcbiAgICAgIHwgXCJJbnZhbGlkRWlwNzEyU2lnblJlcXVlc3RcIlxuICAgICAgfCBcIk9ubHlTcGVjaWZ5T25lXCJcbiAgICAgIHwgXCJOb09pZGNEYXRhSW5Qcm9vZlwiXG4gICAgICB8IFwiSW52YWxpZEV2bVNpZ25SZXF1ZXN0XCJcbiAgICAgIHwgXCJJbnZhbGlkRXRoMlNpZ25SZXF1ZXN0XCJcbiAgICAgIHwgXCJJbnZhbGlkRGVyaXZlS2V5UmVxdWVzdFwiXG4gICAgICB8IFwiSW52YWxpZFN0YWtpbmdBbW91bnRcIlxuICAgICAgfCBcIkN1c3RvbVN0YWtpbmdBbW91bnROb3RBbGxvd2VkRm9yV3JhcHBlckNvbnRyYWN0XCJcbiAgICAgIHwgXCJJbnZhbGlkVW5zdGFrZVJlcXVlc3RcIlxuICAgICAgfCBcIkludmFsaWRDcmVhdGVVc2VyUmVxdWVzdFwiXG4gICAgICB8IFwiVXNlckFscmVhZHlFeGlzdHNcIlxuICAgICAgfCBcIklkcFVzZXJBbHJlYWR5RXhpc3RzXCJcbiAgICAgIHwgXCJDb2duaXRvVXNlckFscmVhZHlPcmdNZW1iZXJcIlxuICAgICAgfCBcIlVzZXJOb3RGb3VuZFwiXG4gICAgICB8IFwiVXNlcldpdGhFbWFpbE5vdEZvdW5kXCJcbiAgICAgIHwgXCJQb2xpY3lLZXlNaXNtYXRjaFwiXG4gICAgICB8IFwiRW1wdHlTY29wZXNcIlxuICAgICAgfCBcIkludmFsaWRTY29wZXNGb3JSb2xlU2Vzc2lvblwiXG4gICAgICB8IFwiSW52YWxpZExpZmV0aW1lXCJcbiAgICAgIHwgXCJOb1NpbmdsZUtleUZvclVzZXJcIlxuICAgICAgfCBcIkludmFsaWRPcmdQb2xpY3lSdWxlXCJcbiAgICAgIHwgXCJTb3VyY2VJcEFsbG93bGlzdEVtcHR5XCJcbiAgICAgIHwgXCJMaW1pdFdpbmRvd1Rvb0xvbmdcIlxuICAgICAgfCBcIkVyYzIwQ29udHJhY3REaXNhbGxvd2VkXCJcbiAgICAgIHwgXCJFbXB0eVJ1bGVFcnJvclwiXG4gICAgICB8IFwiT3B0aW9uYWxMaXN0RW1wdHlcIlxuICAgICAgfCBcIk11bHRpcGxlRXhjbHVzaXZlRmllbGRzUHJvdmlkZWRcIlxuICAgICAgfCBcIkR1cGxpY2F0ZUZpZWxkRW50cnlcIlxuICAgICAgfCBcIkludmFsaWRSYW5nZVwiXG4gICAgICB8IFwiSW52YWxpZE9yZ1BvbGljeVJlcGVhdGVkUnVsZVwiXG4gICAgICB8IFwiSW52YWxpZFN1aVRyYW5zYWN0aW9uXCJcbiAgICAgIHwgXCJTdWlTZW5kZXJNaXNtYXRjaFwiXG4gICAgICB8IFwiQXZhU2lnbkhhc2hFcnJvclwiXG4gICAgICB8IFwiQXZhU2lnbkVycm9yXCJcbiAgICAgIHwgXCJCdGNTZWd3aXRIYXNoRXJyb3JcIlxuICAgICAgfCBcIkJ0Y1RhcHJvb3RIYXNoRXJyb3JcIlxuICAgICAgfCBcIkJ0Y1NpZ25FcnJvclwiXG4gICAgICB8IFwiVGFwcm9vdFNpZ25FcnJvclwiXG4gICAgICB8IFwiRWlwNzEyU2lnbkVycm9yXCJcbiAgICAgIHwgXCJJbnZhbGlkTWVtYmVyUm9sZUluVXNlckFkZFwiXG4gICAgICB8IFwiSW52YWxpZE1lbWJlclJvbGVJblJlY2lwaWVudEFkZFwiXG4gICAgICB8IFwiVGhpcmRQYXJ0eVVzZXJBbHJlYWR5RXhpc3RzXCJcbiAgICAgIHwgXCJPaWRjSWRlbnRpdHlBbHJlYWR5RXhpc3RzXCJcbiAgICAgIHwgXCJVc2VyQWxyZWFkeUhhc0lkZW50aXR5XCJcbiAgICAgIHwgXCJUaGlyZFBhcnR5VXNlck5vdEZvdW5kXCJcbiAgICAgIHwgXCJEZWxldGVPaWRjVXNlckVycm9yXCJcbiAgICAgIHwgXCJEZWxldGVVc2VyRXJyb3JcIlxuICAgICAgfCBcIlNlc3Npb25Sb2xlTWlzbWF0Y2hcIlxuICAgICAgfCBcIkludmFsaWRPaWRjVG9rZW5cIlxuICAgICAgfCBcIkludmFsaWRPaWRjSWRlbnRpdHlcIlxuICAgICAgfCBcIk9pZGNJc3N1ZXJVbnN1cHBvcnRlZFwiXG4gICAgICB8IFwiT2lkY0lzc3Vlck5vdEFsbG93ZWRcIlxuICAgICAgfCBcIk9pZGNJc3N1ZXJOb0FwcGxpY2FibGVKd2tcIlxuICAgICAgfCBcIkZpZG9LZXlBbHJlYWR5UmVnaXN0ZXJlZFwiXG4gICAgICB8IFwiRmlkb0tleVNpZ25Db3VudFRvb0xvd1wiXG4gICAgICB8IFwiRmlkb1ZlcmlmaWNhdGlvbkZhaWxlZFwiXG4gICAgICB8IFwiRmlkb0NoYWxsZW5nZU1mYU1pc21hdGNoXCJcbiAgICAgIHwgXCJVbnN1cHBvcnRlZExlZ2FjeUNvZ25pdG9TZXNzaW9uXCJcbiAgICAgIHwgXCJJbnZhbGlkSWRlbnRpdHlQcm9vZlwiXG4gICAgICB8IFwiUGFnaW5hdGlvbkRhdGFFeHBpcmVkXCJcbiAgICAgIHwgXCJFeGlzdGluZ0tleXNWaW9sYXRlRXhjbHVzaXZlS2V5QWNjZXNzXCJcbiAgICAgIHwgXCJFeHBvcnREZWxheVRvb1Nob3J0XCJcbiAgICAgIHwgXCJFeHBvcnRXaW5kb3dUb29Mb25nXCJcbiAgICAgIHwgXCJJbnZhbGlkVG90cEZhaWx1cmVMaW1pdFwiXG4gICAgICB8IFwiSW52YWxpZEVpcDE5MVNpZ25SZXF1ZXN0XCJcbiAgICAgIHwgXCJDYW5ub3RSZXNlbmRVc2VySW52aXRhdGlvblwiXG4gICAgICB8IFwiSW52YWxpZE5vdGlmaWNhdGlvbkVuZHBvaW50Q291bnRcIlxuICAgICAgfCBcIkNhbm5vdERlbGV0ZVBlbmRpbmdTdWJzY3JpcHRpb25cIlxuICAgICAgfCBcIkludmFsaWROb3RpZmljYXRpb25VcmxQcm90b2NvbFwiXG4gICAgICB8IFwiRW1wdHlPbmVPZk9yZ0V2ZW50RmlsdGVyXCJcbiAgICAgIHwgXCJFbXB0eUFsbEV4Y2VwdE9yZ0V2ZW50RmlsdGVyXCJcbiAgICAgIHwgXCJJbnZhbGlkVGFwTm9kZUhhc2hcIlxuICAgICAgfCBcIkludmFsaWRPbmVUaW1lQ29kZVwiXG4gICAgICB8IFwiTWVzc2FnZU5vdEZvdW5kXCJcbiAgICAgIHwgXCJNZXNzYWdlQWxyZWFkeVNpZ25lZFwiXG4gICAgICB8IFwiTWVzc2FnZVJlamVjdGVkXCJcbiAgICAgIHwgXCJNZXNzYWdlUmVwbGFjZWRcIlxuICAgICAgfCBcIkludmFsaWRNZXNzYWdlVHlwZVwiXG4gICAgICB8IFwiRW1wdHlBZGRyZXNzXCJcbiAgICAgIHwgXCJJbnZhbGlkRXRoMlNpZ25pbmdQb2xpY3lTbG90UmFuZ2VcIlxuICAgICAgfCBcIkludmFsaWRFdGgyU2lnbmluZ1BvbGljeUVwb2NoUmFuZ2VcIlxuICAgICAgfCBcIkludmFsaWRFdGgyU2lnbmluZ1BvbGljeVRpbWVzdGFtcFJhbmdlXCJcbiAgICAgIHwgXCJJbnZhbGlkRXRoMlNpZ25pbmdQb2xpY3lPdmVybGFwcGluZ1J1bGVcIlxuICAgICAgfCBcIlJwY1VybE1pc3NpbmdcIlxuICAgICAgfCBcIk1taUNoYWluSWRNaXNzaW5nXCJcbiAgICAgIHwgXCJFdGhlcnNJbnZhbGlkUnBjVXJsXCJcbiAgICAgIHwgXCJFdGhlcnNHZXRUcmFuc2FjdGlvbkNvdW50RXJyb3JcIlxuICAgICAgfCBcIkludmFsaWRQYXNzd29yZFwiXG4gICAgICB8IFwiQmFieWxvblN0YWtpbmdGZWVQbHVzRHVzdE92ZXJmbG93XCJcbiAgICAgIHwgXCJCYWJ5bG9uU3Rha2luZ1wiXG4gICAgICB8IFwiQmFieWxvblN0YWtpbmdJbmNvcnJlY3RLZXlcIlxuICAgICAgfCBcIkJhYnlsb25TdGFraW5nU2Vnd2l0Tm9uRGVwb3NpdFwiXG4gICAgICB8IFwiQmFieWxvblN0YWtpbmdSZWdpc3RyYXRpb25SZXF1aXJlc1RhcHJvb3RcIlxuICAgICAgfCBcIlBzYnRTaWduaW5nXCJcbiAgICAgIHwgXCJUb29NYW55UmVzZXRzXCJcbiAgICAgIHwgXCJUb29NYW55UmVxdWVzdHNcIlxuICAgICAgfCBcIlRvb01hbnlGYWlsZWRMb2dpbnNcIlxuICAgICAgfCBcIkJhZEJ0Y01lc3NhZ2VTaWduUDJzaEZsYWdcIlxuICAgICAgfCBcIkludmFsaWRUZW5kZXJtaW50UmVxdWVzdFwiXG4gICAgICB8IFwiUG9saWN5VmVyc2lvbk1heFJlYWNoZWRcIlxuICAgICAgfCBcIlBvbGljeVZlcnNpb25JbnZhbGlkXCJcbiAgICAgIHwgXCJQb2xpY3lTZWNyZXRMaW1pdFJlYWNoZWRcIlxuICAgICAgfCBcIlBvbGljeVNlY3JldFRvb0xhcmdlXCJcbiAgICAgIHwgXCJJbnZhbGlkSW1wb3J0S2V5XCJcbiAgICAgIHwgXCJBbGllbk93bmVySW52YWxpZFwiXG4gICAgICB8IFwiRW1wdHlVcGRhdGVSZXF1ZXN0XCJcbiAgICAgIHwgXCJJbnZhbGlkUG9saWN5UmVmZXJlbmNlXCJcbiAgICAgIHwgXCJQb2xpY3lFbmdpbmVEaXNhYmxlZFwiXG4gICAgICB8IFwiSW52YWxpZFdhc21Qb2xpY3lcIlxuICAgICAgfCBcIkludmFsaWRQb2xpY3lcIlxuICAgICAgfCBcIlJlZHVuZGFudERlcml2YXRpb25QYXRoXCJcbiAgICAgIHwgXCJJbXBvcnRLZXlNaXNzaW5nXCJcbiAgICAgIHwgXCJJbnZhbGlkQWJpTWV0aG9kc1wiXG4gICAgICB8IFwiQmFieWxvbkNvdlNpZ25cIlxuICAgICAgfCBcIkludmFsaWRQb2xpY3lMb2dzUmVxdWVzdFwiXG4gICAgICB8IFwiVXNlclByb2ZpbGVNaWdyYXRpb25NdWx0aXBsZUVudHJpZXNcIlxuICAgICAgfCBcIlVzZXJQcm9maWxlTWlncmF0aW9uVG9vTWFueUl0ZW1zXCJcbiAgICAgIHwgXCJJbnB1dFRvb1Nob3J0XCJcbiAgICAgIHwgXCJJbnZhbGlkVHdlYWtMZW5ndGhcIlxuICAgICAgfCBcIkludmFsaWRDdXN0b21DaGFpbnNcIjtcbiAgICBCaWxsaW5nQXJnczoge1xuICAgICAgYmlsbGluZ19vcmc6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICBldmVudF90eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJpbGxpbmdFdmVudFwiXTtcbiAgICAgIGtleT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl0gfCBudWxsO1xuICAgICAgcm9sZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl0gfCBudWxsO1xuICAgICAgdXNlcj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl0gfCBudWxsO1xuICAgIH07XG4gICAgQmlsbGluZ0RpbWVuc2lvbnM6IHtcbiAgICAgIGtpbmQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmlsbGluZ0V2ZW50XCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgbWV0cmljcyBtdXN0IGluY2x1ZGUgJ29yZ19pZCcgYXMgYSBkaW1lbnNpb24uICovXG4gICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBCaWxsaW5nIGV2ZW50IHR5cGVzLlxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgQmlsbGluZ0V2ZW50OlxuICAgICAgfCBcIk1taVwiXG4gICAgICB8IFwiTW1pTWVzc2FnZUdldFwiXG4gICAgICB8IFwiTW1pTWVzc2FnZUxpc3RcIlxuICAgICAgfCBcIk1taU1lc3NhZ2VTaWduXCJcbiAgICAgIHwgXCJNbWlNZXNzYWdlUmVqZWN0XCJcbiAgICAgIHwgXCJNbWlNZXNzYWdlRGVsZXRlXCJcbiAgICAgIHwgXCJBYm91dE1lXCJcbiAgICAgIHwgXCJVc2VyUmVzZXRFbWFpbEluaXRcIlxuICAgICAgfCBcIlVzZXJSZXNldEVtYWlsQ29tcGxldGVcIlxuICAgICAgfCBcIlVzZXJEZWxldGVUb3RwXCJcbiAgICAgIHwgXCJVc2VyUmVzZXRUb3RwSW5pdFwiXG4gICAgICB8IFwiVXNlclJlc2V0VG90cENvbXBsZXRlXCJcbiAgICAgIHwgXCJVc2VyVmVyaWZ5VG90cFwiXG4gICAgICB8IFwiVXNlclJlZ2lzdGVyRmlkb0luaXRcIlxuICAgICAgfCBcIlVzZXJSZWdpc3RlckZpZG9Db21wbGV0ZVwiXG4gICAgICB8IFwiVXNlckRlbGV0ZUZpZG9cIlxuICAgICAgfCBcIkNyZWF0ZVByb29mT2lkY1wiXG4gICAgICB8IFwiQ3JlYXRlUHJvb2ZDdWJlU2lnbmVyXCJcbiAgICAgIHwgXCJWZXJpZnlQcm9vZlwiXG4gICAgICB8IFwiQWRkT2lkY0lkZW50aXR5XCJcbiAgICAgIHwgXCJSZW1vdmVPaWRjSWRlbnRpdHlcIlxuICAgICAgfCBcIkxpc3RPaWRjSWRlbnRpdGllc1wiXG4gICAgICB8IFwiR2V0T3JnXCJcbiAgICAgIHwgXCJVcGRhdGVPcmdcIlxuICAgICAgfCBcIkdldE9yZ0V4cG9ydFwiXG4gICAgICB8IFwiQ3JlYXRlT3JnXCJcbiAgICAgIHwgXCJMaXN0S2V5c1wiXG4gICAgICB8IFwiQXR0ZXN0S2V5XCJcbiAgICAgIHwgXCJHZXRLZXlcIlxuICAgICAgfCBcIkdldEtleUJ5TWF0ZXJpYWxJZFwiXG4gICAgICB8IFwiTGlzdEtleVJvbGVzXCJcbiAgICAgIHwgXCJVcGRhdGVLZXlcIlxuICAgICAgfCBcIkxpc3RIaXN0b3JpY2FsS2V5VHhcIlxuICAgICAgfCBcIkludml0ZVwiXG4gICAgICB8IFwiTGlzdFVzZXJzXCJcbiAgICAgIHwgXCJHZXRVc2VyXCJcbiAgICAgIHwgXCJHZXRVc2VyQnlFbWFpbFwiXG4gICAgICB8IFwiR2V0VXNlckJ5T2lkY1wiXG4gICAgICB8IFwiVXBkYXRlTWVtYmVyc2hpcFwiXG4gICAgICB8IFwiUmVzZXRNZW1iZXJNZmFcIlxuICAgICAgfCBcIkNvbXBsZXRlUmVzZXRNZW1iZXJNZmFcIlxuICAgICAgfCBcIkNyZWF0ZVJvbGVcIlxuICAgICAgfCBcIkF0dGVzdFJvbGVcIlxuICAgICAgfCBcIkdldFJvbGVcIlxuICAgICAgfCBcIkxpc3RUb2tlbktleXNcIlxuICAgICAgfCBcIkxpc3RSb2xlc1wiXG4gICAgICB8IFwiR2V0Um9sZUtleVwiXG4gICAgICB8IFwiTGlzdFJvbGVLZXlzXCJcbiAgICAgIHwgXCJMaXN0Um9sZVVzZXJzXCJcbiAgICAgIHwgXCJVcGRhdGVSb2xlXCJcbiAgICAgIHwgXCJEZWxldGVSb2xlXCJcbiAgICAgIHwgXCJDb25maWd1cmVFbWFpbFwiXG4gICAgICB8IFwiTGlzdEhpc3RvcmljYWxSb2xlVHhcIlxuICAgICAgfCBcIkNyZWF0ZVBvbGljeVwiXG4gICAgICB8IFwiR2V0UG9saWN5XCJcbiAgICAgIHwgXCJMaXN0UG9saWNpZXNcIlxuICAgICAgfCBcIkRlbGV0ZVBvbGljeVwiXG4gICAgICB8IFwiVXBkYXRlUG9saWN5XCJcbiAgICAgIHwgXCJJbnZva2VQb2xpY3lcIlxuICAgICAgfCBcIkdldFBvbGljeUxvZ3NcIlxuICAgICAgfCBcIlVwbG9hZFdhc21Qb2xpY3lcIlxuICAgICAgfCBcIkdldFBvbGljeVNlY3JldHNcIlxuICAgICAgfCBcIlVwZGF0ZVBvbGljeVNlY3JldHNcIlxuICAgICAgfCBcIlNldFBvbGljeVNlY3JldFwiXG4gICAgICB8IFwiRGVsZXRlUG9saWN5U2VjcmV0XCJcbiAgICAgIHwgXCJDcmVhdGVQb2xpY3lJbXBvcnRLZXlcIlxuICAgICAgfCBcIlVzZXJFeHBvcnREZWxldGVcIlxuICAgICAgfCBcIlVzZXJFeHBvcnRMaXN0XCJcbiAgICAgIHwgXCJVc2VyRXhwb3J0SW5pdFwiXG4gICAgICB8IFwiVXNlckV4cG9ydENvbXBsZXRlXCJcbiAgICAgIHwgXCJBZGRVc2VyVG9Sb2xlXCJcbiAgICAgIHwgXCJSZW1vdmVVc2VyRnJvbVJvbGVcIlxuICAgICAgfCBcIk1mYUFwcHJvdmVDc1wiXG4gICAgICB8IFwiTWZhUmVqZWN0Q3NcIlxuICAgICAgfCBcIk1mYUdldFwiXG4gICAgICB8IFwiTWZhTGlzdFwiXG4gICAgICB8IFwiQWRkS2V5c1RvUm9sZVwiXG4gICAgICB8IFwiUmVtb3ZlS2V5RnJvbVJvbGVcIlxuICAgICAgfCBcIkNyZWF0ZVRva2VuXCJcbiAgICAgIHwgXCJDcmVhdGVTZXNzaW9uXCJcbiAgICAgIHwgXCJSZXZva2VTZXNzaW9uXCJcbiAgICAgIHwgXCJSZXZva2VDdXJyZW50U2Vzc2lvblwiXG4gICAgICB8IFwiUmV2b2tlU2Vzc2lvbnNcIlxuICAgICAgfCBcIkxpc3RTZXNzaW9uc1wiXG4gICAgICB8IFwiR2V0U2Vzc2lvblwiXG4gICAgICB8IFwiU2lnbmVyU2Vzc2lvblJlZnJlc2hcIlxuICAgICAgfCBcIk1mYUFwcHJvdmVUb3RwXCJcbiAgICAgIHwgXCJNZmFSZWplY3RUb3RwXCJcbiAgICAgIHwgXCJNZmFGaWRvSW5pdFwiXG4gICAgICB8IFwiTWZhQXBwcm92ZUZpZG9Db21wbGV0ZVwiXG4gICAgICB8IFwiTWZhUmVqZWN0Rmlkb0NvbXBsZXRlXCJcbiAgICAgIHwgXCJNZmFFbWFpbEluaXRcIlxuICAgICAgfCBcIk1mYUVtYWlsQ29tcGxldGVcIlxuICAgICAgfCBcIkN1YmUzc2lnbmVySGVhcnRiZWF0XCJcbiAgICAgIHwgXCJDcmVhdGVDb250YWN0XCJcbiAgICAgIHwgXCJHZXRDb250YWN0XCJcbiAgICAgIHwgXCJMaXN0Q29udGFjdHNcIlxuICAgICAgfCBcIkRlbGV0ZUNvbnRhY3RcIlxuICAgICAgfCBcIlVwZGF0ZUNvbnRhY3RcIlxuICAgICAgfCBcIkxvb2t1cENvbnRhY3RzQnlBZGRyZXNzXCJcbiAgICAgIHwgXCJRdWVyeU1ldHJpY3NcIlxuICAgICAgfCBcIlF1ZXJ5QXVkaXRMb2dcIlxuICAgICAgfCBcIkNvdW50c1wiXG4gICAgICB8IFwiQ3JlYXRlS2V5XCJcbiAgICAgIHwgXCJJbXBvcnRLZXlcIlxuICAgICAgfCBcIkNyZWF0ZUtleUltcG9ydEtleVwiXG4gICAgICB8IFwiRGVyaXZlS2V5XCJcbiAgICAgIHwgXCJEZWxldGVLZXlcIlxuICAgICAgfCBcIkF2YVNpZ25cIlxuICAgICAgfCBcIkF2YVNlcmlhbGl6ZWRUeFNpZ25cIlxuICAgICAgfCBcIkJhYnlsb25SZWdpc3RyYXRpb25cIlxuICAgICAgfCBcIkJhYnlsb25TdGFraW5nXCJcbiAgICAgIHwgXCJCYWJ5bG9uQ292U2lnblwiXG4gICAgICB8IFwiQmxvYlNpZ25cIlxuICAgICAgfCBcIkJ0Y01lc3NhZ2VTaWduXCJcbiAgICAgIHwgXCJCdGNTaWduXCJcbiAgICAgIHwgXCJEaWZmaWVIZWxsbWFuRXhjaGFuZ2VcIlxuICAgICAgfCBcIlBzYnRTaWduXCJcbiAgICAgIHwgXCJQc2J0TGVnYWN5SW5wdXRTaWduXCJcbiAgICAgIHwgXCJQc2J0U2Vnd2l0SW5wdXRTaWduXCJcbiAgICAgIHwgXCJQc2J0VGFwcm9vdElucHV0U2lnblwiXG4gICAgICB8IFwiVGFwcm9vdFNpZ25cIlxuICAgICAgfCBcIkVpcDcxMlNpZ25cIlxuICAgICAgfCBcIkVpcDE5MVNpZ25cIlxuICAgICAgfCBcIkV0aDFTaWduXCJcbiAgICAgIHwgXCJFdGgyU2lnblwiXG4gICAgICB8IFwiU29sYW5hU2lnblwiXG4gICAgICB8IFwiU3VpU2lnblwiXG4gICAgICB8IFwiVGVuZGVybWludFNpZ25cIlxuICAgICAgfCBcIlN0YWtlXCJcbiAgICAgIHwgXCJVbnN0YWtlXCJcbiAgICAgIHwgXCJQYXNza2V5QXV0aEluaXRcIlxuICAgICAgfCBcIlBhc3NrZXlBdXRoQ29tcGxldGVcIlxuICAgICAgfCBcIk9pZGNBdXRoXCJcbiAgICAgIHwgXCJPYXV0aDJUd2l0dGVyXCJcbiAgICAgIHwgXCJPQXV0aDJUb2tlblJlZnJlc2hcIlxuICAgICAgfCBcIkVtYWlsT3RwQXV0aFwiXG4gICAgICB8IFwiU2l3ZUluaXRcIlxuICAgICAgfCBcIlNpd2VDb21wbGV0ZVwiXG4gICAgICB8IFwiVGVsZWdyYW1BdXRoXCJcbiAgICAgIHwgXCJDcmVhdGVPaWRjVXNlclwiXG4gICAgICB8IFwiRGVsZXRlT2lkY1VzZXJcIlxuICAgICAgfCBcIkRlbGV0ZVVzZXJcIlxuICAgICAgfCBcIkNyZWF0ZUVvdHNOb25jZXNcIlxuICAgICAgfCBcIkVvdHNTaWduXCJcbiAgICAgIHwgXCJBdXRoTWlncmF0aW9uSWRlbnRpdHlBZGRcIlxuICAgICAgfCBcIkF1dGhNaWdyYXRpb25JZGVudGl0eVJlbW92ZVwiXG4gICAgICB8IFwiQXV0aE1pZ3JhdGlvblVzZXJVcGRhdGVcIlxuICAgICAgfCBcIktleUNyZWF0ZWRcIlxuICAgICAgfCBcIktleUltcG9ydGVkXCJcbiAgICAgIHwgXCJJbnZpdGF0aW9uQWNjZXB0XCJcbiAgICAgIHwgXCJJZHBBdXRoZW50aWNhdGVcIlxuICAgICAgfCBcIklkcFBhc3N3b3JkUmVzZXRSZXF1ZXN0XCJcbiAgICAgIHwgXCJJZHBQYXNzd29yZFJlc2V0Q29uZmlybVwiXG4gICAgICB8IFwiQ3VzdG9tQ2hhaW5ScGNDYWxsXCJcbiAgICAgIHwgXCJFc3Bsb3JhQXBpQ2FsbFwiXG4gICAgICB8IFwiRXhlY3V0ZVBvbGljeVwiXG4gICAgICB8IFwiU2VudHJ5QXBpQ2FsbFwiXG4gICAgICB8IFwiU2VudHJ5QXBpQ2FsbFB1YmxpY1wiXG4gICAgICB8IFwiTW1pSndrU2V0XCJcbiAgICAgIHwgXCJBdHRlc3RhdGlvbkp3a1NldFwiXG4gICAgICB8IFwiVXNlck9yZ3NcIlxuICAgICAgfCBcIlB1YmxpY09yZ0luZm9cIlxuICAgICAgfCBcIkVtYWlsTXlPcmdzXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIGJpdGNvaW4gYWRkcmVzcyBhbmQgaXRzIG5ldHdvcmsuICovXG4gICAgQml0Y29pbkFkZHJlc3NJbmZvOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgYml0Y29pbiBhZGRyZXNzLlxuICAgICAgICogQGV4YW1wbGUgYmMxcHVjMHE4amh4M2tuYzJzdGxmaGwzNW5qYTg5bnZrbXFyNGM1ZTJsZHl1cTJtY2NraHIzbXNhdmo5OWpcbiAgICAgICAqL1xuICAgICAgYWRkcmVzczogc3RyaW5nO1xuICAgICAgY2hhaW46IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQnRjQ2hhaW5cIl07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZXhhbXBsZSB7XG4gICAgICogICBcIm1lc3NhZ2VfYmFzZTY0XCI6IFwiWVdKalpHVm1aMmhwYW10c2JXNXZjSEZ5YzNSMWRuZDRlWG94TWpNME5UWUtcIlxuICAgICAqIH1cbiAgICAgKi9cbiAgICBCbG9iU2lnblJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFJlcXVlc3QgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcmVzcG9uc2UsIGV4cGxhaW5pbmdcbiAgICAgICAqIHRoZSBvdXRjb21lIChpLmUuLCBwZXJtaXR0ZWQgdnMuIGRlbmllZCB2cy4gTUZBIHJlcXVpcmVkKSBvZiB0aGUgc2lnbiByZXF1ZXN0LlxuICAgICAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGV4cGxhaW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgTUZBIGlzIHJlcXVpcmVkLCBmYWlsIHRoZSByZXF1ZXN0IGluc3RlYWQgb2YgcmV0dXJuaW5nIDIwMiBhbmQgY3JlYXRpbmdcbiAgICAgICAqIHBlbmRpbmcgTUZBIHJlcXVlc3QuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBmYWlsX29uX21mYT86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBtZXRhZGF0YS4gUGFzc2luZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFzIG1ldGFkYXRhIGNhbiBiZSB1c2VkIHRvIG1ha2UgcmV2aWV3aW5nXG4gICAgICAgKiBvZiBwZW5kaW5nIE1GQSByZXF1ZXN0cyBhbmQvb3IgaGlzdG9yaWNhbCBrZXkgdHJhbnNhY3Rpb25zIG1vcmUgdHJhbnNwYXJlbnQuIEl0IGNhbiBhbHNvIGJlIHVzZWQgZS5nLiwgdG8gY2FycnkgYWRkaXRpb25hbCBkYXRhIHRvIFdlYkhvb2sgcG9saWNpZXMuXG4gICAgICAgKi9cbiAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQW4gb3B0aW9uYWwgYmFzZTY0IHN0cmluZyBjb21wcmlzaW5nIGEgU0VDMS1lbmNvZGVkIHNlY3AyNTZrMSBwdWJsaWMga2V5LlxuICAgICAgICogVGhpcyBmaWVsZCBjYW4gYmUgdXNlZCAqb25seSogd2l0aCBTY2hub3JyIGtleXMuXG4gICAgICAgKlxuICAgICAgICogSWYgdGhpcyBmaWVsZCBpcyBwcmVzZW50LCB0aGUgcmVzcG9uc2Ugd2lsbCBiZSBhIFNjaG5vcnIgYWRhcHRvciBzaWduYXR1cmVcbiAgICAgICAqIGluIHRoZSBmb3JtYXQgc3BlY2lmaWVkIGJ5IEJsb2Nrc3RyZWFtIGZvciB1c2UgaW4gbGlic2VjcDI1NmsxLXprcC4gU2VlXG4gICAgICAgKiA8aHR0cHM6Ly9naXRodWIuY29tL1poZVBhbmcvUHl0aG9uX1NwZWNpZmljYXRpb25fZm9yX1NjaG5vcnJfQWRhcHRvci8+XG4gICAgICAgKiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAgICAgICAqIEBleGFtcGxlIEFybnk0V29IRE5CVlhZY3luaE5sOS95N0p0dEoycmswQ0NSZkxSN3QzYURnXG4gICAgICAgKi9cbiAgICAgIGFkYXB0b3JfcGs/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQW4gb3B0aW9uYWwgZG9tYWluIHNlcGFyYXRpb24gdGFnIGZvciB1c2UgKm9ubHkqIHdpdGggQkxTIHNpZ25pbmcgcmVxdWVzdHMuXG4gICAgICAgKiBUaGlzIGZpZWxkIG11c3Qgbm90IGJlIHN1cHBsaWVkIGZvciByZXF1ZXN0cyBpbnZvbHZpbmcgbm9uLUJMUyBrZXkgdHlwZXMuXG4gICAgICAgKlxuICAgICAgICogSWYgdGhpcyBmaWVsZCBpcyBub3QgcHJlc2VudCBvciBudWxsLCB0aGUgZG9tYWluIHNlcGFyYXRpb24gdGFnIHNwZWNpZmllZCBpblxuICAgICAgICogdGhlIElFVEYgQkxTIFNpZ25hdHVyZXMgZHJhZnQgdmVyc2lvbnMgNCBhbmQgNSwgc2VjdGlvbiA0LjIuMyAobWluaW1hbCBwdWJrZXlcbiAgICAgICAqIHNpemUgdmFyaWFudCkgaXMgdXNlZC5cbiAgICAgICAqXG4gICAgICAgKiBPdGhlcndpc2UsIHRoaXMgZmllbGQgbXVzdCBjb250YWluIGEgYmFzZS02NCBzdHJpbmcgZW5jb2RpbmcgYSBub24tZW1wdHkgYnl0ZVxuICAgICAgICogdmVjdG9yLiBXaGVuIHVzaW5nIGEgY3VzdG9tIHRhZywgUkZDOTM4MCAoU2VjdGlvbiAzLjEpIHJlY29tbWVuZHMgYSBsZW5ndGggb2ZcbiAgICAgICAqIGF0IGxlYXN0IDE2IGJ5dGVzLlxuICAgICAgICogQGV4YW1wbGUgRWJiTHZDeEk3Z2FuNzFpSVNEc2ZyNDZldE92NjA2UWtHR0RQNVBwVmw1UT1cbiAgICAgICAqL1xuICAgICAgYmxzX2RzdD86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgYmxvYiB0byBzaWduLCBlbmNvZGVkIGFzIGEgYmFzZTY0IHN0cmluZy5cbiAgICAgICAqXG4gICAgICAgKiBOb3RlIHRoYXQgY2VydGFpbiBzaWduaW5nIGtleXMgaW1wb3NlIGFkZGl0aW9uYWwgcmVxdWlyZW1lbnRzIG9uIHRoZSBjb250ZW50cyBvZlxuICAgICAgICogdGhlIG1lc3NhZ2UuIEZvciBleGFtcGxlLCBTZWNwMjU2azEga2V5cyByZXF1aXJlIHRoYXQgdGhlIG1lc3NhZ2UgaXMgMzIgYnl0ZXMgbG9uZy5cbiAgICAgICAqL1xuICAgICAgbWVzc2FnZV9iYXNlNjQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFuIG9wdGlvbmFsIHR3ZWFrIHZhbHVlIGZvciB1c2Ugb25seSB3aXRoIChzb21lKSBzZWNwMjU2azEga2V5IHR5cGVzLlxuICAgICAgICogVGhpcyBmaWVsZCBtdXN0IG5vdCBiZSBzdXBwbGllZCBmb3IgcmVxdWVzdHMgaW52b2x2aW5nIGFueSBvdGhlciBrZXkgdHlwZS5cbiAgICAgICAqXG4gICAgICAgKiBJZiB0aGlzIGZpZWxkIGlzIG5vdCBwcmVzZW50IG9yIG51bGwsIG5vIHR3ZWFrIGlzIGFwcGxpZWQuIE90aGVyd2lzZSwgdGhpcyBmaWVsZFxuICAgICAgICogbXVzdCBjb250YWluIGEgYmFzZS02NCBzdHJpbmcgZW5jb2RpbmcgYSB2ZWN0b3Igb2YgZXhhY3RseSAzMiBieXRlcy4gU2VlIHRoZVxuICAgICAgICogQ3ViZVNpZ25lciBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBTZWd3aXQgdHdlYWtpbmcgcHJvY2VkdXJlLlxuICAgICAgICogQGV4YW1wbGUgRjQxSEF5MnE1R244bGFGMkN1TXNaYlJBUVRtRCs0T2IzVlVNWjdUQkdLND1cbiAgICAgICAqL1xuICAgICAgc2Vnd2l0X3R3ZWFrPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFuIG9wdGlvbmFsIHR3ZWFrIHZhbHVlIGZvciB1c2UgKm9ubHkqIHdpdGggVGFwcm9vdCBrZXlzLiBUaGlzIGZpZWxkIG11c3Qgbm90XG4gICAgICAgKiBiZSBzdXBwbGllZCBmb3IgcmVxdWVzdHMgaW52b2x2aW5nIGFueSBvdGhlciBrZXkgdHlwZS5cbiAgICAgICAqXG4gICAgICAgKiBJZiB0aGlzIGZpZWxkIGlzIG5vdCBwcmVzZW50IG9yIG51bGwsIG5vIHR3ZWFrIGlzIGFwcGxpZWQuIElmIHRoZSBmaWVsZCBpcyBhblxuICAgICAgICogZW1wdHkgc3RyaW5nLCB0aGUga2V5IGlzIHR3ZWFrZWQgd2l0aCBhbiB1bnNwZW5kYWJsZSBzY3JpcHQgcGF0aCBwZXIgQklQMDM0MS5cbiAgICAgICAqIE90aGVyd2lzZSwgdGhpcyBmaWVsZCBtdXN0IGNvbnRhaW4gYSAzMi1ieXRlLCBiYXNlLTY0IHN0cmluZyByZXByZXNlbnRpbmcgdGhlXG4gICAgICAgKiBNZXJrbGUgcm9vdCB3aXRoIHdoaWNoIHRvIHR3ZWFrIHRoZSBrZXkgYmVmb3JlIHNpZ25pbmcuXG4gICAgICAgKiBAZXhhbXBsZSBGNDFIQXkycTVHbjhsYUYyQ3VNc1piUkFRVG1EKzRPYjNWVU1aN1RCR0s0PVxuICAgICAgICovXG4gICAgICB0YXByb290X3R3ZWFrPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTdXBwb3J0ZWQgQlRDIGNoYWlucy5cbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIEJ0Y0NoYWluOiBcIm1haW5uZXRcIiB8IFwic2lnbmV0XCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBMZWFmIGhhc2ggYW5kIGNvZGUsIGFzIHBlciBCSVAzNDEgYW5kIGh0dHBzOi8vZ2l0aHViLmNvbS9ydXN0LWJpdGNvaW4vcnVzdC1iaXRjb2luL2Jsb2IvNDY0MjAyMTA5ZDJiMmM5NmU5YjQ4Njc0NjFiZmZlNDIwZGJkODE3Ny9iaXRjb2luL3NyYy9jcnlwdG8vc2lnaGFzaC5ycyNMNjkxICovXG4gICAgQnRjTGVhZkhhc2hDb2RlU2VwYXJhdG9yOiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDb2RlIHNlcGFyYXRvclxuICAgICAgICovXG4gICAgICBjb2RlX3NlcGFyYXRvcjogbnVtYmVyO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUYXByb290LXRhZ2dlZCBoYXNoIHdpdGggdGFnIFwiVGFwTGVhZlwiLiAqL1xuICAgICAgbGVhZl9oYXNoOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIERhdGEgdG8gc2lnbiAqL1xuICAgIEJ0Y01lc3NhZ2VTaWduUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGJlIGluY2x1ZGVkIGluIHRoZSByZXNwb25zZSwgZXhwbGFpbmluZ1xuICAgICAgICogdGhlIG91dGNvbWUgKGkuZS4sIHBlcm1pdHRlZCB2cy4gZGVuaWVkIHZzLiBNRkEgcmVxdWlyZWQpIG9mIHRoZSBzaWduIHJlcXVlc3QuXG4gICAgICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZXhwbGFpbj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBNRkEgaXMgcmVxdWlyZWQsIGZhaWwgdGhlIHJlcXVlc3QgaW5zdGVhZCBvZiByZXR1cm5pbmcgMjAyIGFuZCBjcmVhdGluZ1xuICAgICAgICogcGVuZGluZyBNRkEgcmVxdWVzdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGZhaWxfb25fbWZhPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG1ldGFkYXRhLiBQYXNzaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYXMgbWV0YWRhdGEgY2FuIGJlIHVzZWQgdG8gbWFrZSByZXZpZXdpbmdcbiAgICAgICAqIG9mIHBlbmRpbmcgTUZBIHJlcXVlc3RzIGFuZC9vciBoaXN0b3JpY2FsIGtleSB0cmFuc2FjdGlvbnMgbW9yZSB0cmFuc3BhcmVudC4gSXQgY2FuIGFsc28gYmUgdXNlZCBlLmcuLCB0byBjYXJyeSBhZGRpdGlvbmFsIGRhdGEgdG8gV2ViSG9vayBwb2xpY2llcy5cbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBNZXNzYWdlIHRvIHNpZ24gYXMgYSBoZXgtZW5jb2RlZCBieXRlIHN0cmluZy5cbiAgICAgICAqIEBleGFtcGxlIDB4ZGVhZGJlZWYxM2MwZmZlZVxuICAgICAgICovXG4gICAgICBkYXRhOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEZvciBzZWd3aXQsIHNpZ24gdGhlIG1lc3NhZ2UgYXMgcDJzaC1wMndwa2ggaW5zdGVhZCBvZiBwMndwa2ggKi9cbiAgICAgIGlzX3Ayc2g/OiBib29sZWFuO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBCVEMgbWVzc2FnZSBzaWduaW5nIHJlc3BvbnNlICovXG4gICAgQnRjTWVzc2FnZVNpZ25SZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY3kgZXZhbHVhdGlvbiB0cmVlLiAqL1xuICAgICAgcG9saWN5X2V2YWxfdHJlZT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGJhc2U2NC1lbmNvZGVkIHNpZ25hdHVyZSBpbiBCSVAxMzcgZm9ybWF0LiAqL1xuICAgICAgc2lnOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBCdGNTaWdoYXNoVHlwZTpcbiAgICAgIHwgXCJBbGxcIlxuICAgICAgfCBcIk5vbmVcIlxuICAgICAgfCBcIlNpbmdsZVwiXG4gICAgICB8IFwiQWxsUGx1c0FueW9uZUNhblBheVwiXG4gICAgICB8IFwiTm9uZVBsdXNBbnlvbmVDYW5QYXlcIlxuICAgICAgfCBcIlNpbmdsZVBsdXNBbnlvbmVDYW5QYXlcIjtcbiAgICBCdGNTaWduUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGJlIGluY2x1ZGVkIGluIHRoZSByZXNwb25zZSwgZXhwbGFpbmluZ1xuICAgICAgICogdGhlIG91dGNvbWUgKGkuZS4sIHBlcm1pdHRlZCB2cy4gZGVuaWVkIHZzLiBNRkEgcmVxdWlyZWQpIG9mIHRoZSBzaWduIHJlcXVlc3QuXG4gICAgICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZXhwbGFpbj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBNRkEgaXMgcmVxdWlyZWQsIGZhaWwgdGhlIHJlcXVlc3QgaW5zdGVhZCBvZiByZXR1cm5pbmcgMjAyIGFuZCBjcmVhdGluZ1xuICAgICAgICogcGVuZGluZyBNRkEgcmVxdWVzdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGZhaWxfb25fbWZhPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG1ldGFkYXRhLiBQYXNzaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYXMgbWV0YWRhdGEgY2FuIGJlIHVzZWQgdG8gbWFrZSByZXZpZXdpbmdcbiAgICAgICAqIG9mIHBlbmRpbmcgTUZBIHJlcXVlc3RzIGFuZC9vciBoaXN0b3JpY2FsIGtleSB0cmFuc2FjdGlvbnMgbW9yZSB0cmFuc3BhcmVudC4gSXQgY2FuIGFsc28gYmUgdXNlZCBlLmcuLCB0byBjYXJyeSBhZGRpdGlvbmFsIGRhdGEgdG8gV2ViSG9vayBwb2xpY2llcy5cbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICBzaWdfa2luZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCdGNTaWduYXR1cmVLaW5kXCJdO1xuICAgICAgdHg6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQnRjVHhcIl07XG4gICAgfTtcbiAgICBCdGNTaWduYXR1cmVLaW5kOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFNlZ3JlZ2F0ZWQgV2l0bmVzcyAqL1xuICAgICAgU2Vnd2l0OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVHJhbnNhY3Rpb24gaW5wdXQgaW5kZXhcbiAgICAgICAgICogQGV4YW1wbGUgMFxuICAgICAgICAgKi9cbiAgICAgICAgaW5wdXRfaW5kZXg6IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBTY3JpcHRcbiAgICAgICAgICogQGV4YW1wbGUgMHg3NmE5MTQ3OTA5MTk3MjE4NmM0NDllYjFkZWQyMmI3OGU0MGQwMDliZGYwMDg5ODhhY1xuICAgICAgICAgKi9cbiAgICAgICAgc2NyaXB0X2NvZGU6IHN0cmluZztcbiAgICAgICAgc2lnaGFzaF90eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJ0Y1NpZ2hhc2hUeXBlXCJdO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHR3ZWFrIHRvIGFwcGx5IHRvIHRoZSBrZXkgYmVmb3JlIHNpZ25pbmcuXG4gICAgICAgICAqXG4gICAgICAgICAqIFdoZW4gc3VwcGxpZWQsIHRoaXMgZmllbGQgbXVzdCBjb250YWluIGEgYmFzZS02NCBzdHJpbmcgZW5jb2RpbmcgYSB2ZWN0b3Igb2ZcbiAgICAgICAgICogZXhhY3RseSAzMiBieXRlcywgd2hpY2ggYXJlIHVzZWQgdG8gY29tcHV0ZSB0aGUgdHdlYWtlZCBwdWJsaWMga2V5LiBTZWUgdGhlXG4gICAgICAgICAqIEN1YmVTaWduZXIgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgU2Vnd2l0IHR3ZWFraW5nIHByb2NlZHVyZS5cbiAgICAgICAgICogQGV4YW1wbGUgRjQxSEF5MnE1R244bGFGMkN1TXNaYlJBUVRtRCs0T2IzVlVNWjdUQkdLND1cbiAgICAgICAgICovXG4gICAgICAgIHR3ZWFrPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB0b3RhbCBhbW91bnQgb2YgdGhlIGlucHV0IChpbiBzYXRvc2hpcykuXG4gICAgICAgICAqIEBleGFtcGxlIDEwMDAwMDBcbiAgICAgICAgICovXG4gICAgICAgIHZhbHVlOiBudW1iZXI7XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGV4YW1wbGUge1xuICAgICAqICAgXCJpbnB1dFwiOiBbXG4gICAgICogICAgIHtcbiAgICAgKiAgICAgICBcInByZXZpb3VzX291dHB1dFwiOiBcIjc3NTQxYWViM2M0ZGFjOTI2MGI2OGY3NGY0NGM5NzMwODFhOWQ0Y2IyZWJlODAzOGIyZDcwZmFhMjAxYjZiZGI6MVwiLFxuICAgICAqICAgICAgIFwic2NyaXB0X3NpZ1wiOiBcIlwiLFxuICAgICAqICAgICAgIFwic2VxdWVuY2VcIjogNDI5NDk2NzI5NCxcbiAgICAgKiAgICAgICBcIndpdG5lc3NcIjogW11cbiAgICAgKiAgICAgfVxuICAgICAqICAgXSxcbiAgICAgKiAgIFwibG9ja190aW1lXCI6IDExNzAsXG4gICAgICogICBcIm91dHB1dFwiOiBbXG4gICAgICogICAgIHtcbiAgICAgKiAgICAgICBcInNjcmlwdF9wdWJrZXlcIjogXCI3NmE5MTRhNDU3YjY4NGQ3ZjBkNTM5YTQ2YTQ1YmJjMDQzZjM1YjU5ZDBkOTYzODhhY1wiLFxuICAgICAqICAgICAgIFwidmFsdWVcIjogMTk5OTk2NjAwXG4gICAgICogICAgIH0sXG4gICAgICogICAgIHtcbiAgICAgKiAgICAgICBcInNjcmlwdF9wdWJrZXlcIjogXCI3NmE5MTRmZDI3MGIxZWU2YWJjYWVhOTdmZWE3YWQwNDAyZThiZDhhZDZkNzdjODhhY1wiLFxuICAgICAqICAgICAgIFwidmFsdWVcIjogODAwMDAwMDAwXG4gICAgICogICAgIH1cbiAgICAgKiAgIF0sXG4gICAgICogICBcInZlcnNpb25cIjogMVxuICAgICAqIH1cbiAgICAgKi9cbiAgICBCdGNUeDogUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgIEJ0Y1R4T3V0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBzY3JpcHQgd2hpY2ggbXVzdCBiZSBzYXRpc2ZpZWQgZm9yIHRoZSBvdXRwdXQgdG8gYmUgc3BlbnQuICovXG4gICAgICBzY3JpcHRfcHVia2V5OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdmFsdWUgb2YgdGhlIG91dHB1dCwgaW4gc2F0b3NoaXMuXG4gICAgICAgKi9cbiAgICAgIHZhbHVlOiBudW1iZXI7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gU3VwcG9ydGVkIENhbnRvbiBlbnZpcm9ubWVudHMuXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBDYW50b25FbnZpcm9ubWVudDogXCJtYWlubmV0XCIgfCBcImRldm5ldFwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gYWJvdXQgYSBzcGVjaWZpYyBDYW50b24gcGFydHkuICovXG4gICAgQ2FudG9uUGFydHlJbmZvOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIENhbnRvbiBwYXJ0eS5cbiAgICAgICAqIEBleGFtcGxlIEFsaWNlOjoxMjIwZjJmZTI5ODY2ZmQ2YTAwMDllY2M4YTY0Y2NkYzA5ZjE5NThiZDBmODAxMTY2YmFhZWU0NjlkMTI1MWIyZWI3MlxuICAgICAgICovXG4gICAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgICBjaGFpbjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDYW50b25FbnZpcm9ubWVudFwiXTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRGVzY3JpYmVzIGhvdyB0byBkZXJpdmUgYSBXZWJBdXRobiBjaGFsbGVuZ2UgdmFsdWUuICovXG4gICAgQ2hhbGxlbmdlUGllY2VzOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGJhc2U2NHVybCBlbmNvZGluZyBvZiBVVEY4IEpTT04uIFRoZSBkYXRhIGluIHRoYXQgSlNPTiBpcyBlbmRwb2ludCBzcGVjaWZpYywgYW5kIGRlc2NyaWJlcyB3aGF0IHRoaXMgRklETyBjaGFsbGVuZ2Ugd2lsbCBiZSB1c2VkIGZvci5cbiAgICAgICAqXG4gICAgICAgKiBDbGllbnRzIGNhbiB1c2UgYHByZWltYWdlYCBhbG9uZyB3aXRoIGByYW5kb21fc2VlZGAgdG8gcmVjb25zdHJ1Y3QgdGhlIGNoYWxsZW5nZSBsaWtlIHNvOlxuICAgICAgICpcbiAgICAgICAqIGBjaGFsbGVuZ2UgPSBITUFDLVNIQTI1NihrZXk9cmFuZG9tX3NlZWQsIG1lc3NhZ2U9cHJlaW1hZ2UpYFxuICAgICAgICovXG4gICAgICBwcmVpbWFnZTogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIHJhbmRvbSBzZWVkIHRoYXQgcHJldmVudHMgcmVwbGF5IGF0dGFja3MgKi9cbiAgICAgIHJhbmRvbV9zZWVkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIENsaWVudCBpbmZvcm1hdGlvbiByZXByZXNlbnRpbmcgdGhlIG5hdHVyZSBvZiBmcm9udC1lbmQgaW4gW2BDbGllbnRTZXNzaW9uTWV0YWRhdGFgXSBhbmQgcmVmbGVjdGVkIGluIFtgU2Vzc2lvbk1ldGFkYXRhYF0uICovXG4gICAgQ2xpZW50UHJvZmlsZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQWdlbnQvUHJvZHVjdCBuYW1lXG4gICAgICAgKiBAZXhhbXBsZSBNb3ppbGxhIEZpcmVmb3hcbiAgICAgICAqL1xuICAgICAgYWdlbnQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvZiB0aGUgZW5naW5lXG4gICAgICAgKiBAZXhhbXBsZSBHZWNrb1xuICAgICAgICovXG4gICAgICBlbmdpbmU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQWdlbnQvcHJvZHVjdCB2ZXJzaW9uXG4gICAgICAgKiBAZXhhbXBsZSA0MS4yXG4gICAgICAgKi9cbiAgICAgIHZlcnNpb24/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFNlc3Npb24gaW5mb3JtYXRpb24gc2VudCB0byB0aGUgY2xpZW50LlxuICAgICAqIFRoaXMgc3RydWN0IHdvcmtzIGluIHRhbmRlbSB3aXRoIGl0cyBzZXJ2ZXItc2lkZSBjb3VudGVycGFydCBbYFNlc3Npb25EYXRhYF0uXG4gICAgICovXG4gICAgQ2xpZW50U2Vzc2lvbkluZm86IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVG9rZW4gdG8gdXNlIGZvciBhdXRob3JpemF0aW9uLiAqL1xuICAgICAgYXV0aF90b2tlbjogc3RyaW5nO1xuICAgICAgYXV0aF90b2tlbl9leHA6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIEVwb2NoIGF0IHdoaWNoIHRoZSB0b2tlbiB3YXMgbGFzdCByZWZyZXNoZWRcbiAgICAgICAqL1xuICAgICAgZXBvY2g6IG51bWJlcjtcbiAgICAgIGVwb2NoX3Rva2VuOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkIzMlwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVG9rZW4gdG8gdXNlIGZvciByZWZyZXNoaW5nIHRoZSBgKGF1dGgsIHJlZnJlc2gpYCB0b2tlbiBwYWlyICovXG4gICAgICByZWZyZXNoX3Rva2VuOiBzdHJpbmc7XG4gICAgICByZWZyZXNoX3Rva2VuX2V4cDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBTZXNzaW9uIElEICovXG4gICAgICBzZXNzaW9uX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEF0dHJpYnV0ZXMgdGhhdCBhcmUgZXhwZWN0ZWQgdG8gYmUgcHJvdmlkZWQgYnkgdGhlIGNsaWVudCAqL1xuICAgIENsaWVudFNlc3Npb25NZXRhZGF0YToge1xuICAgICAgY2xpZW50PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDbGllbnRQcm9maWxlXCJdO1xuICAgICAgb3NfaW5mbz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT3NJbmZvXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEZpZWxkcyB0aGF0IGFyZSBjb21tb24gdG8gZGlmZmVyZW50IHR5cGVzIG9mIHJlc291cmNlcyBzdWNoIGFzIGtleXMsIHJvbGVzLCBldGMuXG4gICAgICogSW5jbHVkZXMgdmVyc2lvbmluZyBmaWVsZHMgcGx1cyBtZXRhZGF0YSwgZWRpdCBwb2xpY3ksIGV0Yy5cbiAgICAgKi9cbiAgICBDb21tb25GaWVsZHM6IHtcbiAgICAgIGNyZWF0ZWQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl0gfCBudWxsO1xuICAgICAgbGFzdF9tb2RpZmllZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBWZXJzaW9uIG9mIHRoaXMgb2JqZWN0XG4gICAgICAgKi9cbiAgICAgIHZlcnNpb24/OiBudW1iZXI7XG4gICAgfSAmIHtcbiAgICAgIGVkaXRfcG9saWN5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFZGl0UG9saWN5XCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVXNlci1kZWZpbmVkIG1ldGFkYXRhLiBXaGVuIHJlbmRlcmluZyAoZS5nLiwgaW4gdGhlIGJyb3dzZXIpIHlvdSBzaG91bGQgdHJlYXRcbiAgICAgICAqIGl0IGFzIHVudHJ1c3RlZCB1c2VyIGRhdGEgKGFuZCBhdm9pZCBpbmplY3RpbmcgbWV0YWRhdGEgaW50byBIVE1MIGRpcmVjdGx5KSBpZlxuICAgICAgICogdW50cnVzdGVkIHVzZXJzIGNhbiBjcmVhdGUvdXBkYXRlIGtleXMgKG9yIHRoZWlyIG1ldGFkYXRhKS5cbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgIH07XG4gICAgQ29tcGxldGVNZmFSZXNldFJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSByZXNldCB0b2tlbiBlbWFpbGVkIHRvIHRoZSB1c2VyXG4gICAgICAgKiBAZXhhbXBsZSBVc2VyI2MzYjkzNzljLTRlOGMtNDIxNi1iZDBhLTY1YWNlNTNjZjk4ZlxuICAgICAgICovXG4gICAgICB0b2tlbjogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbnVtYmVyIG9mIHVzZXJzIGFuZCBrZXlzIGluIGFuIG9yZywgb3JnYW5pemVkIGJ5IHVzZXIgcm9sZSBhbmQga2V5IHR5cGUgKi9cbiAgICBDb21wdXRlQ291bnRzUmVzcG9uc2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgbWFwIG9mIGEgYEtleVR5cGVgIHRvIHRoZSBhbW91bnQgb2Yga2V5cyB3aXRoIHRoYXQgdHlwZSBpbiB0aGUgb3JnLlxuICAgICAgICogQGV4YW1wbGUge1xuICAgICAgICogICBcIlNlY3BCdGNcIjogMyxcbiAgICAgICAqICAgXCJTZWNwRXRoQWRkclwiOiAxXG4gICAgICAgKiB9XG4gICAgICAgKi9cbiAgICAgIGtleXM6IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogbnVtYmVyO1xuICAgICAgfTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgbWFwIG9mIGEgYE1lbWJlclJvbGVgIHRvIHRoZSBhbW91bnQgb2YgbnVtYmVyIG9mIHVzZXJzIHdpdGggdGhhdCByb2xlIGluIHRoZSBvcmcuXG4gICAgICAgKiBAZXhhbXBsZSB7XG4gICAgICAgKiAgIFwiTWVtYmVyXCI6IDEwLFxuICAgICAgICogICBcIk93bmVyXCI6IDFcbiAgICAgICAqIH1cbiAgICAgICAqL1xuICAgICAgdXNlcnM6IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogbnVtYmVyO1xuICAgICAgfTtcbiAgICB9O1xuICAgIENvbmZpZ3VyZUVtYWlsUmVxdWVzdDoge1xuICAgICAgYXV0aDoge1xuICAgICAgICBzbXRwOiBzdHJpbmc7XG4gICAgICB9O1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgZW1haWwgYWRkcmVzcyB0aGF0IGVtYWlscyB3aWxsIGJlIHNlbnQgZnJvbSAqL1xuICAgICAgc2VuZGVyOiBzdHJpbmc7XG4gICAgICB0ZW1wbGF0ZT86IHtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBIVE1MIHRlbXBsYXRlIHRvIHVzZSBmb3IgdGhlIGJvZHkuICovXG4gICAgICAgIGJvZHlfdGVtcGxhdGU6IHN0cmluZztcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgc3ViamVjdCBsaW5lIHRlbXBsYXRlICovXG4gICAgICAgIHN1YmplY3RfdGVtcGxhdGU6IHN0cmluZztcbiAgICAgIH0gfCBudWxsO1xuICAgIH07XG4gICAgQ29uZmlndXJlZE1mYTpcbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIHR5cGU6IFwidG90cFwiO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFVVSUQgb2YgdGhlIGRldmljZSB0eXBlICovXG4gICAgICAgICAgYWFndWlkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGlvbiBkYXRlXG4gICAgICAgICAgICovXG4gICAgICAgICAgY3JlYXRlZF9hdDogbnVtYmVyO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGlzIGtleSB3YXMgcmVxdWVzdGVkIHRvIGJlIGRpc2NvdmVyYWJsZS4gKi9cbiAgICAgICAgICBkaXNjb3ZlcmFibGU6IGJvb2xlYW47XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIHVuaXF1ZSBjcmVkZW50aWFsIGlkICovXG4gICAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIExhc3QgdXNlZCBkYXRlXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF91c2VkX2F0OiBudW1iZXI7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIGh1bWFuLXJlYWRhYmxlIG5hbWUgZ2l2ZW4gdG8gdGhlIGtleSAqL1xuICAgICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICB0eXBlOiBcImZpZG9cIjtcbiAgICAgICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBDb25mbGljdEVycm9yQ29kZTogXCJDb25jdXJyZW50UmVxdWVzdERpc2FsbG93ZWRcIiB8IFwiQ29uY3VycmVudExvY2tDcmVhdGlvblwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSBjb250YWN0IGluIHRoZSBvcmcuICovXG4gICAgQ29udGFjdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDb21tb25GaWVsZHNcIl0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBMYWJlbHMgdG8gY2F0ZWdvcml6ZSB0aGlzIGNvbnRhY3QuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwiY3ViaXN0OmVyYzIwX3Rva2VuXCJcbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgbGFiZWxzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDb250YWN0TGFiZWxcIl1bXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuYW1lIGZvciB0aGUgY29udGFjdC4gTXVzdCBiZSBhIHVuaXF1ZSBuYW1lIGFtb25nIGNvbnRhY3RzIGluIHRoZVxuICAgICAgICogb3JnLiBUaGUgbmFtZSBtdXN0IGNvbnNpc3Qgb2YgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMsIHNwYWNlcywgYC5gIGFuZCBgLWAsXG4gICAgICAgKiBhbmQgY2Fubm90IGJlIGxvbmdlciB0aGFuIDUwIGNoYXJhY3RlcnMuXG4gICAgICAgKiBAZXhhbXBsZSBTYXRvc2hpIE5ha2Ftb3RvXG4gICAgICAgKi9cbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgIG93bmVyOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBhZGRyZXNzIGFzc29jaWF0ZWQgd2l0aCBhIGNvbnRhY3QuICovXG4gICAgQ29udGFjdEFkZHJlc3NEYXRhOlxuICAgICAgfCAoY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCaXRjb2luQWRkcmVzc0luZm9cIl0gJiB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgbmV0d29yazogXCJCaXRjb2luXCI7XG4gICAgICAgIH0pXG4gICAgICB8IChjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkV2bUFkZHJlc3NJbmZvXCJdICYge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG5ldHdvcms6IFwiRXZtXCI7XG4gICAgICAgIH0pXG4gICAgICB8IChjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlN1aUFkZHJlc3NJbmZvXCJdICYge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG5ldHdvcms6IFwiU3VpXCI7XG4gICAgICAgIH0pXG4gICAgICB8IChjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNvbGFuYUFkZHJlc3NJbmZvXCJdICYge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG5ldHdvcms6IFwiU29sYW5hXCI7XG4gICAgICAgIH0pXG4gICAgICB8IChjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNhbnRvblBhcnR5SW5mb1wiXSAmIHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBuZXR3b3JrOiBcIkNhbnRvblwiO1xuICAgICAgICB9KTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIGFib3V0IGEgQ29udGFjdC4gKi9cbiAgICBDb250YWN0SW5mb1Jlc3BvbnNlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbnRhY3RcIl0gJiB7XG4gICAgICBhZGRyZXNzZXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWRkcmVzc01hcFwiXTtcbiAgICAgIGlkOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIExhYmVscyB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIGEgY29udGFjdC5cbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIENvbnRhY3RMYWJlbDogXCJjdWJpc3Q6ZXJjMjBfdG9rZW5cIiB8IFwiY3ViaXN0OnNwbF90b2tlblwiO1xuICAgIENyZWF0ZUFuZFVwZGF0ZUtleVByb3BlcnRpZXM6IHtcbiAgICAgIGVkaXRfcG9saWN5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFZGl0UG9saWN5XCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFNldCB0aGlzIGtleSdzIG1ldGFkYXRhLiBJZiB0aGlzIHZhbHVlIGlzIGBudWxsYCwgdGhlIG1ldGFkYXRhIGlzIGVyYXNlZC4gSWYgdGhlIGZpZWxkIGlzXG4gICAgICAgKiBtaXNzaW5nLCB0aGUgbWV0YWRhdGEgcmVtYWlucyB1bmNoYW5nZWQuXG4gICAgICAgKi9cbiAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFNwZWNpZnkgYSB1c2VyIG90aGVyIHRoYW4gdGhlbXNlbHZlcyB0byBiZSB0aGUgKHBvdGVudGlhbGx5IG5ldykgb3duZXIgb2YgdGhlIGtleS5cbiAgICAgICAqIFRoZSBzcGVjaWZpZWQgb3duZXIgbXVzdCBiZSBhbiBleGlzdGluZyB1c2VyIHdobyBpcyBhIG1lbWJlciBvZiB0aGUgc2FtZSBvcmcuXG4gICAgICAgKiBAZXhhbXBsZSBVc2VyI2MzYjkzNzljLTRlOGMtNDIxNi1iZDBhLTY1YWNlNTNjZjk4ZlxuICAgICAgICovXG4gICAgICBvd25lcj86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBTZXQgdGhpcyBrZXkncyBwb2xpY2llcy4gRm9yIGFuIGV4aXN0aW5nIGtleSwgdGhpcyBvdmVyd3JpdGVzIGFsbCBpdHMgcG9saWNpZXMuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwiQWxsb3dSYXdCbG9iU2lnbmluZ1wiLFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJSZXF1aXJlTWZhXCI6IHtcbiAgICAgICAqICAgICAgIFwiY291bnRcIjogMVxuICAgICAgICogICAgIH1cbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBwb2xpY3k/OiB1bmtub3duW10gfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaW5mb3JtYXRpb24gbmVlZGVkIHRvIGNyZWF0ZSBhIENvbnRhY3QuICovXG4gICAgQ3JlYXRlQ29udGFjdFJlcXVlc3Q6IHtcbiAgICAgIGFkZHJlc3Nlcz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWRkcmVzc01hcFwiXTtcbiAgICAgIGVkaXRfcG9saWN5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFZGl0UG9saWN5XCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIGxhYmVscyB0byBhc3NvY2lhdGUgd2l0aCB0aGUgY29udGFjdC5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAgXCJjdWJpc3Q6ZXJjMjBfdG9rZW5cIlxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBsYWJlbHM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbnRhY3RMYWJlbFwiXVtdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCB1c2VyLWRlZmluZWQgbWV0YWRhdGEgYWJvdXQgdGhlIGNvbnRhY3QuICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmFtZSBmb3IgdGhlIGNvbnRhY3QuIE11c3QgYmUgYSB1bmlxdWUgbmFtZSBhbW9uZyBjb250YWN0cyBpbiB0aGVcbiAgICAgICAqIG9yZy4gTmFtZSBtdXN0IGNvbnNpc3Qgb2YgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMsIHNwYWNlcywgYC5gIGFuZCBgLWAsXG4gICAgICAgKiBhbmQgY2Fubm90IGJlIGxvbmdlciB0aGFuIDUwIGNoYXJhY3RlcnMuXG4gICAgICAgKiBAZXhhbXBsZSBTYXRvc2hpIE5ha2Ftb3RvXG4gICAgICAgKi9cbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICB9O1xuICAgIENyZWF0ZUtleUltcG9ydEtleVJlc3BvbnNlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUltcG9ydEtleVwiXSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFuIGF0dGVzdGF0aW9uIGRvY3VtZW50IGZyb20gYSBzZWN1cmUgZW5jbGF2ZSwgaW5jbHVkaW5nIGFuXG4gICAgICAgKiBSU0Egc2lnbmluZyBrZXkgdXNlZCB0byBzaWduIHRoZSBjb250ZW50cyBvZiB0aGlzIG1lc3NhZ2UuXG4gICAgICAgKi9cbiAgICAgIGVuY2xhdmVfYXR0ZXN0YXRpb246IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFuIFJTQS1QU1MtU0hBMjU2IHNpZ25hdHVyZSBvbiB0aGUgcHVibGljIGtleSBhbmQgZW5jcnlwdGVkXG4gICAgICAgKiBzZWNyZXRzIGF0dGVzdGluZyB0byB0aGVpciBnZW5lcmF0aW9uIGluc2lkZSBhIHNlY3VyZSBlbmNsYXZlLlxuICAgICAgICovXG4gICAgICBlbmNsYXZlX3NpZ25hdHVyZTogc3RyaW5nO1xuICAgIH07XG4gICAgQ3JlYXRlS2V5UmVxdWVzdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDcmVhdGVBbmRVcGRhdGVLZXlQcm9wZXJ0aWVzXCJdICYge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ2hhaW4gaWQgZm9yIHdoaWNoIHRoZSBrZXkgaXMgYWxsb3dlZCB0byBzaWduIG1lc3NhZ2VzXG4gICAgICAgKiBAZXhhbXBsZSA1XG4gICAgICAgKi9cbiAgICAgIGNoYWluX2lkPzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIE51bWJlciBvZiBrZXlzIHRvIGNyZWF0ZVxuICAgICAgICogQGV4YW1wbGUgMVxuICAgICAgICovXG4gICAgICBjb3VudDogbnVtYmVyO1xuICAgICAga2V5X3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5VHlwZVwiXTtcbiAgICB9O1xuICAgIENyZWF0ZUtleVJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBpbmZvIGFib3V0IHRoZSBjcmVhdGVkIGtleXMgKi9cbiAgICAgIGtleXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5mb1wiXVtdO1xuICAgIH07XG4gICAgQ3JlYXRlT3JnUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRvIGVuYWJsZSBtZXRyaWNzIGZvciB0aGUgbmV3IG9yZ2FuaXphdGlvbiAqL1xuICAgICAgbWV0cmljc19lbmFibGVkPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBodW1hbiByZWFkYWJsZSBuYW1lIG9mIHRoZSBuZXcgb3JnYW5pemF0aW9uXG4gICAgICAgKiBAZXhhbXBsZSBNeSBDb29sIE9yZ1xuICAgICAgICovXG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHJlc3BvbnNlIHRvIFtjcmVhdGVfaW1wb3J0X2tleV0gY29udGFpbmluZyB0aGUgZ2VuZXJhdGVkIGtleSBhbmQgZW5jbGF2ZVxuICAgICAqIGF0dGVzdGF0aW9ucy5cbiAgICAgKi9cbiAgICBDcmVhdGVQb2xpY3lJbXBvcnRLZXlSZXNwb25zZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJbXBvcnRLZXlcIl0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBbiBhdHRlc3RhdGlvbiBkb2N1bWVudCBmcm9tIGEgc2VjdXJlIGVuY2xhdmUsIGluY2x1ZGluZyBhblxuICAgICAgICogUlNBIHNpZ25pbmcga2V5IHVzZWQgdG8gc2lnbiB0aGUgY29udGVudHMgb2YgdGhpcyBtZXNzYWdlLlxuICAgICAgICovXG4gICAgICBlbmNsYXZlX2F0dGVzdGF0aW9uOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBbiBSU0EtUFNTLVNIQTI1NiBzaWduYXR1cmUgb24gdGhlIHB1YmxpYyBrZXkgYW5kIGVuY3J5cHRlZFxuICAgICAgICogc2VjcmV0cyBhdHRlc3RpbmcgdG8gdGhlaXIgZ2VuZXJhdGlvbiBpbnNpZGUgYSBzZWN1cmUgZW5jbGF2ZS5cbiAgICAgICAqL1xuICAgICAgZW5jbGF2ZV9zaWduYXR1cmU6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBmb3IgY3JlYXRpbmcgYSBuYW1lZCBwb2xpY3kgKi9cbiAgICBDcmVhdGVQb2xpY3lSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBY2Nlc3MtY29udHJvbCBlbnRyaWVzIGRlZmluaW5nIGhvdyB0aGUgcG9saWN5IGNhbiBiZSBhY2Nlc3NlZCwgbW9kaWZpZWQsXG4gICAgICAgKiBhdHRhY2hlZCBhbmQgZXhlY3V0ZWQuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcImFjdGlvblwiOiBcImF0dGFjaFwiLFxuICAgICAgICogICAgIFwicmVzb3VyY2VzXCI6IFtcbiAgICAgICAqICAgICAgIHtcbiAgICAgICAqICAgICAgICAgXCJrZXlfaWRcIjogXCIqXCIsXG4gICAgICAgKiAgICAgICAgIFwicm9sZV9pZFwiOiBcIlJvbGUjZTQyN2MyOGEtOWM1Yi00OWNjLWEyNTctODc4YWVhNThhMjJjXCJcbiAgICAgICAqICAgICAgIH1cbiAgICAgICAqICAgICBdLFxuICAgICAgICogICAgIFwic3ViamVjdHNcIjogXCIqXCJcbiAgICAgICAqICAgfSxcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiYWN0aW9uXCI6IFwic2lnblwiLFxuICAgICAgICogICAgIFwic3ViamVjdHNcIjogXCJSb2xlI2U0MjdjMjhhLTljNWItNDljYy1hMjU3LTg3OGFlYTU4YTIyY1wiXG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgYWNsPzogdW5rbm93bltdIHwgbnVsbDtcbiAgICAgIGVkaXRfcG9saWN5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFZGl0UG9saWN5XCJdIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcG9saWN5IG5hbWUuXG4gICAgICAgKiBNdXN0IGJlIHVuaXF1ZSBhbW9uZyB0aGUgbmFtZWQgcG9saWNpZXMgaW4gdGhpcyBvcmcuIER1cGxpY2F0ZSBwb2xpY3kgbmFtZXNcbiAgICAgICAqIHdpbGwgYmUgcmVqZWN0ZWQuXG4gICAgICAgKiBAZXhhbXBsZSBteV9wb2xpY3lcbiAgICAgICAqL1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgcG9saWN5X3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUG9saWN5VHlwZVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwb2xpY3kgcnVsZXMuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlJlcXVpcmVNZmFcIjoge1xuICAgICAgICogICAgICAgXCJjb3VudFwiOiAxXG4gICAgICAgKiAgICAgfVxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHJ1bGVzOiB1bmtub3duW107XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIGNyZWF0ZSByb2xlIHJlcXVlc3QgYm9keSAqL1xuICAgIENyZWF0ZVJvbGVSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoZSByb2xlLlxuICAgICAgICogQGV4YW1wbGUgbXlfcm9sZVxuICAgICAgICovXG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBuZXdseSBjcmVhdGVkIHJvbGUgaW5mb3JtYXRpb24gKi9cbiAgICBDcmVhdGVSb2xlUmVzcG9uc2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIHJvbGUuXG4gICAgICAgKiBAZXhhbXBsZSBteV9yb2xlXG4gICAgICAgKi9cbiAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBuZXdseSBjcmVhdGVkIHJvbGVcbiAgICAgICAqIEBleGFtcGxlIFJvbGUjYmZlM2VjY2ItNzMxZS00MzBkLWIxZTUtYWMxMzYzZTZiMDZiXG4gICAgICAgKi9cbiAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIENyZWF0ZVNlc3Npb25SZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJhdGNoZXRDb25maWdcIl0gJlxuICAgICAgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDbGllbnRTZXNzaW9uTWV0YWRhdGFcIl0gJiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gQnkgZGVmYXVsdCwgdGhlIHJlcXVlc3RlZCBzZXNzaW9uIGFuZCBhdXRoIGxpZmV0aW1lcyBhcmUgdHJ1bmNhdGVkIHRvIGJlIGF0IG1vc3QgcmVxdWVzdG9yJ3NcbiAgICAgICAgICogc2Vzc2lvbiBhbmQgYXV0aCBsaWZldGltZSwgcmVzcGVjdGl2ZWx5LiBUbyBleHRlbmQgdGhlIHJlcXVlc3RlZCBsaWZldGltZXMgcGFzdCB0aGVcbiAgICAgICAgICogcmVxdWVzdG9yJ3MsIHNldCB0aGlzIHByb3BlcnR5IHRvIGB0cnVlYCAoaW4gd2hpY2ggY2FzZSBNRkEgd2lsbCBiZSByZXF1aXJlZCkuXG4gICAgICAgICAqL1xuICAgICAgICBleHRlbmRfbGlmZXRpbWVzPzogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGh1bWFuIHJlYWRhYmxlIGRlc2NyaXB0aW9uIG9mIHRoZSBzZXNzaW9uJ3MgcHVycG9zZVxuICAgICAgICAgKiBAZXhhbXBsZSBNYW5hZ2Uga2V5cyBvbiBzZXJ2ZXIgZm9vLmJhclxuICAgICAgICAgKi9cbiAgICAgICAgcHVycG9zZTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIENvbnRyb2xzIHdoYXQgY2FwYWJpbGl0aWVzIHRoaXMgc2Vzc2lvbiB3aWxsIGhhdmUuXG4gICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICogICBcIm1hbmFnZTprZXk6KlwiXG4gICAgICAgICAqIF1cbiAgICAgICAgICovXG4gICAgICAgIHNjb3BlczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTY29wZVwiXVtdO1xuICAgICAgfTtcbiAgICBDcmVhdGVUb2tlblJlcXVlc3Q6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUmF0Y2hldENvbmZpZ1wiXSAmXG4gICAgICBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNsaWVudFNlc3Npb25NZXRhZGF0YVwiXSAmIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGh1bWFuIHJlYWRhYmxlIGRlc2NyaXB0aW9uIG9mIHRoZSBwdXJwb3NlIG9mIHRoZSBrZXlcbiAgICAgICAgICogQGV4YW1wbGUgVmFsaWRhdG9yIFNpZ25pbmdcbiAgICAgICAgICovXG4gICAgICAgIHB1cnBvc2U6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBDb250cm9scyB3aGF0IGNhcGFiaWxpdGllcyB0aGlzIHNlc3Npb24gd2lsbCBoYXZlLiBCeSBkZWZhdWx0LCBpdCBoYXMgYWxsXG4gICAgICAgICAqIHNpZ25pbmcgY2FwYWJpbGl0aWVzLCBpLmUuLCBqdXN0IHRoZSAnc2lnbjoqJyBzY29wZS5cbiAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgKiAgIFwic2lnbjoqXCJcbiAgICAgICAgICogXVxuICAgICAgICAgKi9cbiAgICAgICAgc2NvcGVzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTY29wZVwiXVtdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEFuIGV4dGVuZGVkIGZvcm0gb2YgYFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnNgIHRoYXQgYWxsb3dzIGNsaWVudHMgdG8gZGVyaXZlIHRoZSBXZWJBdXRobiBjaGFsbGVuZ2VcbiAgICAgKiBmcm9tIGEgc3RydWN0dXJlZCBwcmVpbWFnZS5cbiAgICAgKlxuICAgICAqIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSB3ZWJ1YXRobiBzaWduYXR1cmUgY2FuIG9ubHkgYmUgdXNlZCBmb3IgYSBzcGVjaWZpYyBwdXJwb3NlXG4gICAgICovXG4gICAgQ3JlYXRpb25PcHRpb25zV2l0aEhhc2g6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2hhbGxlbmdlUGllY2VzXCJdICYge1xuICAgICAgb3B0aW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zXCJdO1xuICAgIH07XG4gICAgQ3ViZVNpZ25lclVzZXJJbmZvOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBtdWx0aS1mYWN0b3IgYXV0aGVudGljYXRpb24gbWV0aG9kcyBjb25maWd1cmVkIGZvciB0aGlzIHVzZXIgKi9cbiAgICAgIGNvbmZpZ3VyZWRfbWZhOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbmZpZ3VyZWRNZmFcIl1bXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gU2V0IG9uY2UgdGhlIHVzZXIgc3VjY2Vzc2Z1bGx5IGxvZ3MgaW50byBDdWJlU2lnbmVyICovXG4gICAgICBpbml0aWFsaXplZDogYm9vbGVhbjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgaHVtYW4gbmFtZSBmb3IgdGhlIHVzZXIgKi9cbiAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBDdWJlU2lnbmVyJ3MgdXNlciBpZGVudGlmaWVyICovXG4gICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEN1c3RvbSBjaGFpbiBSUEMgcmVxdWVzdCAqL1xuICAgIEN1c3RvbUNoYWluUnBjUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBIVFRQIGJvZHkgKi9cbiAgICAgIGJvZHk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgY2hhaW46IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3VzdG9tQ2hhaW5TZWxlY3RvclwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSFRUUCByZWxhdGl2ZSBwYXRoICovXG4gICAgICBwYXRoOiBzdHJpbmc7XG4gICAgfTtcbiAgICBDdXN0b21DaGFpblJwY1Jlc3BvbnNlOiB1bmtub3duO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQ3VzdG9tIGNoYWluIHNlbGVjdG9yICovXG4gICAgQ3VzdG9tQ2hhaW5TZWxlY3Rvcjoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBFVk0gY2hhaW4gKi9cbiAgICAgIEV2bToge1xuICAgICAgICAvKiogQGV4YW1wbGUgMHgwMSAqL1xuICAgICAgICBjaGFpbl9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gYWJvdXQgYW4gb3JnJ3MgY3VzdG9tIGNoYWlucy4gKi9cbiAgICBDdXN0b21DaGFpbnNEYXRhOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEN1c3RvbSBFVk0gY2hhaW5zLiAqL1xuICAgICAgZXZtOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkV2bUN1c3RvbUNoYWluXCJdW107XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gcHJvZHVjZWQgYnkgYSBzdWNjZXNzZnVsIGRlcG9zaXRcbiAgICAgKiBAZXhhbXBsZSB7XG4gICAgICogICBcImNoYWluX2lkXCI6IDUsXG4gICAgICogICBcImRlcG9zaXRfdHhuXCI6IHtcbiAgICAgKiAgICAgXCJkYXRhXCI6IFwiMHguLi5cIixcbiAgICAgKiAgICAgXCJ0b1wiOiBcIjB4ZmY1MGVkM2QwZWMwM2FjMDFkNGM3OWFhZDc0OTI4YmZmNDhhN2IyYlwiLFxuICAgICAqICAgICBcInZhbHVlXCI6IFwiMHgxYmMxNmQ2NzRlYzgwMDAwMFwiXG4gICAgICogICB9LFxuICAgICAqICAgXCJuZXdfdmFsaWRhdG9yX3BrXCI6IFwiOTcwMGZiYjhjOTA2OTQyNDQyYzJhNWIzYWQ3NDk4ZjI3YWVkZGEyNTM3ODZhNmZiYWE4ZmVmNDdmYjdhZjIzNGU1MGNmMmNjZTgxNWE1NTMwODc5OTJhZTU2NWQ0OGRhXCJcbiAgICAgKiB9XG4gICAgICovXG4gICAgRGVwb3NpdFR4bjoge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ2hhaW4gSUQgZm9yIHdoaWNoIHRoZSBkZXBvc2l0IHRyYW5zYWN0aW9uIHdhcyBjcmVhdGVkXG4gICAgICAgKi9cbiAgICAgIGNoYWluX2lkOiBudW1iZXI7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBkZXBvc2l0IHRyYW5zYWN0aW9uLiBJbmNsdWRlcyBvbmx5IGB0b2AsIGB2YWx1ZWAsIGFuZCBgZGF0YWAgZmllbGRzLiAqL1xuICAgICAgZGVwb3NpdF90eG46IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGhleC1lbmNvZGVkIGNvbXByZXNzZWQgZm9ybSBvZiB0aGUgbmV3IHZhbGlkYXRvciBCTFMgcHVibGljIGtleSAqL1xuICAgICAgbmV3X3ZhbGlkYXRvcl9wazogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSB0eXBlIG9mIGRlcG9zaXQgdG8gcGVyZm9ybVxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgRGVwb3NpdFR5cGU6IFwiQ2Fub25pY2FsXCIgfCBcIldyYXBwZXJcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlcXVlc3QgdG8gZGVyaXZlIGtleXMgZm9yIG9uZSB0eXBlIGZyb20gYSBzcGVjaWZpZWQgbW5lbW9uaWMuICovXG4gICAgRGVyaXZlS2V5UmVxdWVzdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDcmVhdGVBbmRVcGRhdGVLZXlQcm9wZXJ0aWVzXCJdICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBvZiBkZXJpdmF0aW9uIHBhdGhzIGZvciB3aGljaCB0byBkZXJpdmUuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwibS80NCcvNjAnLzAnLzAvMFwiLFxuICAgICAgICogICBcIm0vNDQnLzkwMDAnLzAnLzAvMFwiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIGRlcml2YXRpb25fcGF0aDogc3RyaW5nW107XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBXaGVuIGZhbHNlICh0aGUgZGVmYXVsdCksIG5vdGhpbmcgaXMgcmV0dXJuZWQgd2hlbiBhIGRlcml2ZWQga2V5IGFscmVhZHlcbiAgICAgICAqIGV4aXN0cy4gV2hlbiB0cnVlLCByZXR1cm5zIHRoZSBLZXlJbmZvIHN0cnVjdCBmb3Iga2V5cyB0aGF0IGFscmVhZHkgZXhpc3RcbiAgICAgICAqIGlmIGNhbGxlciBpcyBhbGxvd2VkIHRvIGxpc3QgdGhhdCBrZXkuXG4gICAgICAgKi9cbiAgICAgIGlkZW1wb3RlbnQ/OiBib29sZWFuO1xuICAgICAga2V5X3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5VHlwZVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE1hdGVyaWFsLWlkIG9mIHRoZSBtbmVtb25pYyB0byB1c2UgZm9yIGRlcml2YXRpb24uXG4gICAgICAgKiBAZXhhbXBsZSAweDlmMDdiZTgyZDkzNGZjYjVkMGY3NWRkMjRjMmRmZWE4YTg1YTRkMGMyODlkNTg4MjhiMzUzN2ZhZTI0ZDMyYjhcbiAgICAgICAqL1xuICAgICAgbW5lbW9uaWNfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVxdWVzdCB0byBkZXJpdmUga2V5cyBmb3IgbXVsdGlwbGUgdHlwZXMgZnJvbSBhIHNwZWNpZmllZCBtbmVtb25pYy4gKi9cbiAgICBEZXJpdmVLZXlzUmVxdWVzdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDcmVhdGVBbmRVcGRhdGVLZXlQcm9wZXJ0aWVzXCJdICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gV2hlbiBmYWxzZSAodGhlIGRlZmF1bHQpLCBub3RoaW5nIGlzIHJldHVybmVkIHdoZW4gYSBkZXJpdmVkIGtleSBhbHJlYWR5XG4gICAgICAgKiBleGlzdHMuIFdoZW4gdHJ1ZSwgcmV0dXJucyB0aGUgS2V5SW5mbyBzdHJ1Y3QgZm9yIGtleXMgdGhhdCBhbHJlYWR5IGV4aXN0XG4gICAgICAgKiBpZiBjYWxsZXIgaXMgYWxsb3dlZCB0byBsaXN0IHRoYXQga2V5LlxuICAgICAgICovXG4gICAgICBpZGVtcG90ZW50PzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEtleSB0eXBlcyBhbmQgY29ycmVzcG9uZGluZyBwYXRocyBmb3IgZGVyaXZhdGlvbiwgcGx1cyBvcHRpb25hbFxuICAgICAgICogcG9saWNpZXMgdG8gaW5jbHVkZSBmb3Igc3BlY2lmaWMga2V5cy4gSXQgaXMgYW4gZXJyb3IgdG8gc3BlY2lmeVxuICAgICAgICogYSBwb2xpY3kgdGhhdCBkb2VzIG5vdCBhcHBseSB0byB0aGUgY29ycmVzcG9uZGluZyBrZXkgdHlwZS5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiZGVyaXZhdGlvbl9wYXRoXCI6IFwibS80NCcvNjAnLzAnLzAvMFwiLFxuICAgICAgICogICAgIFwia2V5X3R5cGVcIjogXCJTZWNwRXRoQWRkclwiXG4gICAgICAgKiAgIH0sXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcImRlcml2YXRpb25fcGF0aFwiOiBcIm0vMTEnLzIyJy8zM1wiLFxuICAgICAgICogICAgIFwia2V5X3R5cGVcIjogXCJUYXByb290QnRjXCIsXG4gICAgICAgKiAgICAgXCJwb2xpY3lcIjogW1xuICAgICAgICogICAgICAgXCJBbGxvd1Jhd0Jsb2JTaWduaW5nXCJcbiAgICAgICAqICAgICBdXG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAga2V5X3R5cGVzX2FuZF9kZXJpdmF0aW9uX3BhdGhzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleVR5cGVBbmREZXJpdmF0aW9uUGF0aFwiXVtdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTWF0ZXJpYWwtaWQgb2YgdGhlIG1uZW1vbmljIHRvIHVzZSBmb3IgZGVyaXZhdGlvbi4gSWYgdW5zcGVjaWZpZWQsXG4gICAgICAgKiBhIG5ldyBtbmVtb25pYyBpcyBmaXJzdCBjcmVhdGVkLlxuICAgICAgICogQGV4YW1wbGUgMHg5ZjA3YmU4MmQ5MzRmY2I1ZDBmNzVkZDI0YzJkZmVhOGE4NWE0ZDBjMjg5ZDU4ODI4YjM1MzdmYWUyNGQzMmI4XG4gICAgICAgKi9cbiAgICAgIG1uZW1vbmljX2lkPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIERpZmZpZUhlbGxtYW5SZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBleHBsYWluaW5nXG4gICAgICAgKiB0aGUgb3V0Y29tZSAoaS5lLiwgcGVybWl0dGVkIHZzLiBkZW5pZWQgdnMuIE1GQSByZXF1aXJlZCkgb2YgdGhlIHNpZ24gcmVxdWVzdC5cbiAgICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBleHBsYWluPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIE1GQSBpcyByZXF1aXJlZCwgZmFpbCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIHJldHVybmluZyAyMDIgYW5kIGNyZWF0aW5nXG4gICAgICAgKiBwZW5kaW5nIE1GQSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZmFpbF9vbl9tZmE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuIFBhc3NpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBtYWtlIHJldmlld2luZ1xuICAgICAgICogb2YgcGVuZGluZyBNRkEgcmVxdWVzdHMgYW5kL29yIGhpc3RvcmljYWwga2V5IHRyYW5zYWN0aW9ucyBtb3JlIHRyYW5zcGFyZW50LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGUuZy4sIHRvIGNhcnJ5IGFkZGl0aW9uYWwgZGF0YSB0byBXZWJIb29rIHBvbGljaWVzLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzZXQgb2Ygc2VyaWFsaXplZCBlbGxpcHRpYyBjdXJ2ZSBwb2ludHMgZnJvbSB3aGljaCB0byBjb21wdXRlIHNoYXJlZCBzZWNyZXRzLlxuICAgICAgICogVGhlIHNlcmlhbGl6YXRpb24gZm9ybWF0IG9mIHRoZXNlIHBvaW50cyBkZXBlbmRzIG9uIHRoZSBrZXkgdHlwZTsgc2VlIHRoZSBDdWJlU2lnbmVyXG4gICAgICAgKiBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICAgICAgICovXG4gICAgICBwb2ludHM6IHN0cmluZ1tdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQW4gb3B0aW9uYWwgTklTVCBQLTI1NiBwdWJsaWMga2V5IChiYXNlNjQtZW5jb2RlZCBTRUMxIHdpdGggb3Igd2l0aG91dCBjb21wcmVzc2lvbikuXG4gICAgICAgKlxuICAgICAgICogSWYgcHJvdmlkZWQsIHRoZSByZXNwb25zZSB3aWxsIGJlIGVuY3J5cHRlZCB0byB0aGlzIHB1YmxpYyBrZXkgdXNpbmcgUkZDOTE4MFxuICAgICAgICogSFBLRS1ESEtFTShQLTI1NiwgSEtERi1TSEEyNTYpIHdpdGggQUVTLTI1Ni1HQ00gYXMgdGhlIHN5bW1ldHJpYyBjaXBoZXIuXG4gICAgICAgKlxuICAgICAgICogSWYgbm8gcHVibGljIGtleSBpcyBzcGVjaWZpZWQsIHRoZSByZXN1bHRzIHdpbGwgYmUgcmV0dXJuZWQgdW5lbmNyeXB0ZWQuIEluIHRoaXNcbiAgICAgICAqIGNhc2UsIHRoZSBpbnB1dCBwb2ludHMgc2hvdWxkIGJlIG1hc2tlZCB3aXRoIGEgcmFuZG9tIHNjYWxhciB0byBhdm9pZCBsZWFraW5nIHRoZVxuICAgICAgICogc2hhcmVkIHNlY3JldCBpbiB0aGUgcmVzcG9uc2U7IHRoZSByZXN1bHRzIGNhbiBiZSB1bm1hc2tlZCB2aWEgcG9pbnQgbXVsdGlwbGljYXRpb25cbiAgICAgICAqIHdpdGggdGhlIGludmVyc2Ugb2YgdGhlIG1hc2tpbmcgc2NhbGFyLlxuICAgICAgICogQGV4YW1wbGUgQWtwTFQvM2RYQXBKelhTZHVhUFE3YXB5VDBBREJ3cWt0MWVzL2FUMGlXV2ZcbiAgICAgICAqL1xuICAgICAgcHVibGljX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXN1bHQgb2YgYSBEaWZmaWUgSGVsbG1hbiBrZXkgZXhjaGFuZ2UgKi9cbiAgICBEaWZmaWVIZWxsbWFuUmVzcG9uc2U6IChcbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlc3VsdGluZyBwb2ludHMgYXMgYmFzZTY0LWVuY29kZWQgYnl0ZSBzdHJpbmdzIGluIGEga2V5LXR5cGUtLWRlcGVuZGVudCBmb3JtYXQuICovXG4gICAgICAgICAgcG9pbnRzOiBzdHJpbmdbXTtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICByZXNwb25zZV90eXBlOiBcIm1hc2tlZFwiO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gQSBjaXBoZXJ0ZXh0IGNvbnRhaW5pbmcgdGhlIHJlc3VsdGluZyBwb2ludHMuIFRoZSBlbmNsb3NlZCBwbGFpbnRleHQgaXMgYSBzZXF1ZW5jZVxuICAgICAgICAgICAqIG9mIGJhc2U2NC1lbmNvZGVkIGJ5dGUgc3RyaW5ncyBpbiBhIGtleS10eXBlLS1kZXBlbmRlbnQgZm9ybWF0LlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGVuY3J5cHRlZF9zaGFyZWRfc2VjcmV0czogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZXBoZW1lcmFsIHB1YmxpYyBrZXkgdXNlZCBmb3IgSFBLRSBrZXkgZGVyaXZhdGlvbiBpbiBiYXNlNjQtZW5jb2RlZFxuICAgICAgICAgICAqIHVuY29tcHJlc3NlZCBTRUMxIHNlcmlhbGl6YXRpb24uXG4gICAgICAgICAgICovXG4gICAgICAgICAgZXBoZW1lcmFsX3B1YmxpY19rZXk6IHN0cmluZztcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICByZXNwb25zZV90eXBlOiBcImVuY3J5cHRlZFwiO1xuICAgICAgICB9XG4gICAgKSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWN5IGV2YWx1YXRpb24gdHJlZS4gKi9cbiAgICAgIHBvbGljeV9ldmFsX3RyZWU/OiB1bmtub3duO1xuICAgIH0gJiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEEgcG9saWN5IHdoaWNoIGdvdmVybnMgd2hlbiBhbmQgd2hvIGlzIGFsbG93ZWQgdG8gdXBkYXRlIHRoZSBlbnRpdHkgdGhpcyBwb2xpY3kgaXNcbiAgICAgKiBhdHRhY2hlZCB0byAoZS5nLiwgYSByb2xlIG9yIGEga2V5KS5cbiAgICAgKlxuICAgICAqIFdoZW4gYXR0YWNoZWQgdG8gYSByb2xlLCBieSBkZWZhdWx0LCB0aGlzIHBvbGljeSBhcHBsaWVzIHRvIHJvbGUgZGVsZXRpb24gYW5kIGFsbFxuICAgICAqIHJvbGUgdXBkYXRlcyAoaW5jbHVkaW5nIGFkZGluZy9yZW1vdmluZyBrZXlzIGFuZCB1c2Vycyk7IGluIHRlcm1zIG9mIHNjb3BlcyxcbiAgICAgKiBpdCBhcHBsaWVzIHRvIGBtYW5hZ2U6cm9sZTp1cGRhdGU6KmAgYW5kIGBtYW5hZ2U6cm9sZTpkZWxldGVgLlxuICAgICAqXG4gICAgICogV2hlbiBhdHRhY2hlZCB0byBhIGtleSwgYnkgZGVmYXVsdCwgdGhpcyBwb2xpY3kgYXBwbGllcyB0byBrZXkgZGVsZXRpb24sIGFsbFxuICAgICAqIGtleSB1cGRhdGVzLCBhbmQgYWRkaW5nL3JlbW92aW5nIHRoYXQga2V5IHRvL2Zyb20gYSByb2xlOyBpbiB0ZXJtcyBvZiBzY29wZXMsXG4gICAgICogaXQgYXBwbGllcyB0byBgbWFuYWdlOmtleTp1cGRhdGU6KmAsIGBtYW5hZ2U6a2V5OmRlbGV0ZWAsIGBtYW5hZ2U6cm9sZTp1cGRhdGU6a2V5OipgLlxuICAgICAqXG4gICAgICogVGhpcyBkZWZhdWx0IGNhbiBiZSBjaGFuZ2VkIGJ5IHNldHRpbmcgdGhlIGBhcHBsaWVzX3RvX3Njb3Blc2AgcHJvcGVydHkuXG4gICAgICovXG4gICAgRWRpdFBvbGljeToge1xuICAgICAgYXBwbGllc190b19zY29wZXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNjb3BlU2V0XCJdO1xuICAgICAgbWZhPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFQb2xpY3lcIl0gfCBudWxsO1xuICAgICAgdGltZV9sb2NrX3VudGlsPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdIHwgbnVsbDtcbiAgICB9O1xuICAgIEVpcDE5MVNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBleHBsYWluaW5nXG4gICAgICAgKiB0aGUgb3V0Y29tZSAoaS5lLiwgcGVybWl0dGVkIHZzLiBkZW5pZWQgdnMuIE1GQSByZXF1aXJlZCkgb2YgdGhlIHNpZ24gcmVxdWVzdC5cbiAgICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBleHBsYWluPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIE1GQSBpcyByZXF1aXJlZCwgZmFpbCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIHJldHVybmluZyAyMDIgYW5kIGNyZWF0aW5nXG4gICAgICAgKiBwZW5kaW5nIE1GQSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZmFpbF9vbl9tZmE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuIFBhc3NpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBtYWtlIHJldmlld2luZ1xuICAgICAgICogb2YgcGVuZGluZyBNRkEgcmVxdWVzdHMgYW5kL29yIGhpc3RvcmljYWwga2V5IHRyYW5zYWN0aW9ucyBtb3JlIHRyYW5zcGFyZW50LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGUuZy4sIHRvIGNhcnJ5IGFkZGl0aW9uYWwgZGF0YSB0byBXZWJIb29rIHBvbGljaWVzLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEVJUC0xOTEgZGF0YSB0byBzaWduIGFzIGhleC1lbmNvZGVkIGJ5dGVzLlxuICAgICAgICogQGV4YW1wbGUgMHhkZWFkYmVlZjEzYzBmZmVlXG4gICAgICAgKi9cbiAgICAgIGRhdGE6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFuIG9wdGlvbmFsIHR3ZWFrIHZhbHVlIHRoYXQgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBzZWNyZXQga2V5IGJlZm9yZSBzaWduaW5nLlxuICAgICAgICogVGhpcyBmaWVsZCBtdXN0IGNvbnRhaW4gYSBiYXNlLTY0IHN0cmluZyBlbmNvZGluZyBhIHZlY3RvciBvZiBleGFjdGx5IDMyIGJ5dGVzLlxuICAgICAgICogU2VlIHRoZSBDdWJlU2lnbmVyIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIHR3ZWFraW5nIHByb2NlZHVyZS5cbiAgICAgICAqIEBleGFtcGxlIEY0MUhBeTJxNUduOGxhRjJDdU1zWmJSQVFUbUQrNE9iM1ZVTVo3VEJHSzQ9XG4gICAgICAgKi9cbiAgICAgIHR3ZWFrPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBleGFtcGxlIHtcbiAgICAgKiAgIFwiY2hhaW5faWRcIjogMTMzNyxcbiAgICAgKiAgIFwidHlwZWRfZGF0YVwiOiB7XG4gICAgICogICAgIFwiZG9tYWluXCI6IHtcbiAgICAgKiAgICAgICBcImNoYWluSWRcIjogMTMzNyxcbiAgICAgKiAgICAgICBcIm5hbWVcIjogXCJFdGhlciBNYWlsXCIsXG4gICAgICogICAgICAgXCJzYWx0XCI6IFwiMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwXCIsXG4gICAgICogICAgICAgXCJ2ZXJpZnlpbmdDb250cmFjdFwiOiBcIjB4Q2NDQ2NjY2NDQ0NDY0NDQ0NDQ2NDY0NjY0NjQ0NDY0NjY2NjY2NjQ1wiLFxuICAgICAqICAgICAgIFwidmVyc2lvblwiOiBcIjFcIlxuICAgICAqICAgICB9LFxuICAgICAqICAgICBcIm1lc3NhZ2VcIjoge1xuICAgICAqICAgICAgIFwiY29udGVudHNcIjogXCJIZWxsbywgQm9iIVwiLFxuICAgICAqICAgICAgIFwiZnJvbVwiOiB7XG4gICAgICogICAgICAgICBcIm5hbWVcIjogXCJDb3dcIixcbiAgICAgKiAgICAgICAgIFwid2FsbGV0c1wiOiBbXG4gICAgICogICAgICAgICAgIFwiMHhDRDJhM2Q5RjkzOEUxM0NEOTQ3RWMwNUFiQzdGRTczNERmOEREODI2XCIsXG4gICAgICogICAgICAgICAgIFwiMHhEZWFEYmVlZmRFQWRiZWVmZEVhZGJFRUZkZWFkYmVFRmRFYURiZWVGXCJcbiAgICAgKiAgICAgICAgIF1cbiAgICAgKiAgICAgICB9LFxuICAgICAqICAgICAgIFwidG9cIjoge1xuICAgICAqICAgICAgICAgXCJuYW1lXCI6IFwiQm9iXCIsXG4gICAgICogICAgICAgICBcIndhbGxldHNcIjogW1xuICAgICAqICAgICAgICAgICBcIjB4YkJiQkJCQmJiQkJCYmJiQmJiQmJiYmJCQmJCYmJiYkJiQmJiQkJiQlwiLFxuICAgICAqICAgICAgICAgICBcIjB4QjBCZGFCZWE1N0IwQkRBQmVBNTdiMGJkQUJFQTU3YjBCRGFiRWE1N1wiLFxuICAgICAqICAgICAgICAgICBcIjB4QjBCMGIwYjBiMGIwQjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFwiXG4gICAgICogICAgICAgICBdXG4gICAgICogICAgICAgfVxuICAgICAqICAgICB9LFxuICAgICAqICAgICBcInByaW1hcnlUeXBlXCI6IFwiTWFpbFwiLFxuICAgICAqICAgICBcInR5cGVzXCI6IHtcbiAgICAgKiAgICAgICBcIkVJUDcxMkRvbWFpblwiOiBbXG4gICAgICogICAgICAgICB7XG4gICAgICogICAgICAgICAgIFwibmFtZVwiOiBcIm5hbWVcIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgKiAgICAgICAgIH0sXG4gICAgICogICAgICAgICB7XG4gICAgICogICAgICAgICAgIFwibmFtZVwiOiBcInZlcnNpb25cIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgKiAgICAgICAgIH0sXG4gICAgICogICAgICAgICB7XG4gICAgICogICAgICAgICAgIFwibmFtZVwiOiBcImNoYWluSWRcIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwidWludDI1NlwiXG4gICAgICogICAgICAgICB9LFxuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJ2ZXJpZnlpbmdDb250cmFjdFwiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJhZGRyZXNzXCJcbiAgICAgKiAgICAgICAgIH0sXG4gICAgICogICAgICAgICB7XG4gICAgICogICAgICAgICAgIFwibmFtZVwiOiBcInNhbHRcIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwiYnl0ZXMzMlwiXG4gICAgICogICAgICAgICB9XG4gICAgICogICAgICAgXSxcbiAgICAgKiAgICAgICBcIkdyb3VwXCI6IFtcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwibmFtZVwiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAqICAgICAgICAgfSxcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwibWVtYmVyc1wiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJQZXJzb25bXVwiXG4gICAgICogICAgICAgICB9XG4gICAgICogICAgICAgXSxcbiAgICAgKiAgICAgICBcIk1haWxcIjogW1xuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJmcm9tXCIsXG4gICAgICogICAgICAgICAgIFwidHlwZVwiOiBcIlBlcnNvblwiXG4gICAgICogICAgICAgICB9LFxuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJ0b1wiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJQZXJzb25cIlxuICAgICAqICAgICAgICAgfSxcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwiY29udGVudHNcIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgKiAgICAgICAgIH1cbiAgICAgKiAgICAgICBdLFxuICAgICAqICAgICAgIFwiUGVyc29uXCI6IFtcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwibmFtZVwiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAqICAgICAgICAgfSxcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwid2FsbGV0c1wiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJhZGRyZXNzW11cIlxuICAgICAqICAgICAgICAgfVxuICAgICAqICAgICAgIF1cbiAgICAgKiAgICAgfVxuICAgICAqICAgfVxuICAgICAqIH1cbiAgICAgKi9cbiAgICBFaXA3MTJTaWduUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGJlIGluY2x1ZGVkIGluIHRoZSByZXNwb25zZSwgZXhwbGFpbmluZ1xuICAgICAgICogdGhlIG91dGNvbWUgKGkuZS4sIHBlcm1pdHRlZCB2cy4gZGVuaWVkIHZzLiBNRkEgcmVxdWlyZWQpIG9mIHRoZSBzaWduIHJlcXVlc3QuXG4gICAgICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZXhwbGFpbj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBNRkEgaXMgcmVxdWlyZWQsIGZhaWwgdGhlIHJlcXVlc3QgaW5zdGVhZCBvZiByZXR1cm5pbmcgMjAyIGFuZCBjcmVhdGluZ1xuICAgICAgICogcGVuZGluZyBNRkEgcmVxdWVzdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGZhaWxfb25fbWZhPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG1ldGFkYXRhLiBQYXNzaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYXMgbWV0YWRhdGEgY2FuIGJlIHVzZWQgdG8gbWFrZSByZXZpZXdpbmdcbiAgICAgICAqIG9mIHBlbmRpbmcgTUZBIHJlcXVlc3RzIGFuZC9vciBoaXN0b3JpY2FsIGtleSB0cmFuc2FjdGlvbnMgbW9yZSB0cmFuc3BhcmVudC4gSXQgY2FuIGFsc28gYmUgdXNlZCBlLmcuLCB0byBjYXJyeSBhZGRpdGlvbmFsIGRhdGEgdG8gV2ViSG9vayBwb2xpY2llcy5cbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgY2hhaW4taWQgdG8gd2hpY2ggdGhpcyB0eXBlZCBkYXRhIHdpbGwgYmUgc2VudFxuICAgICAgICovXG4gICAgICBjaGFpbl9pZDogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQW4gb3B0aW9uYWwgdHdlYWsgdmFsdWUgdGhhdCB3aWxsIGJlIGFwcGxpZWQgdG8gdGhlIHNlY3JldCBrZXkgYmVmb3JlIHNpZ25pbmcuXG4gICAgICAgKiBUaGlzIGZpZWxkIG11c3QgY29udGFpbiBhIGJhc2UtNjQgc3RyaW5nIGVuY29kaW5nIGEgdmVjdG9yIG9mIGV4YWN0bHkgMzIgYnl0ZXMuXG4gICAgICAgKiBTZWUgdGhlIEN1YmVTaWduZXIgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgdHdlYWtpbmcgcHJvY2VkdXJlLlxuICAgICAgICogQGV4YW1wbGUgRjQxSEF5MnE1R244bGFGMkN1TXNaYlJBUVRtRCs0T2IzVlVNWjdUQkdLND1cbiAgICAgICAqL1xuICAgICAgdHdlYWs/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgdHlwZWRfZGF0YTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUeXBlZERhdGFcIl07XG4gICAgfTtcbiAgICBFbWFpbDogc3RyaW5nO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gYW5zd2VyIHRvIHRoZSBjaGFsbGVuZ2UgcmV0dXJuZWQgYnkgdGhlIGBtZmFfZW1haWxfaW5pdGAgZW5kcG9pbnQuICovXG4gICAgRW1haWxPdHBBbnN3ZXI6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEZ1bGwgSldUIHRva2VuLCBjb25zdHJ1Y3RlZCBieSBjb25jYXRlbmF0aW5nIHRoZSBcInBhcnRpYWwgdG9rZW5cIlxuICAgICAgICogKGkuZS4sIGB7aGVhZGVyfS57cGF5bG9hZH0uYCkgcmV0dXJuZWQgYnkgdGhlIGBtYWlsX2VtYWlsX2luaXRgIGVuZHBvaW50XG4gICAgICAgKiBhbmQgdGhlIHNpZ25hdHVyZSBzZW50IHRvIHRoZSB1c2VyJ3MgZW1haWwuXG4gICAgICAgKi9cbiAgICAgIHRva2VuOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXF1ZXN0IHVzZXJzIHNlbmQgdG8gaW5pdGlhdGUgZW1haWwgT1RQICovXG4gICAgRW1haWxPdHBSZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBlbWFpbCB3aGljaCB3aWxsIHJlY2VpdmUgdGhlIE9UUCAqL1xuICAgICAgZW1haWw6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSFRUUCByZXNwb25zZSB0byBhbiBlbWFpbCBPVFAgcmVxdWVzdC5cbiAgICAgKlxuICAgICAqIFRoaXMgcmVzcG9uc2UgY29udGFpbnMgYW4gT0lEQyB0b2tlbiB3aXRob3V0IGEgc2lnbmF0dXJlLlxuICAgICAqIFRoZSBzaWduYXR1cmUgaXMgc2VudCB0byB0aGUgZW5kLXVzZXIgaW4gYW4gZW1haWwuXG4gICAgICogVGhlIHRva2VuIGNhbiBiZSByZWNvbnN0cnVjdGVkIGJ5IGNvbmNhdGVuYXRpbmcgdGhlIGBwYXJ0aWFsX3Rva2VuYCB3aXRoIHRoZSBzaWduYXR1cmUuXG4gICAgICovXG4gICAgRW1haWxPdHBSZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIE9JREMgdG9rZW4gd2l0aG91dCB0aGUgc2lnbmF0dXJlLlxuICAgICAgICogKFRoZSBzaWduYXR1cmUsIHdoaWNoIGlzIGFjdHVhbGx5IGEgTUFDLCBpcyBzZW50IHRvIHRoZSBlbmQtdXNlciBpbiBhbiBlbWFpbClcbiAgICAgICAqL1xuICAgICAgcGFydGlhbF90b2tlbjogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBEZXNjcmliZXMgZW1haWwgcHJlZmVyZW5jZXMgYXQgYW4gT3JnIGxldmVsIC0gd2hhdCBlbWFpbHMgdG8gc2VuZCBhbmQgb3B0aW9ucyBhc3NvY2lhdGVkICovXG4gICAgRW1haWxQcmVmZXJlbmNlczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPcmdBbGVydHNQcmVmc1wiXSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSWYgdHJ1ZSwgc2VuZCBub3RpZmljYXRpb25zIG9uIGV2ZXJ5IGxvZ2luICovXG4gICAgICBsb2dpbl9ub3RpZmljYXRpb25zPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiB0cnVlLCBzZW5kIG5vdGlmaWNhdGlvbnMgd2hlbiBsb2dnaW5nIGluIGZyb20gYSBuZXcgZGV2aWNlLlxuICAgICAgICogbmV3X2RldmljZSB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgbG9naW5fbm90aWZpY2F0aW9ucy4gRS5nLiwgZW1haWwgZm9yXG4gICAgICAgKiBuZXdfZGV2aWNlIGlzIHNlbnQgaW5zdGVhZCBvZiBhIGdlbmVyYWwgbG9naW4gbm90aWZpY2F0aW9uIGVtYWlsIHdoZW4gYVxuICAgICAgICogbmV3IGRldmljZSBpcyBkZXRlY3RlZFxuICAgICAgICovXG4gICAgICBuZXdfZGV2aWNlPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIElmIHRydWUsIHNlbmQgZW1haWwgbm90aWZpY2F0aW9ucyBmb3IgbWZhIGFwcHJvdmFscyAqL1xuICAgICAgcGVuZGluZ19hcHByb3ZhbHM/OiBib29sZWFuIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVxdWVzdCB0byByZXNldCB2ZXJpZmllZCBlbWFpbC4gKi9cbiAgICBFbWFpbFJlc2V0UmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGlzIGVtYWlsIHNob3VsZCBiZSB1c2FibGUgZm9yIGVtYWlsIE9UUCBsb2dpbi4gVGhlIHJlcXVlc3RcbiAgICAgICAqIHdpbGwgZmFpbCBpZiB0aGlzIGZpZWxkIGlzIHNldCB0byBgdHJ1ZWAsIGFuZCB0aGUgb3JnIGRvZXMgbm90IGhhdmVcbiAgICAgICAqIGVtYWlsIE9UUCBlbmFibGVkLiBEZWZhdWx0OiBgZmFsc2VgXG4gICAgICAgKi9cbiAgICAgIGFsbG93X290cF9sb2dpbj86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgZW1haWwgdG8gcmVnaXN0ZXIgKi9cbiAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlZmF1bHQgbnVsbCAqL1xuICAgIEVtcHR5OiB1bmtub3duO1xuICAgIEVtcHR5SW1wbDoge1xuICAgICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVxdWVzdCB0byBjcmVhdGUgYSBzZXQgb2YgRU9UUyBub25jZXMgZm9yIGEgc3BlY2lmaWVkIGNoYWluLWlkLCBzdGFydGluZ1xuICAgICAqIGF0IGEgc3BlY2lmaWVkIGJsb2NrIGhlaWdodC5cbiAgICAgKi9cbiAgICBFb3RzQ3JlYXRlTm9uY2VSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBleHBsYWluaW5nXG4gICAgICAgKiB0aGUgb3V0Y29tZSAoaS5lLiwgcGVybWl0dGVkIHZzLiBkZW5pZWQgdnMuIE1GQSByZXF1aXJlZCkgb2YgdGhlIHNpZ24gcmVxdWVzdC5cbiAgICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBleHBsYWluPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIE1GQSBpcyByZXF1aXJlZCwgZmFpbCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIHJldHVybmluZyAyMDIgYW5kIGNyZWF0aW5nXG4gICAgICAgKiBwZW5kaW5nIE1GQSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZmFpbF9vbl9tZmE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuIFBhc3NpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBtYWtlIHJldmlld2luZ1xuICAgICAgICogb2YgcGVuZGluZyBNRkEgcmVxdWVzdHMgYW5kL29yIGhpc3RvcmljYWwga2V5IHRyYW5zYWN0aW9ucyBtb3JlIHRyYW5zcGFyZW50LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGUuZy4sIHRvIGNhcnJ5IGFkZGl0aW9uYWwgZGF0YSB0byBXZWJIb29rIHBvbGljaWVzLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBjaGFpbiBpZCBmb3Igd2hpY2ggdGhlIG5vbmNlcyB3aWxsIGJlIHVzZWQsIGFzIGEgaGV4IHN0cmluZ1xuICAgICAgICogQGV4YW1wbGUgMHgxMTIyMzM0NFxuICAgICAgICovXG4gICAgICBjaGFpbl9pZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG51bWJlciBvZiBub25jZXMgdG8gZ2VuZXJhdGVcbiAgICAgICAqIEBleGFtcGxlIDE2XG4gICAgICAgKi9cbiAgICAgIG51bTogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0aW5nIGJsb2NrIGhlaWdodCBvZiB0aGUgZ2VuZXJhdGVkIG5vbmNlcyAocXVvdGVkIGRlY2ltYWwgdTY0KVxuICAgICAgICogQGV4YW1wbGUgMzEzMzdcbiAgICAgICAqL1xuICAgICAgc3RhcnRfaGVpZ2h0OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIGdlbmVyYXRlZCB3aGVuIGNyZWF0aW5nIEVPVFMgbm9uY2VzICovXG4gICAgRW90c0NyZWF0ZU5vbmNlUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWN5IGV2YWx1YXRpb24gdHJlZS4gKi9cbiAgICAgIHBvbGljeV9ldmFsX3RyZWU/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZ2VuZXJhdGVkIG5vbmNlcyBhcyBhbiBhcnJheSBvZiAweC1wcmVmaXhlZCBoZXggc3RyaW5nc1xuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICBcIjB4YjM5M2JmMzllNzFhMTZkNzg0ODUzZDU4MjU1YTI5NjIyMmE5OWZkM2M4N2FhN2NhMjA2YzUyMzBjMTg4ZjFjN1wiLFxuICAgICAgICogICBcIjB4ZTAxOTM2NTg0YjRmMGMwZTk3ZjBkMzAxOGM0ZjlkYjJiZjdkZTQxMzk1YzY0MDNhNDhmZDBkZmYwZWY3YjQwZFwiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIG5vbmNlczogc3RyaW5nW107XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlcXVlc3QgZm9yIGFuIEVPVFMgc2lnbmF0dXJlIG9uIGEgc3BlY2lmaWVkIG1lc3NhZ2UsIGNoYWluLWlkLCBibG9jay1oZWlnaHQgdHJpcGxlICovXG4gICAgRW90c1NpZ25SZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBleHBsYWluaW5nXG4gICAgICAgKiB0aGUgb3V0Y29tZSAoaS5lLiwgcGVybWl0dGVkIHZzLiBkZW5pZWQgdnMuIE1GQSByZXF1aXJlZCkgb2YgdGhlIHNpZ24gcmVxdWVzdC5cbiAgICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBleHBsYWluPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIE1GQSBpcyByZXF1aXJlZCwgZmFpbCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIHJldHVybmluZyAyMDIgYW5kIGNyZWF0aW5nXG4gICAgICAgKiBwZW5kaW5nIE1GQSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZmFpbF9vbl9tZmE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuIFBhc3NpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBtYWtlIHJldmlld2luZ1xuICAgICAgICogb2YgcGVuZGluZyBNRkEgcmVxdWVzdHMgYW5kL29yIGhpc3RvcmljYWwga2V5IHRyYW5zYWN0aW9ucyBtb3JlIHRyYW5zcGFyZW50LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGUuZy4sIHRvIGNhcnJ5IGFkZGl0aW9uYWwgZGF0YSB0byBXZWJIb29rIHBvbGljaWVzLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBibG9jayBoZWlnaHQgZm9yIHRoZSBzaWduYXR1cmUgKHF1b3RlZCBkZWNpbWFsIHU2NClcbiAgICAgICAqIEBleGFtcGxlIDEyMzQ1NlxuICAgICAgICovXG4gICAgICBibG9ja19oZWlnaHQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBjaGFpbiBpZCBmb3IgdGhlIHNpZ25hdHVyZVxuICAgICAgICogQGV4YW1wbGUgMHgxMTIyMzM0NFxuICAgICAgICovXG4gICAgICBjaGFpbl9pZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG1lc3NhZ2UgdG8gc2lnblxuICAgICAgICogQGV4YW1wbGUgMHg1YTI2ODhmYWVhMDlkNDJiOTI3MGZkYjhkZTZmZmY2ZjE5MjI0M2E5MTBiYTY2MzI5MDczZTEyZTBkMDA0NmEyXG4gICAgICAgKi9cbiAgICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBFcG9jaCBpcyBhIHF1b3RlZCBgdWludDY0YC5cbiAgICAgKiBAZXhhbXBsZSAyNTZcbiAgICAgKi9cbiAgICBFcG9jaDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgKiBAZGVzY3JpcHRpb24gRGF0ZVRpbWUgbWVhc3VyZWQgaW4gc2Vjb25kcyBzaW5jZSB1bml4IGVwb2NoLlxuICAgICAqIEEgd3JhcHBlciB0eXBlIGZvciBzZXJpYWxpemF0aW9uIHRoYXQgZW5jb2RlcyBhIFtgU3lzdGVtVGltZWBdIGFzIGEgW2B1NjRgXVxuICAgICAqIHJlcHJlc2VudGluZyB0aGUgbnVtYmVyIG9mIHNlY29uZHMgc2luY2UgW2BTeXN0ZW1UaW1lOjpVTklYX0VQT0NIYF0uXG4gICAgICovXG4gICAgRXBvY2hEYXRlVGltZTogbnVtYmVyO1xuICAgIEVycm9yT2JqOiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDb2RlXG4gICAgICAgKi9cbiAgICAgIGNvZGU6IG51bWJlcjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgZGF0YSAqL1xuICAgICAgZGF0YT86IHVua25vd247XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE1lc3NhZ2UgKi9cbiAgICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHN0cnVjdHVyZSBvZiBFcnJvclJlc3BvbnNlIG11c3QgbWF0Y2ggdGhlIHJlc3BvbnNlIHRlbXBsYXRlIHRoYXQgQVdTIHVzZXMgKi9cbiAgICBFcnJvclJlc3BvbnNlOiB7XG4gICAgICBhY2NlcHRlZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRWYWx1ZVwiXSB8IG51bGw7XG4gICAgICBlcnJvcl9jb2RlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNpZ25lckVycm9yQ29kZVwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRXJyb3IgbWVzc2FnZSAqL1xuICAgICAgbWVzc2FnZTogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY3kgZXZhbHVhdGlvbiB0cmVlIChpbmNsdWRlZCBpbiBzaWduZXIgcmVzcG9uc2VzLCB3aGVuIHJlcXVlc3RlZCkgKi9cbiAgICAgIHBvbGljeV9ldmFsX3RyZWU/OiB1bmtub3duO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCByZXF1ZXN0IGlkZW50aWZpZXIgKi9cbiAgICAgIHJlcXVlc3RfaWQ/OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVzcGxvcmEgcmVxdWVzdCAqL1xuICAgIEVzcGxvcmFSZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEhUVFAgYm9keSAqL1xuICAgICAgYm9keT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEhUVFAgbWV0aG9kICovXG4gICAgICBtZXRob2Q6IHN0cmluZztcbiAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgbmV0d29yazogXCJtYWlubmV0XCIgfCBcInRlc3RuZXRcIiB8IFwic2lnbmV0XCI7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEhUVFAgcmVsYXRpdmUgcGF0aCAod2hpY2ggY29tZXMgYWZ0ZXIgJy97bmV0d29ya30vYXBpLycpICovXG4gICAgICBwYXRoOiBzdHJpbmc7XG4gICAgfTtcbiAgICBFc3Bsb3JhUmVzcG9uc2U6IHVua25vd247XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEVWTSB0cmFuc2FjdGlvbiBzaWduaW5nIHJlcXVlc3QuXG4gICAgICogQGV4YW1wbGUge1xuICAgICAqICAgXCJjaGFpbl9pZFwiOiA0MzExMyxcbiAgICAgKiAgIFwidHhcIjoge1xuICAgICAqICAgICBcImNoYWluX2lkXCI6IFwiMHhhODY5XCIsXG4gICAgICogICAgIFwiZ2FzXCI6IFwiMHg2MWE4MFwiLFxuICAgICAqICAgICBcIm1heEZlZVBlckdhc1wiOiBcIjB4OTUwMkY5MDBcIixcbiAgICAgKiAgICAgXCJtYXhQcmlvcml0eUZlZVBlckdhc1wiOiBcIjB4NTBcIixcbiAgICAgKiAgICAgXCJub25jZVwiOiBcIjB4YlwiLFxuICAgICAqICAgICBcInRvXCI6IFwiMHhmMDBiYTEyZjAwMDAwMDAwYjQxMjEyMDAwMDBmMDBjMGZmZWVmMDBkXCIsXG4gICAgICogICAgIFwidHlwZVwiOiBcIjB4MlwiLFxuICAgICAqICAgICBcInZhbHVlXCI6IFwiMHgxMDAwMDAwMDAwMFwiXG4gICAgICogICB9XG4gICAgICogfVxuICAgICAqL1xuICAgIEV0aDFTaWduUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGJlIGluY2x1ZGVkIGluIHRoZSByZXNwb25zZSwgZXhwbGFpbmluZ1xuICAgICAgICogdGhlIG91dGNvbWUgKGkuZS4sIHBlcm1pdHRlZCB2cy4gZGVuaWVkIHZzLiBNRkEgcmVxdWlyZWQpIG9mIHRoZSBzaWduIHJlcXVlc3QuXG4gICAgICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZXhwbGFpbj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBNRkEgaXMgcmVxdWlyZWQsIGZhaWwgdGhlIHJlcXVlc3QgaW5zdGVhZCBvZiByZXR1cm5pbmcgMjAyIGFuZCBjcmVhdGluZ1xuICAgICAgICogcGVuZGluZyBNRkEgcmVxdWVzdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGZhaWxfb25fbWZhPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG1ldGFkYXRhLiBQYXNzaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYXMgbWV0YWRhdGEgY2FuIGJlIHVzZWQgdG8gbWFrZSByZXZpZXdpbmdcbiAgICAgICAqIG9mIHBlbmRpbmcgTUZBIHJlcXVlc3RzIGFuZC9vciBoaXN0b3JpY2FsIGtleSB0cmFuc2FjdGlvbnMgbW9yZSB0cmFuc3BhcmVudC4gSXQgY2FuIGFsc28gYmUgdXNlZCBlLmcuLCB0byBjYXJyeSBhZGRpdGlvbmFsIGRhdGEgdG8gV2ViSG9vayBwb2xpY2llcy5cbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgY2hhaW4gaWQgdG8gc2V0IGluIHRoZSBnaXZlbiB0cmFuc2FjdGlvbi5cbiAgICAgICAqL1xuICAgICAgY2hhaW5faWQ6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFuIG9wdGlvbmFsIHR3ZWFrIHZhbHVlIHRoYXQgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBzZWNyZXQga2V5IGJlZm9yZSBzaWduaW5nLlxuICAgICAgICogVGhpcyBmaWVsZCBtdXN0IGNvbnRhaW4gYSBiYXNlLTY0IHN0cmluZyBlbmNvZGluZyBhIHZlY3RvciBvZiBleGFjdGx5IDMyIGJ5dGVzLlxuICAgICAgICogU2VlIHRoZSBDdWJlU2lnbmVyIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIHR3ZWFraW5nIHByb2NlZHVyZS5cbiAgICAgICAqIEBleGFtcGxlIEY0MUhBeTJxNUduOGxhRjJDdU1zWmJSQVFUbUQrNE9iM1ZVTVo3VEJHSzQ9XG4gICAgICAgKi9cbiAgICAgIHR3ZWFrPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIHR4OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRyYW5zYWN0aW9uXCJdO1xuICAgIH07XG4gICAgRXRoMVNpZ25SZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY3kgZXZhbHVhdGlvbiB0cmVlLiAqL1xuICAgICAgcG9saWN5X2V2YWxfdHJlZT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIFJMUCBlbmNvZGluZyBvZiB0aGUgdHJhbnNhY3Rpb24gYW5kIGl0cyBzaWduYXR1cmVcbiAgICAgICAqIEBleGFtcGxlIDB4MjI4OTUxMTgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMjAxZDU4NjU2YjBlMjJhYWE2OGZkYzY5MmRiNDE5NzkwOThjMzg4NmVkMzMwMTVkNzQ2N2RlOTIxMTYwOWNkYWMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzMDhiMGMyOTAwMzI0ZDNmZjlhZGZiYTdmZGZlNWFmM2Y5YjJjZGJlZWY3YjI4MDQzN2JiZjFiMWM1OWEwOTNkNjE1YWZlM2U1ZGZlZDk2MjJiNTQwY2RkOWI0OWIzYzVhZDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQ5MDExYWRiY2MzYmM5YzAzMDdiYjA3ZjM3ZGRhMWExYTljNjlkMmUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYwOTAzZGI4NTI1Njc0YjhlNzkwNGY5YjdkN2Q5ZWM1NWEwYTQyZDMzY2Y1OGJlMjU0NjliMGMyMWJiYjZkMDYxNzJiYzViYjVmZDFhZWQ4ZTRmMzU5MzY5Njg5NTgxMTZiMDYxOTU1M2MyY2IxYzUyZTczMjMwNzRjNmY4ZWIzZDVhNzA3NGZjNjU4MDE0OGRmOTA3ODM3ZmEzYjE2NGFkN2ZiYzIyODhkYWQxZThhNWIwMjEwOTViNTdjOGEzNmQ0XG4gICAgICAgKi9cbiAgICAgIHJscF9zaWduZWRfdHg6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBleGFtcGxlIHtcbiAgICAgKiAgIFwiZXRoMl9zaWduX3JlcXVlc3RcIjoge1xuICAgICAqICAgICBcImFnZ3JlZ2F0aW9uX3Nsb3RcIjoge1xuICAgICAqICAgICAgIFwic2xvdFwiOiBcIjM2XCJcbiAgICAgKiAgICAgfSxcbiAgICAgKiAgICAgXCJmb3JrX2luZm9cIjoge1xuICAgICAqICAgICAgIFwiZm9ya1wiOiB7XG4gICAgICogICAgICAgICBcImN1cnJlbnRfdmVyc2lvblwiOiBcIjB4NDI0MjQyNDJcIixcbiAgICAgKiAgICAgICAgIFwiZXBvY2hcIjogXCIwXCIsXG4gICAgICogICAgICAgICBcInByZXZpb3VzX3ZlcnNpb25cIjogXCIweDQyNDI0MjQyXCJcbiAgICAgKiAgICAgICB9LFxuICAgICAqICAgICAgIFwiZ2VuZXNpc192YWxpZGF0b3JzX3Jvb3RcIjogXCIweDlkMTNkNjEyMTJjMDY3ZTAyY2U4ZTYwOGE3MDA3ZTJjM2IwMjU3MWU5ZTZmMjdmZjQ1ZGZhOTFiZjI3Yzg3MGJcIlxuICAgICAqICAgICB9LFxuICAgICAqICAgICBcInNpZ25pbmdSb290XCI6IFwiMHg5YzU3ZTc3YzQ5NjU3Mjc1NDJiOTMzN2RmNjc1NmY5NDg0NjRiY2EzODU5YmVhNmVkM2MwZWM2NjAwZDg5ODJhXCIsXG4gICAgICogICAgIFwidHlwZVwiOiBcIkFHR1JFR0FUSU9OX1NMT1RcIlxuICAgICAqICAgfSxcbiAgICAgKiAgIFwibmV0d29ya1wiOiBcIm1haW5uZXRcIlxuICAgICAqIH1cbiAgICAgKi9cbiAgICBFdGgyU2lnblJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFJlcXVlc3QgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcmVzcG9uc2UsIGV4cGxhaW5pbmdcbiAgICAgICAqIHRoZSBvdXRjb21lIChpLmUuLCBwZXJtaXR0ZWQgdnMuIGRlbmllZCB2cy4gTUZBIHJlcXVpcmVkKSBvZiB0aGUgc2lnbiByZXF1ZXN0LlxuICAgICAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGV4cGxhaW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgTUZBIGlzIHJlcXVpcmVkLCBmYWlsIHRoZSByZXF1ZXN0IGluc3RlYWQgb2YgcmV0dXJuaW5nIDIwMiBhbmQgY3JlYXRpbmdcbiAgICAgICAqIHBlbmRpbmcgTUZBIHJlcXVlc3QuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBmYWlsX29uX21mYT86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBtZXRhZGF0YS4gUGFzc2luZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFzIG1ldGFkYXRhIGNhbiBiZSB1c2VkIHRvIG1ha2UgcmV2aWV3aW5nXG4gICAgICAgKiBvZiBwZW5kaW5nIE1GQSByZXF1ZXN0cyBhbmQvb3IgaGlzdG9yaWNhbCBrZXkgdHJhbnNhY3Rpb25zIG1vcmUgdHJhbnNwYXJlbnQuIEl0IGNhbiBhbHNvIGJlIHVzZWQgZS5nLiwgdG8gY2FycnkgYWRkaXRpb25hbCBkYXRhIHRvIFdlYkhvb2sgcG9saWNpZXMuXG4gICAgICAgKi9cbiAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gU3Vic2V0IG9mIHRoZSBXZWIzU2lnbmVyIEV0aDIgQkxTIHNpZ25pbmcgcmVxdWVzdCB3aG9zZSBzY2hlbWEgaXMgZGVmaW5lZFxuICAgICAgICogW2hlcmVdKGh0dHBzOi8vY29uc2Vuc3lzLmdpdGh1Yi5pby93ZWIzc2lnbmVyL3dlYjNzaWduZXItZXRoMi5odG1sI3RhZy9TaWduaW5nL29wZXJhdGlvbi9FVEgyX1NJR04pLlxuICAgICAgICogV2UgaGFuZGxlIGRlcG9zaXRzIGFuZCB2b2x1bnRhcnkgZXhpdHMgc2VwYXJhdGVseS5cbiAgICAgICAqL1xuICAgICAgZXRoMl9zaWduX3JlcXVlc3Q6IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICAgIG5ldHdvcms6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTmV0d29ya1wiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXByZXNlbnRhdGlvbiBvZiBhbiBldmVudC4gVGhpcyB0eXBlIGlzIHVzZWQgdG8gc2VyaWFsaXplIGV2ZW50cyB0byBDbG91ZFdhdGNoIExvZ3MgYW5kIHRvXG4gICAgICogZGVzZXJpYWxpemUgdGhlbSB3aGVuIGFuYWx5emluZyB0aGUgbG9ncy5cbiAgICAgKi9cbiAgICBFdmVudDoge1xuICAgICAgZXZlbnQ6IFwiRXZlbnRcIjtcbiAgICB9ICYgT21pdDxjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkV2ZW50RGF0YVwiXSwgXCJldmVudFwiPiAmIHtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBVbmlxdWUgaWRlbnRpZmllciBvZiBhbiBldmVudC4gKi9cbiAgICAgICAgZXZlbnRfaWQ/OiBzdHJpbmc7XG4gICAgICAgIG9yZzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXTtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgb3JpZ2luIGhlYWRlciBvZiB0aGUgcmVxdWVzdCB0aGF0IHRyaWdnZXJlZCB0aGlzIGV2ZW50ICovXG4gICAgICAgIG9yaWdpbj86IHN0cmluZztcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIHJlcXVlc3QgdGhhdCB0cmlnZ2VyZWQgdGhpcyBldmVudCAqL1xuICAgICAgICByZXF1ZXN0X2lkPzogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHRpbWVzdGFtcCBvZiB0aGUgZXZlbnQgKGluIG1pbGxpc2Vjb25kcyBzaW5jZSB0aGUgVW5peCBFcG9jaClcbiAgICAgICAgICovXG4gICAgICAgIHV0Y190aW1lc3RhbXA6IG51bWJlcjtcbiAgICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIERhdGEgYXNzb2NpYXRlZCB3aXRoIGFuIGV2ZW50LiBEZXBlbmRpbmcgb24gdGhlIGV2ZW50IHR5cGUgKGkuZS4sIGJpbGxpbmcgb3Igb3JnIGV2ZW50KSxcbiAgICAgKiBkaWZmZXJlbnQgZmllbGRzIGFyZSB1c2VkLlxuICAgICAqL1xuICAgIEV2ZW50RGF0YTpcbiAgICAgIHwgKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmlsbGluZ0FyZ3NcIl0gJiB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgZXZlbnQ6IFwiY3ViaXN0OjpiaWxsaW5nXCI7XG4gICAgICAgIH0pXG4gICAgICB8IChjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9yZ0V2ZW50QXJnc1wiXSAmIHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBldmVudDogXCJjdWJpc3Q6Om9yZ19ldmVudFwiO1xuICAgICAgICB9KTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEFuIEVWTSBhZGRyZXNzIGFuZCBpdHMgY2hhaW4uICovXG4gICAgRXZtQWRkcmVzc0luZm86IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBFVk0gYWRkcmVzcy5cbiAgICAgICAqIEBleGFtcGxlIDB4NTJmNmMwYjMwNmU2Njg5M2MwNDE0YWJiNzA5NTFjNGRhYzE1YTk2OVxuICAgICAgICovXG4gICAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgRVZNIGNoYWluIHRoaXMgYWRkcmVzcyBiZWxvbmdzIHRvICoqYXMgYSBoZXggc3RyaW5nKiouIFRoZSBzdHJpbmdcbiAgICAgICAqIG11c3Qgc3RhcnQgd2l0aCBcIjB4XCIgYW5kIGhhdmUgYW4gZXZlbiBsZW5ndGguIElmIHRoZSBjaGFpbiBpcyBvbWl0dGVkLFxuICAgICAgICogdGhlIGFkZHJlc3MgaXMgYWxsb3dlZCB0byBiZSB1c2VkIG9uIGFueSBFVk0gY2hhaW4sIGFuZCBpcyByZWZlcnJlZCB0b1xuICAgICAgICogYXMgYSBnbG9iYWwgRVZNIGFkZHJlc3MuXG4gICAgICAgKiBAZXhhbXBsZSAweDAxXG4gICAgICAgKi9cbiAgICAgIGNoYWluPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gYWJvdXQgYSBjdXJyZW5jeSB1c2VkIG9uIGFuIEVWTSBjaGFpbi4gKi9cbiAgICBFdm1DdXJyZW5jeUluZm86IHtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdGhpcyBjdXJyZW5jeSB1c2VzLlxuICAgICAgICogQGV4YW1wbGUgMThcbiAgICAgICAqL1xuICAgICAgZGVjaW1hbHM6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBmdWxsIG5hbWUgb2YgdGhlIGN1cnJlbmN5LlxuICAgICAgICogQGV4YW1wbGUgRXRoZXJcbiAgICAgICAqL1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN5bWJvbCBmb3IgdGhlIGN1cnJlbmN5LCB0eXBpY2FsbHkgYSB0aHJlZSBsZXR0ZXIgc3RyaW5nLlxuICAgICAgICogQGV4YW1wbGUgRVRIXG4gICAgICAgKi9cbiAgICAgIHN5bWJvbDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIGN1c3RvbSBFVk0gY2hhaW4uICovXG4gICAgRXZtQ3VzdG9tQ2hhaW46IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBjaGFpbiBpZC4gRW5mb3JjZWQgdG8gYmUgdW5pcXVlIGFtb25nIGFsbCBjdXN0b20gRVZNIGNoYWlucyBpbiB0aGUgb3JnYW5pemF0aW9uLiBJdCBtdXN0IGJlIGEgaGV4IHN0cmluZyAoc3RhcnRpbmcgd2l0aCBcIjB4XCIpIHdpdGggZXZlbiBsZW5ndGguXG4gICAgICAgKiBAZXhhbXBsZSAweDAxXG4gICAgICAgKi9cbiAgICAgIGNoYWluX2lkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmFtZSBvZiB0aGUgY2hhaW4uXG4gICAgICAgKiBAZXhhbXBsZSBFdGhlcmV1bSBNYWlubmV0XG4gICAgICAgKi9cbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgIG5hdGl2ZV9jdXJyZW5jeTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFdm1DdXJyZW5jeUluZm9cIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgVVJMIG9mIHRoZSBSUEMgcHJvdmlkZXIgZm9yIHRoaXMgY2hhaW4uXG4gICAgICAgKiBAZXhhbXBsZSBodHRwczovL2V0aGVyZXVtLXJwYy5wdWJsaWNub2RlLmNvbVxuICAgICAgICovXG4gICAgICBycGNfdXJsOiBzdHJpbmc7XG4gICAgfTtcbiAgICBFdm1UeENtcDoge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVG8gcHJldmVudCByZXBsYXkgYXR0YWNrcywgYW55IGdpdmVuIE1GQSByZWNlaXB0IGlzIG5vcm1hbGx5IGFsbG93ZWQgdG8gYmUgdXNlZCBvbmx5IG9uY2UuXG4gICAgICAgKlxuICAgICAgICogSW4gdGhpcyBjYXNlLCBob3dldmVyLCBiZWNhdXNlIEVWTSB0cmFuc2FjdGlvbnMgYWxyZWFkeSBoYXZlIGEgcmVwbGF5IHByZXZlbnRpb24gbWVjaGFuaXNtXG4gICAgICAgKiAobmFtZWx5IHRoZSAnbm9uY2UnIHByb3BlcnR5KSwgd2UgYWxsb3cgdGhlIHVzZXIgdG8gc3BlY2lmeSBhIGdyYWNlIHBlcmlvZCAoaW4gc2Vjb25kcykgdG9cbiAgICAgICAqIGluZGljYXRlIGhvdyBsb25nIGFuIE1GQSByZWNlaXB0IHNob3VsZCByZW1haW4gdmFsaWQgYWZ0ZXIgaXRzIGZpcnN0IHVzZS5cbiAgICAgICAqXG4gICAgICAgKiBOb3RlIHRoYXQgd2UgYWxsb3cgYm90aCAnZ3JhY2UnIGFuZCAnaWdub3JlX25vbmNlJyB0byBiZSBzZXQgYmVjYXVzZSBvbmNlIGFuIE1GQSByZXF1ZXN0XG4gICAgICAgKiBlbnRlcnMgaXRzIGdyYWNlIHBlcmlvZCB3ZSB1bmNvbmRpdGlvbmFsbHkgc2V0IGl0cyAnaWdub3JlX25vbmNlJyBwcm9wZXJ0eSB0byAnZmFsc2UnIHRvXG4gICAgICAgKiBlbnN1cmUgdGhhdCBhbnkgc3Vic2VxdWVudCByZXF1ZXN0cyB0aGF0IGNsYWltIHRoZSBzYW1lIHJlY2VpcHQgbXVzdCBzaWduIGZvciB0aGUgc2FtZVxuICAgICAgICogbm9uY2UgYXMgdGhlIHJlcXVlc3Qgd2Ugc2lnbmVkIG9yaWdpbmFsbHkgd2l0aCB0aGF0IHJlY2VpcHQuXG4gICAgICAgKlxuICAgICAgICogQWxzbyBub3RlIHRoYXQgdGhlIGdyYWNlIHBlcmlvZCBjYW5ub3QgZXh0ZW5kIHRoZSBsaWZldGltZSBvZiBhbiBNRkEgcmVxdWVzdCBiZXlvbmQgaXRzXG4gICAgICAgKiBvcmlnaW5hbCBleHBpcmF0aW9uIGRhdGUuXG4gICAgICAgKlxuICAgICAgICogVGhlIGdyYWNlIHBlcmlvZCBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gMzAgZGF5cy5cbiAgICAgICAqL1xuICAgICAgZ3JhY2U/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRoZSAnZ2FzJyBwcm9wZXJ0eSBvZiB0aGUgRVZNIHRyYW5zYWN0aW9uIGlzIGFsbG93ZWQgdG8gYmUgZGlmZmVyZW50LiAqL1xuICAgICAgaWdub3JlX2dhcz86IGJvb2xlYW47XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlICdub25jZScgcHJvcGVydHkgb2YgdGhlIEVWTSB0cmFuc2FjdGlvbiBpcyBhbGxvd2VkIHRvIGJlIGRpZmZlcmVudC4gKi9cbiAgICAgIGlnbm9yZV9ub25jZT86IGJvb2xlYW47XG4gICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBFdm1UeERlcG9zaXRFcnJvckNvZGU6XG4gICAgICB8IFwiRXZtVHhEZXBvc2l0UmVjZWl2ZXJNaXNtYXRjaFwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0RW1wdHlEYXRhXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRFbXB0eUNoYWluSWRcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdEVtcHR5UmVjZWl2ZXJcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdFVuZXhwZWN0ZWRWYWx1ZVwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0VW5leHBlY3RlZERhdGFMZW5ndGhcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdE5vQWJpXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXROb0RlcG9zaXRGdW5jdGlvblwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0VW5leHBlY3RlZEZ1bmN0aW9uTmFtZVwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0VW5leHBlY3RlZFZhbGlkYXRvcktleVwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0SW52YWxpZFZhbGlkYXRvcktleVwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0TWlzc2luZ0RlcG9zaXRBcmdcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdFdyb25nRGVwb3NpdEFyZ1R5cGVcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdFZhbGlkYXRvcktleU5vdEluUm9sZVwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0VW5leHBlY3RlZFdpdGhkcmF3YWxDcmVkZW50aWFsc1wiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0VW5yZXNvbHZlZFJvbGVcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdEludmFsaWREZXBvc2l0RW5jb2RpbmdcIjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHNvdXJjZSBvZiBhIHBvbGljeSBleGVjdXRpb24sIGkuZS4gdGhlIHJlYXNvbiBpdCB3YXMgZXhlY3V0ZWQuXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBFeGVjdXRpb25Tb3VyY2U6IFwiU2lnblJlcXVlc3RcIiB8IFwiVXNlckludm9jYXRpb25cIjtcbiAgICAvKipcbiAgICAgKiBFeHBsaWNpdFNjb3BlXG4gICAgICogQGRlc2NyaXB0aW9uIEV4cGxpY2l0bHkgbmFtZWQgc2NvcGVzIGZvciBhY2Nlc3NpbmcgQ3ViZVNpZ25lciBBUElzXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBFeHBsaWNpdFNjb3BlOlxuICAgICAgfCBcInNpZ246KlwiXG4gICAgICB8IFwic2lnbjphdmFcIlxuICAgICAgfCBcInNpZ246YmxvYlwiXG4gICAgICB8IFwic2lnbjpkaWZmaWVIZWxsbWFuXCJcbiAgICAgIHwgXCJzaWduOmJ0YzoqXCJcbiAgICAgIHwgXCJzaWduOmJ0YzpzZWd3aXRcIlxuICAgICAgfCBcInNpZ246YnRjOnRhcHJvb3RcIlxuICAgICAgfCBcInNpZ246YnRjOnBzYnQ6KlwiXG4gICAgICB8IFwic2lnbjpidGM6cHNidDpkb2dlXCJcbiAgICAgIHwgXCJzaWduOmJ0Yzpwc2J0OmxlZ2FjeVwiXG4gICAgICB8IFwic2lnbjpidGM6cHNidDpzZWd3aXRcIlxuICAgICAgfCBcInNpZ246YnRjOnBzYnQ6dGFwcm9vdFwiXG4gICAgICB8IFwic2lnbjpidGM6cHNidDpsdGNTZWd3aXRcIlxuICAgICAgfCBcInNpZ246YnRjOm1lc3NhZ2U6KlwiXG4gICAgICB8IFwic2lnbjpidGM6bWVzc2FnZTpzZWd3aXRcIlxuICAgICAgfCBcInNpZ246YnRjOm1lc3NhZ2U6bGVnYWN5XCJcbiAgICAgIHwgXCJzaWduOmJhYnlsb246KlwiXG4gICAgICB8IFwic2lnbjpiYWJ5bG9uOmVvdHM6KlwiXG4gICAgICB8IFwic2lnbjpiYWJ5bG9uOmVvdHM6bm9uY2VzXCJcbiAgICAgIHwgXCJzaWduOmJhYnlsb246ZW90czpzaWduXCJcbiAgICAgIHwgXCJzaWduOmJhYnlsb246c3Rha2luZzoqXCJcbiAgICAgIHwgXCJzaWduOmJhYnlsb246c3Rha2luZzpkZXBvc2l0XCJcbiAgICAgIHwgXCJzaWduOmJhYnlsb246c3Rha2luZzp1bmJvbmRcIlxuICAgICAgfCBcInNpZ246YmFieWxvbjpzdGFraW5nOndpdGhkcmF3XCJcbiAgICAgIHwgXCJzaWduOmJhYnlsb246c3Rha2luZzpzbGFzaFwiXG4gICAgICB8IFwic2lnbjpiYWJ5bG9uOnJlZ2lzdHJhdGlvblwiXG4gICAgICB8IFwic2lnbjpiYWJ5bG9uOmNvdmVuYW50XCJcbiAgICAgIHwgXCJzaWduOmV2bToqXCJcbiAgICAgIHwgXCJzaWduOmV2bTp0eFwiXG4gICAgICB8IFwic2lnbjpldm06ZWlwMTkxXCJcbiAgICAgIHwgXCJzaWduOmV2bTplaXA3MTJcIlxuICAgICAgfCBcInNpZ246ZXRoMjoqXCJcbiAgICAgIHwgXCJzaWduOmV0aDI6dmFsaWRhdGVcIlxuICAgICAgfCBcInNpZ246ZXRoMjpzdGFrZVwiXG4gICAgICB8IFwic2lnbjpldGgyOnVuc3Rha2VcIlxuICAgICAgfCBcInNpZ246c29sYW5hXCJcbiAgICAgIHwgXCJzaWduOnN1aVwiXG4gICAgICB8IFwic2lnbjp0ZW5kZXJtaW50XCJcbiAgICAgIHwgXCJzaWduOm1taVwiXG4gICAgICB8IFwibWFuYWdlOipcIlxuICAgICAgfCBcIm1hbmFnZTpyZWFkb25seVwiXG4gICAgICB8IFwibWFuYWdlOmVtYWlsXCJcbiAgICAgIHwgXCJtYW5hZ2U6bWZhOipcIlxuICAgICAgfCBcIm1hbmFnZTptZmE6cmVhZG9ubHlcIlxuICAgICAgfCBcIm1hbmFnZTptZmE6bGlzdFwiXG4gICAgICB8IFwibWFuYWdlOm1mYTp2b3RlOipcIlxuICAgICAgfCBcIm1hbmFnZTptZmE6dm90ZTpjc1wiXG4gICAgICB8IFwibWFuYWdlOm1mYTp2b3RlOmVtYWlsXCJcbiAgICAgIHwgXCJtYW5hZ2U6bWZhOnZvdGU6Zmlkb1wiXG4gICAgICB8IFwibWFuYWdlOm1mYTp2b3RlOnRvdHBcIlxuICAgICAgfCBcIm1hbmFnZTptZmE6cmVnaXN0ZXI6KlwiXG4gICAgICB8IFwibWFuYWdlOm1mYTpyZWdpc3RlcjpmaWRvXCJcbiAgICAgIHwgXCJtYW5hZ2U6bWZhOnJlZ2lzdGVyOnRvdHBcIlxuICAgICAgfCBcIm1hbmFnZTptZmE6cmVnaXN0ZXI6ZW1haWxcIlxuICAgICAgfCBcIm1hbmFnZTptZmE6dW5yZWdpc3RlcjoqXCJcbiAgICAgIHwgXCJtYW5hZ2U6bWZhOnVucmVnaXN0ZXI6Zmlkb1wiXG4gICAgICB8IFwibWFuYWdlOm1mYTp1bnJlZ2lzdGVyOnRvdHBcIlxuICAgICAgfCBcIm1hbmFnZTptZmE6dmVyaWZ5OipcIlxuICAgICAgfCBcIm1hbmFnZTptZmE6dmVyaWZ5OnRvdHBcIlxuICAgICAgfCBcIm1hbmFnZTprZXk6KlwiXG4gICAgICB8IFwibWFuYWdlOmtleTpyZWFkb25seVwiXG4gICAgICB8IFwibWFuYWdlOmtleTpnZXRcIlxuICAgICAgfCBcIm1hbmFnZTprZXk6YXR0ZXN0XCJcbiAgICAgIHwgXCJtYW5hZ2U6a2V5Omxpc3RSb2xlc1wiXG4gICAgICB8IFwibWFuYWdlOmtleTpsaXN0XCJcbiAgICAgIHwgXCJtYW5hZ2U6a2V5Omhpc3Rvcnk6dHg6bGlzdFwiXG4gICAgICB8IFwibWFuYWdlOmtleTpjcmVhdGVcIlxuICAgICAgfCBcIm1hbmFnZTprZXk6aW1wb3J0XCJcbiAgICAgIHwgXCJtYW5hZ2U6a2V5OnVwZGF0ZToqXCJcbiAgICAgIHwgXCJtYW5hZ2U6a2V5OnVwZGF0ZTpvd25lclwiXG4gICAgICB8IFwibWFuYWdlOmtleTp1cGRhdGU6cG9saWN5XCJcbiAgICAgIHwgXCJtYW5hZ2U6a2V5OnVwZGF0ZTplbmFibGVkXCJcbiAgICAgIHwgXCJtYW5hZ2U6a2V5OnVwZGF0ZTptZXRhZGF0YVwiXG4gICAgICB8IFwibWFuYWdlOmtleTp1cGRhdGU6ZWRpdFBvbGljeVwiXG4gICAgICB8IFwibWFuYWdlOmtleTpkZWxldGVcIlxuICAgICAgfCBcIm1hbmFnZTpwb2xpY3k6KlwiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTpyZWFkb25seVwiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTpjcmVhdGVcIlxuICAgICAgfCBcIm1hbmFnZTpwb2xpY3k6Z2V0XCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5Omxpc3RcIlxuICAgICAgfCBcIm1hbmFnZTpwb2xpY3k6ZGVsZXRlXCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5OnVwZGF0ZToqXCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5OnVwZGF0ZTpvd25lclwiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTp1cGRhdGU6bmFtZVwiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTp1cGRhdGU6YWNsXCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5OnVwZGF0ZTplZGl0UG9saWN5XCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5OnVwZGF0ZTptZXRhZGF0YVwiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTp1cGRhdGU6cnVsZVwiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTppbnZva2VcIlxuICAgICAgfCBcIm1hbmFnZTpwb2xpY3k6d2FzbToqXCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5Ondhc206dXBsb2FkXCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5OnNlY3JldHM6KlwiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTpzZWNyZXRzOmdldFwiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTpzZWNyZXRzOnVwZGF0ZToqXCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5OnNlY3JldHM6dXBkYXRlOnZhbHVlc1wiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTpzZWNyZXRzOnVwZGF0ZTphY2xcIlxuICAgICAgfCBcIm1hbmFnZTpwb2xpY3k6c2VjcmV0czp1cGRhdGU6ZWRpdFBvbGljeVwiXG4gICAgICB8IFwibWFuYWdlOmNvbnRhY3Q6KlwiXG4gICAgICB8IFwibWFuYWdlOmNvbnRhY3Q6cmVhZG9ubHlcIlxuICAgICAgfCBcIm1hbmFnZTpjb250YWN0OmNyZWF0ZVwiXG4gICAgICB8IFwibWFuYWdlOmNvbnRhY3Q6Z2V0XCJcbiAgICAgIHwgXCJtYW5hZ2U6Y29udGFjdDpsaXN0XCJcbiAgICAgIHwgXCJtYW5hZ2U6Y29udGFjdDpkZWxldGVcIlxuICAgICAgfCBcIm1hbmFnZTpjb250YWN0OnVwZGF0ZToqXCJcbiAgICAgIHwgXCJtYW5hZ2U6Y29udGFjdDp1cGRhdGU6bmFtZVwiXG4gICAgICB8IFwibWFuYWdlOmNvbnRhY3Q6dXBkYXRlOmFkZHJlc3Nlc1wiXG4gICAgICB8IFwibWFuYWdlOmNvbnRhY3Q6dXBkYXRlOm93bmVyXCJcbiAgICAgIHwgXCJtYW5hZ2U6Y29udGFjdDp1cGRhdGU6bGFiZWxzXCJcbiAgICAgIHwgXCJtYW5hZ2U6Y29udGFjdDp1cGRhdGU6bWV0YWRhdGFcIlxuICAgICAgfCBcIm1hbmFnZTpjb250YWN0OnVwZGF0ZTplZGl0UG9saWN5XCJcbiAgICAgIHwgXCJtYW5hZ2U6Y29udGFjdDpsb29rdXA6KlwiXG4gICAgICB8IFwibWFuYWdlOmNvbnRhY3Q6bG9va3VwOmFkZHJlc3NcIlxuICAgICAgfCBcIm1hbmFnZTpwb2xpY3k6Y3JlYXRlSW1wb3J0S2V5XCJcbiAgICAgIHwgXCJtYW5hZ2U6cm9sZToqXCJcbiAgICAgIHwgXCJtYW5hZ2U6cm9sZTpyZWFkb25seVwiXG4gICAgICB8IFwibWFuYWdlOnJvbGU6Y3JlYXRlXCJcbiAgICAgIHwgXCJtYW5hZ2U6cm9sZTpkZWxldGVcIlxuICAgICAgfCBcIm1hbmFnZTpyb2xlOmdldDoqXCJcbiAgICAgIHwgXCJtYW5hZ2U6cm9sZTphdHRlc3RcIlxuICAgICAgfCBcIm1hbmFnZTpyb2xlOmdldDprZXlzXCJcbiAgICAgIHwgXCJtYW5hZ2U6cm9sZTpnZXQ6a2V5czpsaXN0XCJcbiAgICAgIHwgXCJtYW5hZ2U6cm9sZTpnZXQ6a2V5czpnZXRcIlxuICAgICAgfCBcIm1hbmFnZTpyb2xlOmdldDp1c2Vyc1wiXG4gICAgICB8IFwibWFuYWdlOnJvbGU6bGlzdFwiXG4gICAgICB8IFwibWFuYWdlOnJvbGU6dXBkYXRlOipcIlxuICAgICAgfCBcIm1hbmFnZTpyb2xlOnVwZGF0ZTplbmFibGVkXCJcbiAgICAgIHwgXCJtYW5hZ2U6cm9sZTp1cGRhdGU6cG9saWN5XCJcbiAgICAgIHwgXCJtYW5hZ2U6cm9sZTp1cGRhdGU6ZWRpdFBvbGljeVwiXG4gICAgICB8IFwibWFuYWdlOnJvbGU6dXBkYXRlOmtleToqXCJcbiAgICAgIHwgXCJtYW5hZ2U6cm9sZTp1cGRhdGU6a2V5OmFkZFwiXG4gICAgICB8IFwibWFuYWdlOnJvbGU6dXBkYXRlOmtleTpyZW1vdmVcIlxuICAgICAgfCBcIm1hbmFnZTpyb2xlOnVwZGF0ZTp1c2VyOipcIlxuICAgICAgfCBcIm1hbmFnZTpyb2xlOnVwZGF0ZTp1c2VyOmFkZFwiXG4gICAgICB8IFwibWFuYWdlOnJvbGU6dXBkYXRlOnVzZXI6cmVtb3ZlXCJcbiAgICAgIHwgXCJtYW5hZ2U6cm9sZTpoaXN0b3J5OnR4Omxpc3RcIlxuICAgICAgfCBcIm1hbmFnZTppZGVudGl0eToqXCJcbiAgICAgIHwgXCJtYW5hZ2U6aWRlbnRpdHk6cmVhZG9ubHlcIlxuICAgICAgfCBcIm1hbmFnZTppZGVudGl0eTp2ZXJpZnlcIlxuICAgICAgfCBcIm1hbmFnZTppZGVudGl0eTphZGRcIlxuICAgICAgfCBcIm1hbmFnZTppZGVudGl0eTpyZW1vdmVcIlxuICAgICAgfCBcIm1hbmFnZTppZGVudGl0eTpsaXN0XCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOipcIlxuICAgICAgfCBcIm1hbmFnZTpvcmc6Y3JlYXRlXCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOm1ldHJpY3M6cXVlcnlcIlxuICAgICAgfCBcIm1hbmFnZTpvcmc6YXVkaXQ6cXVlcnlcIlxuICAgICAgfCBcIm1hbmFnZTpvcmc6cmVhZG9ubHlcIlxuICAgICAgfCBcIm1hbmFnZTpvcmc6YWRkVXNlclwiXG4gICAgICB8IFwibWFuYWdlOm9yZzppbnZpdGVVc2VyXCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOmludml0ZUFsaWVuXCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOnVwZGF0ZU1lbWJlcnNoaXBcIlxuICAgICAgfCBcIm1hbmFnZTpvcmc6bGlzdFVzZXJzXCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOnVzZXI6Z2V0XCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOmRlbGV0ZVVzZXJcIlxuICAgICAgfCBcIm1hbmFnZTpvcmc6Z2V0XCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOnVzZXI6cmVzZXRNZmFcIlxuICAgICAgfCBcIm1hbmFnZTpzZXNzaW9uOipcIlxuICAgICAgfCBcIm1hbmFnZTpzZXNzaW9uOnJlYWRvbmx5XCJcbiAgICAgIHwgXCJtYW5hZ2U6c2Vzc2lvbjpnZXRcIlxuICAgICAgfCBcIm1hbmFnZTpzZXNzaW9uOmxpc3RcIlxuICAgICAgfCBcIm1hbmFnZTpzZXNzaW9uOmNyZWF0ZVwiXG4gICAgICB8IFwibWFuYWdlOnNlc3Npb246ZXh0ZW5kXCJcbiAgICAgIHwgXCJtYW5hZ2U6c2Vzc2lvbjpyZXZva2VcIlxuICAgICAgfCBcIm1hbmFnZTpleHBvcnQ6KlwiXG4gICAgICB8IFwibWFuYWdlOmV4cG9ydDpyZWFkb25seVwiXG4gICAgICB8IFwibWFuYWdlOmV4cG9ydDpvcmc6KlwiXG4gICAgICB8IFwibWFuYWdlOmV4cG9ydDpvcmc6Z2V0XCJcbiAgICAgIHwgXCJtYW5hZ2U6ZXhwb3J0OnVzZXI6KlwiXG4gICAgICB8IFwibWFuYWdlOmV4cG9ydDp1c2VyOmRlbGV0ZVwiXG4gICAgICB8IFwibWFuYWdlOmV4cG9ydDp1c2VyOmxpc3RcIlxuICAgICAgfCBcIm1hbmFnZTphdXRoTWlncmF0aW9uOipcIlxuICAgICAgfCBcIm1hbmFnZTphdXRoTWlncmF0aW9uOmlkZW50aXR5OmFkZFwiXG4gICAgICB8IFwibWFuYWdlOmF1dGhNaWdyYXRpb246aWRlbnRpdHk6cmVtb3ZlXCJcbiAgICAgIHwgXCJtYW5hZ2U6YXV0aE1pZ3JhdGlvbjp1c2VyOnVwZGF0ZVwiXG4gICAgICB8IFwibWFuYWdlOm1taToqXCJcbiAgICAgIHwgXCJtYW5hZ2U6bW1pOnJlYWRvbmx5XCJcbiAgICAgIHwgXCJtYW5hZ2U6bW1pOmdldFwiXG4gICAgICB8IFwibWFuYWdlOm1taTpsaXN0XCJcbiAgICAgIHwgXCJtYW5hZ2U6bW1pOnJlamVjdFwiXG4gICAgICB8IFwibWFuYWdlOm1taTpkZWxldGVcIlxuICAgICAgfCBcImV4cG9ydDoqXCJcbiAgICAgIHwgXCJleHBvcnQ6dXNlcjoqXCJcbiAgICAgIHwgXCJleHBvcnQ6dXNlcjppbml0XCJcbiAgICAgIHwgXCJleHBvcnQ6dXNlcjpjb21wbGV0ZVwiXG4gICAgICB8IFwibW1pOipcIlxuICAgICAgfCBcIm9yZ0FjY2VzczoqXCJcbiAgICAgIHwgXCJvcmdBY2Nlc3M6Y2hpbGQ6KlwiO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIHR5cGUgc3BlY2lmaWVzIHRoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGUgYGZlZWAgZmllbGQgaW4gQmFieWxvblxuICAgICAqIHN0YWtpbmcgcmVxdWVzdHMuIElmIGBzYXRzYCwgdGhlIGZpZWxkIGlzIGludHByZXRlZCBhcyBhIGZpeGVkIHZhbHVlXG4gICAgICogaW4gc2F0cy4gSWYgYHNhdHNfcHJfdmJgLCB0aGUgZmllbGQgaXMgaW50ZXJwcmV0ZWQgYXMgYSByYXRlIGFuZCB0aGVcbiAgICAgKiBmZWUgaXMgY29tcHV0ZWQgYnkgZXN0aW1hdGluZyB0aGUgd2VpZ2h0IG9mIHRoZSBvdXRwdXQgdHJhbnNhY3Rpb24uXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBGZWVUeXBlOiBcInNhdHNcIiB8IFwic2F0c19wZXJfa3d1XCIgfCBcInNhdHNfcGVyX3ZiXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBTZW50IGZyb20gdGhlIGNsaWVudCB0byB0aGUgc2VydmVyIHRvIGFuc3dlciBhIGZpZG8gY2hhbGxlbmdlICovXG4gICAgRmlkb0Fzc2VydEFuc3dlcjoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIGNoYWxsZW5nZSB0aGF0IHdhcyByZXR1cm5lZCBmcm9tIHRoZSBQT1NUIGVuZHBvaW50ICovXG4gICAgICBjaGFsbGVuZ2VfaWQ6IHN0cmluZztcbiAgICAgIGNyZWRlbnRpYWw6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFwiXTtcbiAgICB9O1xuICAgIEZpZG9Bc3NlcnRDaGFsbGVuZ2U6IChjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNoYWxsZW5nZVBpZWNlc1wiXSAmIHtcbiAgICAgIG9wdGlvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zXCJdO1xuICAgIH0pICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGNoYWxsZW5nZS4gTXVzdCBiZSBzdXBwbGllZCB3aGVuIGFuc3dlcmluZyB0aGUgY2hhbGxlbmdlLiAqL1xuICAgICAgY2hhbGxlbmdlX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFNlbnQgZnJvbSB0aGUgY2xpZW50IHRvIHRoZSBzZXJ2ZXIgdG8gYW5zd2VyIGEgZmlkbyBjaGFsbGVuZ2UgKi9cbiAgICBGaWRvQ3JlYXRlQ2hhbGxlbmdlQW5zd2VyOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgY2hhbGxlbmdlIHRoYXQgd2FzIHJldHVybmVkIGZyb20gdGhlIFBPU1QgZW5kcG9pbnQgKi9cbiAgICAgIGNoYWxsZW5nZV9pZDogc3RyaW5nO1xuICAgICAgY3JlZGVudGlhbDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFNlbnQgYnkgdGhlIHNlcnZlciB0byB0aGUgY2xpZW50LiBDb250YWlucyB0aGUgY2hhbGxlbmdlIGRhdGEgdGhhdCBtdXN0IGJlXG4gICAgICogdXNlZCB0byBnZW5lcmF0ZSBhIG5ldyBjcmVkZW50aWFsXG4gICAgICovXG4gICAgRmlkb0NyZWF0ZUNoYWxsZW5nZVJlc3BvbnNlOiAoY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDaGFsbGVuZ2VQaWVjZXNcIl0gJiB7XG4gICAgICBvcHRpb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnNcIl07XG4gICAgfSkgJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUgY2hhbGxlbmdlLiBNdXN0IGJlIHN1cHBsaWVkIHdoZW4gYW5zd2VyaW5nIHRoZSBjaGFsbGVuZ2UuICovXG4gICAgICBjaGFsbGVuZ2VfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRGVjbGFyZXMgaW50ZW50IHRvIHJlZ2lzdGVyIGEgbmV3IEZJRE8ga2V5ICovXG4gICAgRmlkb0NyZWF0ZVJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGlzIGtleSBjYW4gYmUgdXNlZCBmb3IgcGFzc3dvcmRsZXNzIGxvZ2luICovXG4gICAgICBkaXNjb3ZlcmFibGU/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgbmV3IGZpZG8gY3JlZGVudGlhbFxuICAgICAgICogQGV4YW1wbGUgV29yayBZdWJpa2V5XG4gICAgICAgKi9cbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdG8gcmVxdWVzdCB0aGUgdW5pcXVlIGF1dGhlbnRpY2F0b3IgZGV2aWNlIG1hbnVmYWN0dXJlciBpZGVudGlmaWVyLlxuICAgICAgICogVGhpcyBpbmZvcm1hdGlvbiBjYW4gYmUgdXNlZCB0byByZW5kZXIgdGhlIG1hbnVmYWN0dXJlciBuYW1lIChlLmcuLCBcIll1YmlLZXlcIixcbiAgICAgICAqIG9yIFwiR29vZ2xlIFBhc3N3b3JkIE1hbmFnZXJcIiwgb3IgXCIxUGFzc3dvcmRcIiwgZXRjLikuIFdoZW4gcmVxdWVzdGVkLCBzb21lIHVzZXJcbiAgICAgICAqIGFnZW50cyAoZS5nLiwgRmlyZWZveCkgd2lsbCBhc2sgdGhlIHVzZXIgdG8gYWdyZWUgb3IgZGlzYWdyZWUsIHdoZXJlYXMgc29tZVxuICAgICAgICogKGUuZy4sIENocm9tZSkgd2lsbCBzaWxlbnRseSBhZ3JlZS5cbiAgICAgICAqL1xuICAgICAgcmVxdWVzdF9kZXZpY2VfaWRlbnRpZmllcj86IGJvb2xlYW47XG4gICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBGb3JiaWRkZW5FcnJvckNvZGU6XG4gICAgICB8IFwiQWxpZW5LZXlDcmVhdGVcIlxuICAgICAgfCBcIkNhbm5vdEFzc3VtZUlkZW50aXR5XCJcbiAgICAgIHwgXCJTZW50cnlEaXNhbGxvd2VkXCJcbiAgICAgIHwgXCJQYXNza2V5TG9naW5EaXNhYmxlZFwiXG4gICAgICB8IFwiUGFzc2tleU5vdFJlZ2lzdGVyZWRcIlxuICAgICAgfCBcIkNhbm5vdENyZWF0ZU9yZ1wiXG4gICAgICB8IFwiV3JvbmdNZmFFbWFpbE90cEp3dFwiXG4gICAgICB8IFwiT3JnRmxhZ05vdFNldFwiXG4gICAgICB8IFwiRmlkb1JlcXVpcmVkVG9SZW1vdmVUb3RwXCJcbiAgICAgIHwgXCJPaWRjSWRlbnRpdHlMaW1pdFJlYWNoZWRcIlxuICAgICAgfCBcIk9pZGNTY29wZUNlaWxpbmdNaXNzaW5nXCJcbiAgICAgIHwgXCJPaWRjSXNzdWVyTm90QWxsb3dlZEZvck1lbWJlclJvbGVcIlxuICAgICAgfCBcIk9pZGNOb01lbWJlclJvbGVzQWxsb3dlZFwiXG4gICAgICB8IFwiRW1haWxPdHBOb3RDb25maWd1cmVkXCJcbiAgICAgIHwgXCJNZmFDaGFsbGVuZ2VFeHBpcmVkXCJcbiAgICAgIHwgXCJDaGFpbklkTm90QWxsb3dlZFwiXG4gICAgICB8IFwiSW52YWxpZE9yZ1wiXG4gICAgICB8IFwiT3JnSWRNaXNtYXRjaFwiXG4gICAgICB8IFwiU2Vzc2lvbkZvcldyb25nT3JnXCJcbiAgICAgIHwgXCJTZWxmRGVsZXRlXCJcbiAgICAgIHwgXCJTZWxmRGlzYWJsZVwiXG4gICAgICB8IFwiSW52YWxpZE9yZ01lbWJlcnNoaXBSb2xlQ2hhbmdlXCJcbiAgICAgIHwgXCJVc2VyRGlzYWJsZWRcIlxuICAgICAgfCBcIk9yZ0Rpc2FibGVkXCJcbiAgICAgIHwgXCJPcmdOb3RGb3VuZFwiXG4gICAgICB8IFwiT3JnV2l0aG91dE93bmVyXCJcbiAgICAgIHwgXCJPcnBoYW5lZFVzZXJcIlxuICAgICAgfCBcIk9pZGNVc2VyTm90Rm91bmRcIlxuICAgICAgfCBcIlVzZXJOb3RJbk9yZ1wiXG4gICAgICB8IFwiVXNlck5vdE9yZ093bmVyXCJcbiAgICAgIHwgXCJVc2VyTm90S2V5T3duZXJcIlxuICAgICAgfCBcIkludmFsaWRSb2xlXCJcbiAgICAgIHwgXCJEaXNhYmxlZFJvbGVcIlxuICAgICAgfCBcIktleURpc2FibGVkXCJcbiAgICAgIHwgXCJLZXlOb3RJblJvbGVcIlxuICAgICAgfCBcIkNvbnRhY3ROb3RJbk9yZ1wiXG4gICAgICB8IFwiVXNlckV4cG9ydFJlcXVlc3ROb3RJbk9yZ1wiXG4gICAgICB8IFwiVXNlckV4cG9ydFJlcXVlc3RJbnZhbGlkXCJcbiAgICAgIHwgXCJVc2VyRXhwb3J0RGlzYWJsZWRcIlxuICAgICAgfCBcIlVzZXJOb3RPcmlnaW5hbEtleU93bmVyXCJcbiAgICAgIHwgXCJVc2VyTm90SW5Sb2xlXCJcbiAgICAgIHwgXCJNdXN0QmVGdWxsTWVtYmVyXCJcbiAgICAgIHwgXCJTZXNzaW9uRXhwaXJlZFwiXG4gICAgICB8IFwiU2Vzc2lvbkNoYW5nZWRcIlxuICAgICAgfCBcIlNlc3Npb25SZXZva2VkXCJcbiAgICAgIHwgXCJFeHBlY3RlZFVzZXJTZXNzaW9uXCJcbiAgICAgIHwgXCJTZXNzaW9uUm9sZUNoYW5nZWRcIlxuICAgICAgfCBcIlNjb3BlZE5hbWVOb3RGb3VuZFwiXG4gICAgICB8IFwiU2Vzc2lvbkludmFsaWRFcG9jaFRva2VuXCJcbiAgICAgIHwgXCJTZXNzaW9uSW52YWxpZFJlZnJlc2hUb2tlblwiXG4gICAgICB8IFwiU2Vzc2lvblJlZnJlc2hUb2tlbkV4cGlyZWRcIlxuICAgICAgfCBcIkludmFsaWRBdXRoSGVhZGVyXCJcbiAgICAgIHwgXCJTZXNzaW9uTm90Rm91bmRcIlxuICAgICAgfCBcIkludmFsaWRBcm5cIlxuICAgICAgfCBcIlNlc3Npb25JbnZhbGlkQXV0aFRva2VuXCJcbiAgICAgIHwgXCJTZXNzaW9uQXV0aFRva2VuRXhwaXJlZFwiXG4gICAgICB8IFwiU2Vzc2lvblBvc3NpYmx5U3RvbGVuVG9rZW5cIlxuICAgICAgfCBcIk1mYURpc2FsbG93ZWRJZGVudGl0eVwiXG4gICAgICB8IFwiTWZhRGlzYWxsb3dlZEFwcHJvdmVyXCJcbiAgICAgIHwgXCJNZmFUeXBlTm90QWxsb3dlZFwiXG4gICAgICB8IFwiTWZhTm90QXBwcm92ZWRZZXRcIlxuICAgICAgfCBcIk1mYUNvbmZpcm1hdGlvbkNvZGVNaXNtYXRjaFwiXG4gICAgICB8IFwiTWZhSHR0cFJlcXVlc3RNaXNtYXRjaFwiXG4gICAgICB8IFwiTWZhUmVtb3ZlQmVsb3dNaW5cIlxuICAgICAgfCBcIk1mYU9yZ1JlcXVpcmVtZW50Tm90TWV0XCJcbiAgICAgIHwgXCJNZmFSZWdpc3RyYXRpb25EaXNhbGxvd2VkXCJcbiAgICAgIHwgXCJUb3RwQWxyZWFkeUNvbmZpZ3VyZWRcIlxuICAgICAgfCBcIlRvdHBDb25maWd1cmF0aW9uQ2hhbmdlZFwiXG4gICAgICB8IFwiTWZhVG90cEJhZENvbmZpZ3VyYXRpb25cIlxuICAgICAgfCBcIk1mYVRvdHBCYWRDb2RlXCJcbiAgICAgIHwgXCJNZmFUb3RwUmF0ZUxpbWl0XCJcbiAgICAgIHwgXCJJbXByb3BlclNlc3Npb25TY29wZVwiXG4gICAgICB8IFwiRnVsbFNlc3Npb25SZXF1aXJlZFwiXG4gICAgICB8IFwiU2Vzc2lvbldpdGhvdXRBbnlTY29wZVVuZGVyXCJcbiAgICAgIHwgXCJVc2VyUm9sZVVucHJpdmlsZWdlZFwiXG4gICAgICB8IFwiTWVtYmVyUm9sZUZvcmJpZGRlblwiXG4gICAgICB8IFwiTWZhTm90Q29uZmlndXJlZFwiXG4gICAgICB8IFwiUmVtb3ZlTGFzdE9pZGNJZGVudGl0eVwiXG4gICAgICB8IFwiT3BlcmF0aW9uTm90QWxsb3dlZFwiXG4gICAgICB8IFwiT3JnRXhwb3J0UmV0cmlldmFsRGlzYWJsZWRcIlxuICAgICAgfCBcIkNoYW5naW5nS2V5RXhwb3J0UmVxdWlyZW1lbnRJc0Rpc2FibGVkXCJcbiAgICAgIHwgXCJBdXRvQWRkQmxzS2V5VG9Qcm90ZWN0ZWRSb2xlXCJcbiAgICAgIHwgXCJVc2VyTm90UG9saWN5T3duZXJcIlxuICAgICAgfCBcIlVzZXJOb3RDb250YWN0T3duZXJcIlxuICAgICAgfCBcIkxlZ2FjeVNlc3Npb25DYW5ub3RIYXZlU2NvcGVDZWlsaW5nXCJcbiAgICAgIHwgXCJSb2xlSW5QYXJlbnRPcmdOb3RBbGxvd2VkXCJcbiAgICAgIHwgXCJSZW1vdmVLZXlGcm9tUm9sZVVzZXJOb3RBbGxvd2VkXCJcbiAgICAgIHwgXCJTaXdlQ2hhbGxlbmdlRXhwaXJlZFwiXG4gICAgICB8IFwiU2l3ZU1lc3NhZ2VOb3RWYWxpZFwiXG4gICAgICB8IFwiU2l3ZU1lc3NhZ2VJbnZhbGlkU2lnbmF0dXJlXCJcbiAgICAgIHwgXCJBY2xcIjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gU3BlY2lmaWVzIGEgZm9yayBvZiB0aGUgYEJlYWNvbkNoYWluYCwgdG8gcHJldmVudCByZXBsYXkgYXR0YWNrcy5cbiAgICAgKiBUaGUgc2NoZW1hIG9mIGBGb3JrYCBpcyBkZWZpbmVkIGluIHRoZSBbQmVhY29uIGNoYWluXG4gICAgICogc3BlY10oaHR0cHM6Ly9naXRodWIuY29tL2V0aGVyZXVtL2NvbnNlbnN1cy1zcGVjcy9ibG9iL3YxLjAuMS9zcGVjcy9waGFzZTAvYmVhY29uLWNoYWluLm1kI2ZvcmspLlxuICAgICAqIEBleGFtcGxlIHtcbiAgICAgKiAgIFwiY3VycmVudF92ZXJzaW9uXCI6IFwiMHgwMDAwMTAyMFwiLFxuICAgICAqICAgXCJlcG9jaFwiOiBcIjBcIixcbiAgICAgKiAgIFwicHJldmlvdXNfdmVyc2lvblwiOiBcIjB4MDAwMDEwMjBcIlxuICAgICAqIH1cbiAgICAgKi9cbiAgICBGb3JrOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDdXJyZW50IGZvcmsgdmVyc2lvbi5cbiAgICAgICAqIEBleGFtcGxlIDB4NDM0MzQzNDNcbiAgICAgICAqL1xuICAgICAgY3VycmVudF92ZXJzaW9uOiBzdHJpbmc7XG4gICAgICBlcG9jaDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaFwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFByZXZpb3VzIGZvcmsgdmVyc2lvbi5cbiAgICAgICAqIEBleGFtcGxlIDB4NDI0MjQyNDJcbiAgICAgICAqL1xuICAgICAgcHJldmlvdXNfdmVyc2lvbjogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEdlbmVzaXMgZGF0YSBhcyBkZWZpbmVkIGluIHRoZSBbQmVhY29uIEFQSVxuICAgICAqIHNwZWNdKGh0dHBzOi8vZXRoZXJldW0uZ2l0aHViLmlvL2JlYWNvbi1BUElzLyMvQmVhY29uL2dldEdlbmVzaXMpLlxuICAgICAqIFlvdSBjYW4gZ2V0IHRoZSBnZW5lc2lzIGRhdGEgZnJvbSB0aGUgQmVhY29uIG5vZGUncyBgL2V0aC92MS9iZWFjb24vZ2VuZXNpc2AgZW5kLXBvaW50LlxuICAgICAqIFRoaXMgc3RydWN0IGRlZmluaXRpb24gaXMgb3JpZ2luYWxseSBmcm9tIGxpZ2h0aG91c2UncyBldGgyLlxuICAgICAqL1xuICAgIEdlbmVzaXNEYXRhOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBHZW5lc2lzIGZvcmsgdmVyc2lvbi5cbiAgICAgICAqIEBleGFtcGxlIDB4NDI0MjQyNDJcbiAgICAgICAqL1xuICAgICAgZ2VuZXNpc19mb3JrX3ZlcnNpb246IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEdlbmVzaXMgdGltZVxuICAgICAgICogQGV4YW1wbGUgMTY3OTMyNjQ0OVxuICAgICAgICovXG4gICAgICBnZW5lc2lzX3RpbWU6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEdlbmVzaXMgdmFsaWRhdG9ycyByb290LlxuICAgICAgICogQGV4YW1wbGUgMHgyNzBkNDNlNzRjZTM0MGRlNGJjYTJiMTkzNmJlY2EwZjRmNTQwOGQ5ZTc4YWVjNDg1MDkyMGJhZjY1OWQ1YjY5XG4gICAgICAgKi9cbiAgICAgIGdlbmVzaXNfdmFsaWRhdG9yc19yb290OiBzdHJpbmc7XG4gICAgfTtcbiAgICBHZXRLZXlzSW5PcmdSZXF1ZXN0OiB7XG4gICAgICBrZXlfdHlwZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5VHlwZVwiXSB8IG51bGw7XG4gICAgfTtcbiAgICBHZXRVc2VyQnlFbWFpbFJlc3BvbnNlOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUeXBpY2FsbHksIHRoaXMgYXJyYXkgaXMgZWl0aGVyIGVtcHR5IChpZiBubyB1c2VyIHdpdGggYSBnaXZlbiBlbWFpbCB3YXMgZm91bmQpXG4gICAgICAgKiBvciBjb250YWlucyBhIHNpbmdsZSBlbGVtZW50LCBpLmUuLCB0aGUgdXNlciB3aXRoIGEgZ2l2ZW4gZW1haWwuXG4gICAgICAgKi9cbiAgICAgIHVzZXJzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJJbk9yZ0luZm9XaXRoSWRlbnRpdHlcIl1bXTtcbiAgICB9O1xuICAgIEdldFVzZXJCeU9pZGNSZXNwb25zZToge1xuICAgICAgdXNlcj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckluT3JnSW5mb1dpdGhJZGVudGl0eVwiXSB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFN0YXRzIHBlcnRhaW5pbmcgdGhlIHRoZSBzZW5kZXIgYGN1YmUzc2lnbmVyYCBpbnN0YW5jZSAqL1xuICAgIEhlYXJ0YmVhdFJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE51bWJlciBvZiByZXF1ZXN0cyBjdXJyZW50bHkgYWN0aXZlIChyZWNlaXZlZCBidXQgbm90IG5lY2Vzc2FyaWx5IGJlaW5nIHByb2Nlc3NlZCB5ZXQpXG4gICAgICAgKi9cbiAgICAgIGN1cnJlbnRfbnVtX3JlcXVlc3RzX2FjdGl2ZTogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gTnVtYmVyIG9mIHJlcXVlc3RzIGN1cnJlbnRseSBiZWluZyBwcm9jZXNzZWQgYnkgY3ViZTNzaWduZXJcbiAgICAgICAqL1xuICAgICAgY3VycmVudF9udW1fcmVxdWVzdHNfcHJvY2Vzc2luZzogbnVtYmVyO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEbyBub3QgcmVjb3JkIG1ldHJpYyBkYXRhIGZyb20gdGhpcyBoZWFydGJlYXQgKi9cbiAgICAgIGlnbm9yZT86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBOdW1iZXIgb2YgbmV3IHJlcXVlc3RzIGR1cmluZyB0aGlzIGhlYXJ0YmVhdCBwZXJpb2RcbiAgICAgICAqL1xuICAgICAgbnVtX3JlcXVlc3RzOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBOdW1iZXIgb2YgcmVxdWVzdHMgdGhhdCBmYWlsZWQgZHVyaW5nIHRoaXMgaGVhcnRiZWF0IHBlcmlvZFxuICAgICAgICovXG4gICAgICBudW1fcmVxdWVzdHNfZmFpbGVkOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBOdW1iZXIgb2YgcmVxdWVzdHMgd2VyZSByZXRyaWVkIGR1cmluZyB0aGlzIGhlYXJ0YmVhdCBwZXJpb2RcbiAgICAgICAqL1xuICAgICAgbnVtX3JlcXVlc3RzX3JldHJpZWQ6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE51bWJlciBvZiByZXRyaWVzIGR1cmluZyB0aGlzIGhlYXJ0YmVhdCBwZXJpb2RcbiAgICAgICAqL1xuICAgICAgbnVtX3JldHJpZXM6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE51bWJlciBvZiB0aW1lcyBhdXRoIHRva2VuIHdhcyByZWZyZXNoZWQgZHVyaW5nIHRoaXMgaGVhcnRiZWF0IHBlcmlvZFxuICAgICAgICovXG4gICAgICBudW1fdG9rZW5fcmVmcmVzaGVzPzogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gTnVtYmVyIG9mIHRpbWVzIGF1dGggdG9rZW4gcmVmcmVzaCBmYWlsZWQgZHVyaW5nIHRoaXMgaGVhcnRiZWF0IHBlcmlvZFxuICAgICAgICovXG4gICAgICBudW1fdG9rZW5fcmVmcmVzaGVzX2ZhaWxlZD86IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFZlcnNpb24gb2YgdGhlIHByb3h5IHNlbmRpbmcgdGhlIGhlYXJ0IGJlYXQgcmVxdWVzdFxuICAgICAgICpcbiAgICAgICAqIFRPRE86IE1ha2Ugbm9uLW9wdGlvbmFsIG9uY2Ugd2UgZG8gbm90IHN1cHBvcnQgcHJveGllcyB3aXRob3V0IHZlcnNpb24gaW5mb3JtYXRpb25cbiAgICAgICAqL1xuICAgICAgcHJveHlfdmVyc2lvbj86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIENvbmZpZ3VyYXRpb24gZ292ZXJuaW5nIHdoZXRoZXIgYW5kIGhvdyB0byBzYXZlIGhpc3RvcmljYWwgZGF0YS4gKi9cbiAgICBIaXN0b3JpY2FsRGF0YUNvbmZpZ3VyYXRpb246IHtcbiAgICAgIHR4OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkhpc3RvcmljYWxUeENvbmZpZ3VyYXRpb25cIl07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgcmVjZW50bHkgc2lnbmVkIHRyYW5zYWN0aW9uIHRoYXQgd2Ugc3RvcmUgaW4gdGhlIERCLiAqL1xuICAgIEhpc3RvcmljYWxUeDoge1xuICAgICAgZGF0ZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgZXhwX2Vwb2NoOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICBoaXN0b3JpY2FsX3R4X29yZ19pZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXTtcbiAgICAgIGtleV9pZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXTtcbiAgICAgIG1mYV9zdGF0dXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlN0YXR1c1wiXSB8IG51bGw7XG4gICAgICBvcGVyYXRpb246IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT3BlcmF0aW9uS2luZFwiXTtcbiAgICAgIHJlcXVlc3Q6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSHR0cFJlcXVlc3RcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9yaWdpbmFsIHJlcXVlc3QgaWQgKi9cbiAgICAgIHJlcXVlc3RfaWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcGVyYXRpb24tc3BlY2lmaWMgcmVzdWx0ICovXG4gICAgICByZXN1bHQ6IHVua25vd247XG4gICAgICByb2xlX2lkPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXSB8IG51bGw7XG4gICAgICB1c2VyX2lkPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXSB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIENvbmZpZ3VyYXRpb24gZ292ZXJuaW5nIHdoZXRoZXIgYW5kIGhvdyB0byBzYXZlIGhpc3RvcmljYWwgdHJhbnNhY3Rpb25zLiAqL1xuICAgIEhpc3RvcmljYWxUeENvbmZpZ3VyYXRpb246IHtcbiAgICAgIGxpZmV0aW1lPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNvbmRzXCJdIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVxdWVzdC5cbiAgICAgKlxuICAgICAqIENhcHR1cmVzIGFsbCB0aGUgcmVsZXZhbnQgaW5mbyAoaW5jbHVkaW5nIHRoZSByZXF1ZXN0IGJvZHkpIGFib3V0IHJlcXVlc3RzIHRoYXQgcmVxdWlyZSBNRkEuXG4gICAgICogV2UgdXNlIHRoaXMgdG8gdmVyaWZ5IHRoYXQgd2hlbiBhIHJlcXVlc3QgaXMgcmVzdW1lZCAoYWZ0ZXIgb2J0YWluaW5nIG5lY2Vzc2FyeSBNRkEgYXBwcm92YWxzKVxuICAgICAqIGl0IGlzIGV4YWN0bHkgdGhlIHNhbWUgYXMgaXQgb3JpZ2luYWxseSB3YXMuXG4gICAgICovXG4gICAgSHR0cFJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSFRUUCByZXF1ZXN0IGJvZHkgKi9cbiAgICAgIGJvZHk/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEhUVFAgbWV0aG9kIG9mIHRoZSByZXF1ZXN0ICovXG4gICAgICBtZXRob2Q6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSFRUUCBwYXRoIG9mIHRoZSByZXF1ZXN0LCBleGNsdWRpbmcgdGhlIGhvc3QgKi9cbiAgICAgIHBhdGg6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gSG93IHRvIGNvbXBhcmUgSFRUUCByZXF1ZXN0cyB3aGVuIHZlcmlmeWluZyBNRkEgcmVjZWlwdCAoc2VlIFtNZmFSZXF1ZXN0Ojp2ZXJpZnlfcmVxdWVzdF0pICovXG4gICAgSHR0cFJlcXVlc3RDbXA6IE9uZU9mPFxuICAgICAgW1xuICAgICAgICBcIkVxXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBFdm1UeDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFdm1UeENtcFwiXTtcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFNvbGFuYVR4OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNvbGFuYVR4Q21wXCJdO1xuICAgICAgICB9LFxuICAgICAgXVxuICAgID47XG4gICAgSWQ6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gYWJvdXQgYSBsaW5rZWQgT0lEQyBpZGVudGl0eSBpbmNsdWRpbmcgdW5pcXVlIGlkZW50aWZpZXJzIGFuZCB1c2VyIGluZm9cbiAgICAgKiAoZS5nLiwgZW1haWwpXG4gICAgICovXG4gICAgSWRlbnRpdHlJbmZvOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9pZGNJZGVudGl0eVwiXSAmXG4gICAgICBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9pZGNVc2VySW5mb1wiXSAmXG4gICAgICBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFByb29mIHRoYXQgYW4gZW5kLXVzZXIgcHJvdmlkZWQgQ3ViZVNpZ25lciB3aXRoIGEgdmFsaWQgYXV0aCB0b2tlblxuICAgICAqIChlaXRoZXIgYW4gT0lEQyB0b2tlbiBvciBhIEN1YmVTaWduZXIgc2Vzc2lvbiB0b2tlbilcbiAgICAgKi9cbiAgICBJZGVudGl0eVByb29mOiB7XG4gICAgICBhdWQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF1ZFwiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZW1haWwgYXNzb2NpYXRlZCB3aXRoIHRoZSB1c2VyXG4gICAgICAgKiBAZXhhbXBsZSB1c2VyQGVtYWlsLmNvbVxuICAgICAgICovXG4gICAgICBlbWFpbD86IHN0cmluZyB8IG51bGw7XG4gICAgICBleHBfZXBvY2g6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgIGlkZW50aXR5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPaWRjSWRlbnRpdHlcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHVzZXJuYW1lIChpZiBhbnkpIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXNlclxuICAgICAgICogQGV4YW1wbGUgY3ViaXN0ZGV2XG4gICAgICAgKi9cbiAgICAgIHByZWZlcnJlZF91c2VybmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICB1c2VyX2luZm8/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkN1YmVTaWduZXJVc2VySW5mb1wiXSB8IG51bGw7XG4gICAgfSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gb3BhcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBwcm9vZiAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gSURQIGNvbmZpZ3VyYXRpb24gKi9cbiAgICBJZHBDb25maWc6IHtcbiAgICAgIHRocm90dGxlPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUaHJvdHRsZUNvbmZpZ1wiXSB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEVuYWJsZSBmb3IgY2VydGFpbiB1c2VyIHJvbGVzICovXG4gICAgICB1c2Vycz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyUm9sZVwiXVtdIHwgbnVsbDtcbiAgICB9O1xuICAgIEltcG9ydEtleVJlcXVlc3Q6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW1wb3J0S2V5XCJdICZcbiAgICAgIGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3JlYXRlQW5kVXBkYXRlS2V5UHJvcGVydGllc1wiXSAmIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBXaGVuIGZhbHNlICh0aGUgZGVmYXVsdCksIG5vdGhpbmcgaXMgcmV0dXJuZWQgd2hlbiBhbiBpbXBvcnRlZCBrZXkgYWxyZWFkeVxuICAgICAgICAgKiBleGlzdHMuIFdoZW4gdHJ1ZSwgcmV0dXJucyB0aGUgS2V5SW5mbyBzdHJ1Y3QgZm9yIGtleXMgdGhhdCBhbHJlYWR5IGV4aXN0XG4gICAgICAgICAqIGlmIGNhbGxlciBpcyBhbGxvd2VkIHRvIGxpc3QgdGhhdCBrZXkuXG4gICAgICAgICAqL1xuICAgICAgICBpZGVtcG90ZW50PzogYm9vbGVhbjtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIHNldCBvZiBlbmNyeXB0ZWQga2V5cyB0byBiZSBpbXBvcnRlZCAqL1xuICAgICAgICBrZXlfbWF0ZXJpYWw6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSW1wb3J0S2V5UmVxdWVzdE1hdGVyaWFsXCJdW107XG4gICAgICAgIGtleV90eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleVR5cGVcIl07XG4gICAgICB9O1xuICAgIEltcG9ydEtleVJlcXVlc3RNYXRlcmlhbDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGNsaWVudCdzIGVwaGVtZXJhbCBwdWJsaWMga2V5IHVzZWQgdG8gZGVyaXZlIGEgc2hhcmVkIGtleS5cbiAgICAgICAqIFRoaXMgaXMgYSBiYXNlNjQtZW5jb2RlZCwgU0VDMS1lbmNvZGVkIFAzODQgcHVibGljIGtleS5cbiAgICAgICAqL1xuICAgICAgY2xpZW50X3B1YmxpY19rZXk6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBlbmNyeXB0ZWQga2V5aW5nIG1hdGVyaWFsIHRvIGJlIGltcG9ydGVkLlxuICAgICAgICogVGhpcyBpcyBhIGJhc2U2NC1lbmNvZGVkIGNpcGhlcnRleHQuXG4gICAgICAgKi9cbiAgICAgIGlrbV9lbmM6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgc2FsdCB2YWx1ZSB1c2VkIHRvIGRlcml2ZSBhIHNoYXJlZCBrZXkuXG4gICAgICAgKiBUaGlzIGlzIGEgYmFzZTY0LWVuY29kZWQgYnl0ZSBzdHJpbmcuXG4gICAgICAgKi9cbiAgICAgIHNhbHQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIEludGVybmFsRXJyb3JDb2RlOlxuICAgICAgfCBcIk5vTWF0ZXJpYWxJZFwiXG4gICAgICB8IFwiSW52YWxpZEF1ZGl0TG9nRW50cnlcIlxuICAgICAgfCBcIlVuZXhwZWN0ZWRDaGVja2VyUnVsZVwiXG4gICAgICB8IFwiVW5yZXNvbHZlZFBvbGljeVJlZmVyZW5jZVwiXG4gICAgICB8IFwiVW5leHBlY3RlZEFjbEFjdGlvblwiXG4gICAgICB8IFwiRmlkb0tleUFzc29jaWF0ZWRXaXRoTXVsdGlwbGVVc2Vyc1wiXG4gICAgICB8IFwiQ2xhaW1zUGFyc2VFcnJvclwiXG4gICAgICB8IFwiSW52YWxpZFRocm90dGxlSWRcIlxuICAgICAgfCBcIkludmFsaWRFbWFpbEFkZHJlc3NcIlxuICAgICAgfCBcIkVtYWlsVGVtcGxhdGVSZW5kZXJcIlxuICAgICAgfCBcIk9pZGNJZGVudGl0eUhlYWRlck1pc3NpbmdcIlxuICAgICAgfCBcIk9pZGNJZGVudGl0eVBhcnNlRXJyb3JcIlxuICAgICAgfCBcIlN5c3RlbVRpbWVFcnJvclwiXG4gICAgICB8IFwiUGFzc3dvcmRIYXNoUGFyc2VFcnJvclwiXG4gICAgICB8IFwiU2VuZE1haWxFcnJvclwiXG4gICAgICB8IFwiUmVxd2VzdEVycm9yXCJcbiAgICAgIHwgXCJFbWFpbENvbnN0cnVjdGlvbkVycm9yXCJcbiAgICAgIHwgXCJUc1dyaXRlRXJyb3JcIlxuICAgICAgfCBcIlRzUXVlcnlFcnJvclwiXG4gICAgICB8IFwiRGJRdWVyeUVycm9yXCJcbiAgICAgIHwgXCJEYkdldEVycm9yXCJcbiAgICAgIHwgXCJEYkRlbGV0ZUVycm9yXCJcbiAgICAgIHwgXCJEYlB1dEVycm9yXCJcbiAgICAgIHwgXCJEYlVwZGF0ZUVycm9yXCJcbiAgICAgIHwgXCJTZXJkZUVycm9yXCJcbiAgICAgIHwgXCJUZXN0QW5kU2V0RXJyb3JcIlxuICAgICAgfCBcIkRiR2V0SXRlbXNFcnJvclwiXG4gICAgICB8IFwiRGJXcml0ZUVycm9yXCJcbiAgICAgIHwgXCJDdWJpc3RTaWduZXJFcnJvclwiXG4gICAgICB8IFwiQ3dMaXN0TWV0cmljc0Vycm9yXCJcbiAgICAgIHwgXCJDd1B1dE1ldHJpY0RhdGFFcnJvclwiXG4gICAgICB8IFwiR2V0QXdzU2VjcmV0RXJyb3JcIlxuICAgICAgfCBcIlNlY3JldE5vdEZvdW5kXCJcbiAgICAgIHwgXCJLbXNHZW5lcmF0ZVJhbmRvbUVycm9yXCJcbiAgICAgIHwgXCJNYWxmb3JtZWRUb3RwQnl0ZXNcIlxuICAgICAgfCBcIkttc0dlbmVyYXRlUmFuZG9tTm9SZXNwb25zZUVycm9yXCJcbiAgICAgIHwgXCJDcmVhdGVLZXlFcnJvclwiXG4gICAgICB8IFwiUGFyc2VEZXJpdmF0aW9uUGF0aEVycm9yXCJcbiAgICAgIHwgXCJTcGxpdFNpZ25lckVycm9yXCJcbiAgICAgIHwgXCJDcmVhdGVJbXBvcnRLZXlFcnJvclwiXG4gICAgICB8IFwiQ3JlYXRlRW90c05vbmNlc0Vycm9yXCJcbiAgICAgIHwgXCJFb3RzU2lnbkVycm9yXCJcbiAgICAgIHwgXCJCYWJ5bG9uQ292U2lnbkVycm9yXCJcbiAgICAgIHwgXCJDb2duaXRvRGVsZXRlVXNlckVycm9yXCJcbiAgICAgIHwgXCJDb2duaXRvTGlzdFVzZXJzRXJyb3JcIlxuICAgICAgfCBcIkNvZ25pdG9HZXRVc2VyRXJyb3JcIlxuICAgICAgfCBcIk1pc3NpbmdVc2VyRW1haWxcIlxuICAgICAgfCBcIkNvZ25pdG9SZXNlbmRVc2VySW52aXRhdGlvblwiXG4gICAgICB8IFwiQ29nbml0b1NldFVzZXJQYXNzd29yZEVycm9yXCJcbiAgICAgIHwgXCJHZW5lcmljSW50ZXJuYWxFcnJvclwiXG4gICAgICB8IFwiQXNzdW1lUm9sZVdpdGhvdXRFdmlkZW5jZVwiXG4gICAgICB8IFwiT2lkY0F1dGhXaXRob3V0T3JnXCJcbiAgICAgIHwgXCJNaXNzaW5nS2V5TWV0YWRhdGFcIlxuICAgICAgfCBcIkttc0VuYWJsZUtleUVycm9yXCJcbiAgICAgIHwgXCJLbXNEaXNhYmxlS2V5RXJyb3JcIlxuICAgICAgfCBcIkxhbWJkYUludm9rZUVycm9yXCJcbiAgICAgIHwgXCJMYW1iZGFOb1Jlc3BvbnNlRXJyb3JcIlxuICAgICAgfCBcIkxhbWJkYUZhaWx1cmVcIlxuICAgICAgfCBcIkxhbWJkYVVucGFyc2FibGVSZXNwb25zZVwiXG4gICAgICB8IFwiU2VyaWFsaXplRW5jcnlwdGVkRXhwb3J0S2V5RXJyb3JcIlxuICAgICAgfCBcIkRlc2VyaWFsaXplRW5jcnlwdGVkRXhwb3J0S2V5RXJyb3JcIlxuICAgICAgfCBcIlJlRW5jcnlwdFVzZXJFeHBvcnRcIlxuICAgICAgfCBcIlMzVXBsb2FkRXJyb3JcIlxuICAgICAgfCBcIlMzRG93bmxvYWRFcnJvclwiXG4gICAgICB8IFwiUzNDb3B5RXJyb3JcIlxuICAgICAgfCBcIlMzTGlzdE9iamVjdHNFcnJvclwiXG4gICAgICB8IFwiUzNEZWxldGVPYmplY3RzRXJyb3JcIlxuICAgICAgfCBcIlMzQnVpbGRFcnJvclwiXG4gICAgICB8IFwiUzNQcmVzaWduZWRVcmxFcnJvclwiXG4gICAgICB8IFwiTWFuYWdlZFN0YXRlTWlzc2luZ1wiXG4gICAgICB8IFwiSW50ZXJuYWxIZWFkZXJNaXNzaW5nXCJcbiAgICAgIHwgXCJJbnZhbGlkSW50ZXJuYWxIZWFkZXJWYWx1ZVwiXG4gICAgICB8IFwiUmVxdWVzdExvY2FsU3RhdGVBbHJlYWR5U2V0XCJcbiAgICAgIHwgXCJPaWRjT3JnTWlzbWF0Y2hcIlxuICAgICAgfCBcIk9pZGNJc3N1ZXJJbnZhbGlkSndrXCJcbiAgICAgIHwgXCJJbnZhbGlkUGtGb3JNYXRlcmlhbElkXCJcbiAgICAgIHwgXCJTZWd3aXRUd2Vha0ZhaWxlZFwiXG4gICAgICB8IFwiVW5jaGVja2VkT3JnXCJcbiAgICAgIHwgXCJTZXNzaW9uT3JnSWRNaXNzaW5nXCJcbiAgICAgIHwgXCJBdmFTaWduQ3JlZHNNaXNzaW5nXCJcbiAgICAgIHwgXCJBdmFTaWduU2lnbmF0dXJlTWlzc2luZ1wiXG4gICAgICB8IFwiRXhwZWN0ZWRSb2xlU2Vzc2lvblwiXG4gICAgICB8IFwiSW52YWxpZFRoaXJkUGFydHlJZGVudGl0eVwiXG4gICAgICB8IFwiQ29nbml0b0dldFVzZXJcIlxuICAgICAgfCBcIlNuc1N1YnNjcmliZUVycm9yXCJcbiAgICAgIHwgXCJTbnNVbnN1YnNjcmliZUVycm9yXCJcbiAgICAgIHwgXCJTbnNHZXRTdWJzY3JpcHRpb25BdHRyaWJ1dGVzRXJyb3JcIlxuICAgICAgfCBcIlNuc1N1YnNjcmlwdGlvbkF0dHJpYnV0ZXNNaXNzaW5nXCJcbiAgICAgIHwgXCJTbnNTZXRTdWJzY3JpcHRpb25BdHRyaWJ1dGVzRXJyb3JcIlxuICAgICAgfCBcIlNuc1B1Ymxpc2hCYXRjaEVycm9yXCJcbiAgICAgIHwgXCJJbmNvbnNpc3RlbnRNdWx0aVZhbHVlVGVzdEFuZFNldFwiXG4gICAgICB8IFwiTWF0ZXJpYWxJZEVycm9yXCJcbiAgICAgIHwgXCJJbnZhbGlkQnRjQWRkcmVzc1wiXG4gICAgICB8IFwiSGlzdG9yaWNhbFR4Qm9keU1pc3NpbmdcIlxuICAgICAgfCBcIkludmFsaWRPcGVyYXRpb25cIlxuICAgICAgfCBcIlBhcmVudE9yZ05vdEZvdW5kXCJcbiAgICAgIHwgXCJPcmdQYXJlbnRMb29wXCJcbiAgICAgIHwgXCJSZXNvbHZlZFBhcmVudE9yZ1dpdGhOb1Njb3BlQ2VpbGluZ1wiXG4gICAgICB8IFwiSW52YWxpZFVwbG9hZE9iamVjdElkXCJcbiAgICAgIHwgXCJQb2xpY3lFbmdpbmVOb3RGb3VuZFwiXG4gICAgICB8IFwiUG9saWN5RW5naW5lRXJyb3JcIlxuICAgICAgfCBcIlBvbGljeVNlY3JldHNFbmNyeXB0aW9uRXJyb3JcIlxuICAgICAgfCBcIkNyZWF0ZVBvbGljeUltcG9ydEtleUVycm9yXCJcbiAgICAgIHwgXCJJbnZhbGlkQWxpYXNcIlxuICAgICAgfCBcIkVtcHR5VXBkYXRlTW9kaWZpZWRPYmplY3RcIlxuICAgICAgfCBcIkVtcHR5VXBkYXRlTW9kaWZpZWRBY3Rpb25zXCJcbiAgICAgIHwgXCJEYkNvbnRhY3RBZGRyZXNzZXNJbnZhbGlkXCI7XG4gICAgSW52aXRhdGlvbkFjY2VwdFJlcXVlc3Q6IHtcbiAgICAgIGF1dGg6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXV0aFNvdXJjZVwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSW52aXRhdGlvbiB0b2tlbiAqL1xuICAgICAgdG9rZW46IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBJbmRpY2F0ZXMgdGhlIGF1dGggc291cmNlcyBhbGxvd2VkIHRvIGFuIGludml0ZWQgdXNlclxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgSW52aXRlS2luZDogXCJDb2duaXRvXCIgfCBcIklkcEFuZFNzb1wiIHwgXCJTc29cIjtcbiAgICBJbnZpdGVSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdXNlcidzIGVtYWlsIGFkZHJlc3NcbiAgICAgICAqIEBleGFtcGxlIGFsaWNlQGFjbWUuY29tXG4gICAgICAgKi9cbiAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgICBpbnZpdGVfa2luZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSW52aXRlS2luZFwiXSB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIGxvZ2luIE1GQSBwb2xpY3kgKi9cbiAgICAgIG1mYV9wb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdXNlcidzIGZ1bGwgbmFtZVxuICAgICAgICogQGV4YW1wbGUgQWxpY2UgV29uZGVybGFuZFxuICAgICAgICovXG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICByb2xlPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZW1iZXJSb2xlXCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFNraXAgc2VuZGluZyBhbiBpbnZpdGF0aW9uIGVtYWlsIHRvIHRoaXMgdXNlciBpZiB0cnVlLlxuICAgICAgICpcbiAgICAgICAqIE5PVEU6IHRoaXMgZmllbGQgaXMgZm9yIGludGVybmFsIHRlc3RpbmcgdXNlIE9OTFkuIElmIHlvdSBkbyBub3RcbiAgICAgICAqIHNlbmQgYW4gaW52aXRhdGlvbiBlbWFpbCAoYW5kIHRoZSBpbnZpdGUga2luZCBpcyBub3QgU1NPKSwgdGhlIHVzZXIgd2lsbCBuZXZlciBiZSBhYmxlIHRvIGxvZyBpbi5cbiAgICAgICAqIEBleGFtcGxlIGZhbHNlXG4gICAgICAgKi9cbiAgICAgIHNraXBfZW1haWw/OiBib29sZWFuO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHJlcXVlc3QgY29udGFpbmluZyB0aGUgZGF0YSB0aGF0IGEgV2FzbSBwb2xpY3kgc2hvdWxkIGJlIGludm9rZWQgd2l0aC4gKi9cbiAgICBJbnZva2VQb2xpY3lSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBbiBvcHRpb25hbCBLZXkgSUQuIElmIGRlZmluZWQsIHRoZSBwb2xpY3kgd2lsbCBiZSBpbnZva2VkIGFzIGlmIGl0IGlzIHNpZ25pbmdcbiAgICAgICAqIHRoZSBtZXNzYWdlIHdpdGggdGhpcyBrZXkuXG4gICAgICAgKi9cbiAgICAgIGtleV9pZD86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBcInJlcXVlc3QgYm9keVwiIHRoYXQgc2hvdWxkIGJlIHNlbnQgdG8gdGhlIHBvbGljeS4gKi9cbiAgICAgIHJlcXVlc3Q/OiB1bmtub3duO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBvcHRpb25hbCBSb2xlIElELiBJZiBgTm9uZWAsIHRoZSBwb2xpY3kgd2lsbCBiZSBpbnZva2VkIGZyb20gdGhlIGN1cnJlbnQgdXNlciBzZXNzaW9uLiAqL1xuICAgICAgcm9sZV9pZD86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXN1bHQgb2YgaW52b2tpbmcgYSBXYXNtIHBvbGljeS4gKi9cbiAgICBJbnZva2VQb2xpY3lSZXNwb25zZToge1xuICAgICAgcmVzcG9uc2U6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiV2FzbVBvbGljeVJlc3BvbnNlXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGJ5dGVzIHdyaXR0ZW4gdG8gYHN0ZGVycmAsIGVuY29kZWQgYXMgYSBoZXgtc3RyaW5nLlxuICAgICAgICogSW4gbW9zdCBjYXNlcywgdGhlc2UgYnl0ZXMgY29ycmVzcG9uZCB0byBhIFVURi04LWVuY29kZWQgYFN0cmluZ2AuXG4gICAgICAgKi9cbiAgICAgIHN0ZGVycjogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGJ5dGVzIHdyaXR0ZW4gdG8gYHN0ZG91dGAsIGVuY29kZWQgYXMgYSBoZXgtc3RyaW5nLlxuICAgICAgICogSW4gbW9zdCBjYXNlcywgdGhlc2UgYnl0ZXMgY29ycmVzcG9uZCB0byBhIFVURi04LWVuY29kZWQgYFN0cmluZ2AuXG4gICAgICAgKi9cbiAgICAgIHN0ZG91dDogc3RyaW5nO1xuICAgIH07XG4gICAgSnJwY1Jlc3BvbnNlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJlc3BvbnNlXCJdICYgUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBIFtgS2V5UGFja2FnZWBdIHNlcmlhbGl6ZWQgaW50byBhIGZvcm1hdCB0aGF0IGdpdmVzIGEgdGlkaWVyIEpTT05cbiAgICAgKiByZXByZXNlbnRhdGlvbiBzdWl0YWJsZSBmb3IgZW5jcnlwdGlvbiBpbiB0aGUgdXNlci1leHBvcnQgZmxvdy5cbiAgICAgKlxuICAgICAqIFdlIGNvbnN0cnVjdCB2YWx1ZXMgb2YgdGhpcyB0eXBlIHJhdGhlciB0aGFuIGNvbnN0cnVjdGluZyBgc2VyZGVfanNvbjo6VmFsdWVgc1xuICAgICAqIGRpcmVjdGx5IHdpdGggYGpzb24hKClgIGJlY2F1c2UgdGhpcyBhbGxvd3MgdXMgdG8gemVyb2l6ZSB2YWx1ZXMgb24gZHJvcCwgd2hpY2hcbiAgICAgKiBkb2Vzbid0IHdvcmsgd2l0aCBgc2VyZGVfanNvbjo6VmFsdWVgLlxuICAgICAqXG4gICAgICogRXhhbXBsZXMgb2Ygc2VyaWFsaXplZCBtYXRlcmlhbDpcbiAgICAgKlxuICAgICAqIC0gYEpzb25LZXlNYXRlcmlhbDo6RW5nbGlzaE1uZW1vbmljYDpcbiAgICAgKlxuICAgICAqIGBgYFxuICAgICAqIHVzZSBjdWJpc3Rfc2lnbmVyX3V0aWxzOjp7XG4gICAgICogRGVyaXZhdGlvblBhdGgsIEtleVBhY2thZ2UsIE1uZW1vbmljLCBNbmVtb25pY1BhY2thZ2UsIFNlY3AyNTZrMVBrZyxcbiAgICAgKiB9O1xuICAgICAqIHVzZSBzZXJkZV9qc29uOjpqc29uO1xuICAgICAqXG4gICAgICogY29uc3QgTU5FTU9OSUM6ICZzdHIgPSBcImRlcG9zaXQgZmlzY2FsIGJyYWluIHN3YXJtIHN1cnJvdW5kIGNvdXNpbiBob3JuIGdsYXJlIGZpeCBsb3ZlIHJlbmRlciBiZWxpZXZlIGd1aWRlIHNodWZmbGUgc3RlbSBjcmFtIGJyb2Njb2xpIHJlc2VtYmxlIGJlYWNoIGFydGVmYWN0IGxhbmd1YWdlIGdpZnQgamFyIHBlcm1pdFwiO1xuICAgICAqIGNvbnN0IERFUl9QQVRIOiAmc3RyID0gXCJtLzQ0Jy82MCcvMCcvMC8wXCI7XG4gICAgICogY29uc3QgS0VZX1RZUEU6ICZzdHIgPSBcImVjZHNhOnNlY3AyNTZrMVwiO1xuICAgICAqXG4gICAgICogbGV0IG1uZSA9IE1uZW1vbmljOjp0cnlfZnJvbShNTkVNT05JQykuZXhwZWN0KFwiZ29vZCBtbmVtb25pY1wiKTtcbiAgICAgKiBsZXQgZGVycCA9IERlcml2YXRpb25QYXRoOjp0cnlfZnJvbShERVJfUEFUSCkuZXhwZWN0KFwiZ29vZCBkZXIgcGF0aFwiKTtcbiAgICAgKiBsZXQgbW5lX3BrZyA9IE1uZW1vbmljUGFja2FnZTo6bmV3KG1uZSwgXCJcIiwgZGVycCk7XG4gICAgICogbGV0IGtleV9wa2cgPSBLZXlQYWNrYWdlOjo8U2VjcDI1NmsxUGtnPjo6RW5nbGlzaE1uZW1vbmljKG1uZV9wa2cpO1xuICAgICAqIGxldCBqc29uX3BrZyA9IGtleV9wa2cuaW50b19qc29uKEtFWV9UWVBFKTtcbiAgICAgKlxuICAgICAqIGxldCBqc29uX2V4cGVjdCA9IGpzb24hKHtcbiAgICAgKiBcImtleV90eXBlXCI6IEtFWV9UWVBFLFxuICAgICAqIFwibWF0ZXJpYWxfdHlwZVwiOiBcImVuZ2xpc2hfbW5lbW9uaWNcIixcbiAgICAgKiBcIm1uZW1vbmljXCI6IE1ORU1PTklDLFxuICAgICAqIFwicGFzc3dvcmRcIjogXCJcIixcbiAgICAgKiBcImRlcml2YXRpb25fcGF0aFwiOiBERVJfUEFUSCxcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIGFzc2VydF9lcSEoXG4gICAgICogc2VyZGVfanNvbjo6dG9fdmFsdWUoJmpzb25fcGtnKS5leHBlY3QoXCJqc29uIHNlcmlhbGl6YXRpb25cIiksXG4gICAgICoganNvbl9leHBlY3QsXG4gICAgICogKTtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIC0gYEpzb25LZXlNYXRlcmlhbDo6UmF3U2VjcmV0YDpcbiAgICAgKlxuICAgICAqIGBgYFxuICAgICAqIHVzZSBjdWJpc3Rfc2lnbmVyX3V0aWxzOjp7XG4gICAgICogZ2V0X3JhbmRvbV9ieXRlX2FycmF5LCBoZXhfZW5jb2RlLCBLZXlQYWNrYWdlLCBSbmdDb3JlLCBTZWNwMjU2azFQa2csXG4gICAgICogfTtcbiAgICAgKiB1c2Ugc2VyZGVfanNvbjo6anNvbjtcbiAgICAgKlxuICAgICAqIGNvbnN0IEtFWV9UWVBFOiAmc3RyID0gXCJlY2RzYTpzZWNwMjU2azFcIjtcbiAgICAgKlxuICAgICAqIC8vIHJhbmRvbSAzMi1ieXRlIHNlY3JldFxuICAgICAqIGxldCBzazogW3U4OyAzMl0gPSAqZ2V0X3JhbmRvbV9ieXRlX2FycmF5KCk7XG4gICAgICpcbiAgICAgKiBsZXQga2V5X3BrZyA9IEtleVBhY2thZ2U6OjxTZWNwMjU2azFQa2c+OjpTZWNyZXQoc2spO1xuICAgICAqIGxldCBqc29uX3BrZyA9IGtleV9wa2cuaW50b19qc29uKEtFWV9UWVBFKTtcbiAgICAgKlxuICAgICAqIGxldCBqc29uX2V4cGVjdCA9IGpzb24hKHtcbiAgICAgKiBcImtleV90eXBlXCI6IEtFWV9UWVBFLFxuICAgICAqIFwibWF0ZXJpYWxfdHlwZVwiOiBcInJhd19zZWNyZXRcIixcbiAgICAgKiBcInNlY3JldFwiOiBoZXhfZW5jb2RlKCZzayksXG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBhc3NlcnRfZXEhKFxuICAgICAqIHNlcmRlX2pzb246OnRvX3ZhbHVlKCZqc29uX3BrZykuZXhwZWN0KFwianNvbiBzZXJpYWxpemF0aW9uXCIpLFxuICAgICAqIGpzb25fZXhwZWN0LFxuICAgICAqICk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgSnNvbktleVBhY2thZ2U6IChcbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG1hdGVyaWFsX3R5cGU6IFwicmF3X3NlY3JldFwiO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHZhbHVlIG9mIHRoZSByYXcgc2VjcmV0ICovXG4gICAgICAgICAgc2VjcmV0OiBzdHJpbmc7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGRlcml2YXRpb24gcGF0aCAqL1xuICAgICAgICAgIGRlcml2YXRpb25fcGF0aDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG1hdGVyaWFsX3R5cGU6IFwiZW5nbGlzaF9tbmVtb25pY1wiO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG1uZW1vbmljICovXG4gICAgICAgICAgbW5lbW9uaWM6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBwYXNzd29yZCAod2hpY2ggbWF5IGJlIGVtcHR5KSAqL1xuICAgICAgICAgIHBhc3N3b3JkOiBzdHJpbmc7XG4gICAgICAgIH1cbiAgICApICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdHlwZSBvZiBrZXkgdGhpcyBwYWNrYWdlIHJlcHJlc2VudHMgKi9cbiAgICAgIGtleV90eXBlOiBzdHJpbmc7XG4gICAgfTtcbiAgICBKd2tTZXRSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUga2V5cyBpbmNsdWRlZCBpbiB0aGlzIHNldCAqL1xuICAgICAga2V5czogUmVjb3JkPHN0cmluZywgbmV2ZXI+W107XG4gICAgfTtcbiAgICBLZXlBdHRlc3RhdGlvbkNsYWltczoge1xuICAgICAgZXhwOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICBpYXQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgIGtleV9pbmZvOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluZm9cIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIElmIHJlcXVlc3RlZCwgdGhlIHJvbGVzIHRoZSBrZXkgaXMgY3VycmVudGx5IGluLiAqL1xuICAgICAga2V5X3JvbGVzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJblJvbGVJbmZvXCJdW10gfCBudWxsO1xuICAgIH07XG4gICAgS2V5Q291bnREaW1lbnNpb25zOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBrZXkgdHlwZSAqL1xuICAgICAga2V5X3R5cGU6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIG1ldHJpY3MgbXVzdCBpbmNsdWRlICdvcmdfaWQnIGFzIGEgZGltZW5zaW9uLiAqL1xuICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIERlcml2YXRpb24tcmVsYXRlZCBtZXRhZGF0YSBmb3Iga2V5cyBkZXJpdmVkIGZyb20gYSBsb25nLWxpdmVkIG1uZW1vbmljICovXG4gICAgS2V5RGVyaXZhdGlvbkluZm86IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGRlcml2YXRpb24gcGF0aCB1c2VkIHRvIGRlcml2ZSB0aGlzIGtleSAqL1xuICAgICAgZGVyaXZhdGlvbl9wYXRoOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBtbmVtb25pYy1pZCBvZiB0aGUga2V5J3MgcGFyZW50IG1uZW1vbmljICovXG4gICAgICBtbmVtb25pY19pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHdyYXBwZWQga2V5LWltcG9ydCBrZXkgKi9cbiAgICBLZXlJbXBvcnRLZXk6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQmFzZTY0LWVuY29kZWQsIGVuY3J5cHRlZCBkYXRhIGtleS4gKi9cbiAgICAgIGRrX2VuYzogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gRXhwaXJhdGlvbiB0aW1lc3RhbXAgZXhwcmVzc2VkIGFzIHNlY29uZHMgc2luY2UgdGhlIFVOSVggZXBvY2guXG4gICAgICAgKi9cbiAgICAgIGV4cGlyZXM6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBlcGhlbWVyYWwgcHVibGljIGtleSB0byB3aGljaCBhbiBpbXBvcnRlZCBrZXkgc2hvdWxkIGJlIGVuY3J5cHRlZC5cbiAgICAgICAqIFRoaXMgaXMgYSBQMzg0IHB1YmxpYyBrZXkgaW4gYmFzZTY0LWVuY29kZWQgdW5jb21wcmVzc2VkIFNFQ0cgZm9ybWF0LlxuICAgICAgICovXG4gICAgICBwdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEJhc2U2NC1lbmNvZGVkLCBlbmNyeXB0ZWQgc2VjcmV0IGtleS4gKi9cbiAgICAgIHNrX2VuYzogc3RyaW5nO1xuICAgIH07XG4gICAgS2V5SW5Sb2xlSW5mbzoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gS2V5IElEXG4gICAgICAgKiBAZXhhbXBsZSBLZXkjMHg4ZTM0ODQ2ODdlNjZjZGQyNmNmMDRjMzY0NzYzM2FiNGYzNTcwMTQ4XG4gICAgICAgKi9cbiAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAga2V5X2luZm8/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluZm9cIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUG9saWNpZXMgdGhhdCBhcmUgY2hlY2tlZCBiZWZvcmUgdGhpcyBrZXkgaXMgdXNlZCBvbiBiZWhhbGYgb2YgdGhpcyByb2xlXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlR4UmVjZWl2ZXJcIjogXCIweDhjNTk0NjkxYzBlNTkyZmZhMjFmMTUzYTE2YWU0MWRiNWJlZmNhYWFcIlxuICAgICAgICogICB9LFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJUeERlcG9zaXRcIjoge1xuICAgICAgICogICAgICAgXCJraW5kXCI6IFwiQ2Fub25pY2FsXCJcbiAgICAgICAqICAgICB9XG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W107XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSb2xlIElEXG4gICAgICAgKiBAZXhhbXBsZSBSb2xlI2U0MjdjMjhhLTljNWItNDljYy1hMjU3LTg3OGFlYTU4YTIyY1xuICAgICAgICovXG4gICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICBLZXlJbmZvOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbW1vbkZpZWxkc1wiXSAmIHtcbiAgICAgIGRlcml2YXRpb25faW5mbz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5RGVyaXZhdGlvbkluZm9cIl0gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRoZSBrZXkgaXMgZW5hYmxlZCAob25seSBlbmFibGVkIGtleXMgbWF5IGJlIHVzZWQgZm9yIHNpZ25pbmcpICovXG4gICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBrZXk6IFwiS2V5I1wiIGZvbGxvd2VkIGJ5IGEgdW5pcXVlIGlkZW50aWZpZXIgc3BlY2lmaWMgdG9cbiAgICAgICAqIHRoZSB0eXBlIG9mIGtleSAoc3VjaCBhcyBhIHB1YmxpYyBrZXkgZm9yIEJMUyBvciBhbiBldGhlcmV1bSBhZGRyZXNzIGZvciBTZWNwKVxuICAgICAgICogQGV4YW1wbGUgS2V5IzB4OGUzNDg0Njg3ZTY2Y2RkMjZjZjA0YzM2NDc2MzNhYjRmMzU3MDE0OFxuICAgICAgICovXG4gICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIGtleV90eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleVR5cGVcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIHVuaXF1ZSBpZGVudGlmaWVyIHNwZWNpZmljIHRvIHRoZSB0eXBlIG9mIGtleSwgc3VjaCBhcyBhIHB1YmxpYyBrZXkgb3IgYW4gZXRoZXJldW0gYWRkcmVzc1xuICAgICAgICogQGV4YW1wbGUgMHg4ZTM0ODQ2ODdlNjZjZGQyNmNmMDRjMzY0NzYzM2FiNGYzNTcwMTQ4XG4gICAgICAgKi9cbiAgICAgIG1hdGVyaWFsX2lkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPd25lciBvZiB0aGUga2V5XG4gICAgICAgKiBAZXhhbXBsZSBVc2VyI2MzYjkzNzljLTRlOGMtNDIxNi1iZDBhLTY1YWNlNTNjZjk4ZlxuICAgICAgICovXG4gICAgICBvd25lcjogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gS2V5IHBvbGljeVxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICBcIkFsbG93UmF3QmxvYlNpZ25pbmdcIixcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiUmVxdWlyZU1mYVwiOiB7XG4gICAgICAgKiAgICAgICBcImNvdW50XCI6IDFcbiAgICAgICAqICAgICB9XG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgcG9saWN5OiB1bmtub3duW107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBrZXkgcHJvdmVuYW5jZS4gKi9cbiAgICAgIHByb3ZlbmFuY2U/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQsIHNlcmlhbGl6ZWQgcHVibGljIGtleS4gVGhlIGZvcm1hdCB1c2VkIGRlcGVuZHMgb24gdGhlIGtleSB0eXBlOlxuICAgICAgICogLSBTZWNwMjU2azEga2V5cyB1c2UgNjUtYnl0ZSB1bmNvbXByZXNzZWQgU0VDRyBmb3JtYXQ7XG4gICAgICAgKiAtIFN0YXJrIGtleXMgdXNlIDMzLWJ5dGUgY29tcHJlc3NlZCBTRUNHIGZvcm1hdDtcbiAgICAgICAqIC0gQkxTIGtleXMgdXNlIDQ4LWJ5dGUgY29tcHJlc3NlZCBCTFMxMi0zODEgKFpDYXNoKSBmb3JtYXQ7XG4gICAgICAgKiAtIEVkMjU1MTkga2V5cyB1c2UgdGhlIGNhbm9uaWNhbCAzMi1ieXRlIGVuY29kaW5nIHNwZWNpZmllZCBpbiBSRkMgODAzMi5cbiAgICAgICAqIEBleGFtcGxlIDB4MDRkMjY4OGI2YmMyY2U3Zjk4NzliOWU3NDVmM2M0ZGMxNzc5MDhjNWNlZjBjMWI2NGNmZjE5YWU3ZmYyN2RlZTYyM2M2NGZlOWQ5YzMyNWM3ZmJiYzc0OGJiZDVmNjA3Y2UxNGRkODNlMjhlYmJiYjdkM2U3ZjJmZmI3MGE3OTQzMVxuICAgICAgICovXG4gICAgICBwdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcHVycG9zZSBmb3Igd2hpY2ggdGhlIGtleSBjYW4gYmUgdXNlZCAoZS5nLiwgY2hhaW4gaWQgZm9yIHdoaWNoIHRoZSBrZXkgaXMgYWxsb3dlZCB0byBzaWduIG1lc3NhZ2VzKVxuICAgICAgICogQGV4YW1wbGUgRXRoMlZhbGlkYXRvcigxKVxuICAgICAgICovXG4gICAgICBwdXJwb3NlOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZWdpb24gYWZmaW5pdHkgZm9yIHRoaXMga2V5ICovXG4gICAgICByZWdpb24/OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHJldHVybmVkIHdoZW4gcmVxdWVzdGluZyBhIGtleSBhdHRlc3RhdGlvbi4gKi9cbiAgICBLZXlJbmZvSnd0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEEgSlNPTiBXZWIgVG9rZW4gd2hvc2UgY2xhaW1zIGNvbnRhaW4gdGhlIGBLZXlJbmZvYCBzdHJ1Y3R1cmUuICovXG4gICAgICBqd3Q6IHN0cmluZztcbiAgICB9O1xuICAgIEtleUluZm9zOiB7XG4gICAgICBrZXlzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluZm9cIl1bXTtcbiAgICB9O1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIEtleVR5cGU6XG4gICAgICB8IFwiU2VjcEV0aEFkZHJcIlxuICAgICAgfCBcIlNlY3BCdGNcIlxuICAgICAgfCBcIlNlY3BCdGNUZXN0XCJcbiAgICAgIHwgXCJTZWNwQnRjTGVnYWN5XCJcbiAgICAgIHwgXCJTZWNwQnRjTGVnYWN5VGVzdFwiXG4gICAgICB8IFwiU2VjcEF2YUFkZHJcIlxuICAgICAgfCBcIlNlY3BBdmFUZXN0QWRkclwiXG4gICAgICB8IFwiQmxzUHViXCJcbiAgICAgIHwgXCJCbHNJbmFjdGl2ZVwiXG4gICAgICB8IFwiQmxzQXZhSWNtXCJcbiAgICAgIHwgXCJFZDI1NTE5U29sYW5hQWRkclwiXG4gICAgICB8IFwiRWQyNTUxOVN1aUFkZHJcIlxuICAgICAgfCBcIkVkMjU1MTlBcHRvc0FkZHJcIlxuICAgICAgfCBcIkVkMjU1MTlDYXJkYW5vQWRkclZrXCJcbiAgICAgIHwgXCJFZDI1NTE5U3RlbGxhckFkZHJcIlxuICAgICAgfCBcIkVkMjU1MTlTdWJzdHJhdGVBZGRyXCJcbiAgICAgIHwgXCJFZDI1NTE5Q2FudG9uQWRkclwiXG4gICAgICB8IFwiTW5lbW9uaWNcIlxuICAgICAgfCBcIlN0YXJrXCJcbiAgICAgIHwgXCJCYWJ5bG9uRW90c1wiXG4gICAgICB8IFwiQmFieWxvbkNvdlwiXG4gICAgICB8IFwiVGFwcm9vdEJ0Y1wiXG4gICAgICB8IFwiVGFwcm9vdEJ0Y1Rlc3RcIlxuICAgICAgfCBcIlNlY3BDb3Ntb3NBZGRyXCJcbiAgICAgIHwgXCJQMjU2Q29zbW9zQWRkclwiXG4gICAgICB8IFwiUDI1Nk9udG9sb2d5QWRkclwiXG4gICAgICB8IFwiUDI1Nk5lbzNBZGRyXCJcbiAgICAgIHwgXCJFZDI1NTE5VGVuZGVybWludEFkZHJcIlxuICAgICAgfCBcIlNlY3BUcm9uQWRkclwiXG4gICAgICB8IFwiRWQyNTUxOVRvbkFkZHJcIlxuICAgICAgfCBcIlNlY3BEb2dlQWRkclwiXG4gICAgICB8IFwiU2VjcERvZ2VUZXN0QWRkclwiXG4gICAgICB8IFwiU2VjcEthc3BhQWRkclwiXG4gICAgICB8IFwiU2VjcEthc3BhVGVzdEFkZHJcIlxuICAgICAgfCBcIlNjaG5vcnJLYXNwYUFkZHJcIlxuICAgICAgfCBcIlNjaG5vcnJLYXNwYVRlc3RBZGRyXCJcbiAgICAgIHwgXCJTZWNwTHRjXCJcbiAgICAgIHwgXCJTZWNwTHRjVGVzdFwiXG4gICAgICB8IFwiU2VjcFhycEFkZHJcIlxuICAgICAgfCBcIkVkMjU1MTlYcnBBZGRyXCJcbiAgICAgIHwgXCJCYWJ5SnVianViXCI7XG4gICAgS2V5VHlwZUFuZERlcml2YXRpb25QYXRoOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IG9mIGRlcml2YXRpb24gcGF0aHMgZm9yIHdoaWNoIHRvIGRlcml2ZS5cbiAgICAgICAqIEBleGFtcGxlIG0vNDQnLzYwJy8wJy8wLzBcbiAgICAgICAqL1xuICAgICAgZGVyaXZhdGlvbl9wYXRoOiBzdHJpbmc7XG4gICAgICBrZXlfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlUeXBlXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUG9saWNpZXMgdG8gYXBwbHkgdG8gdGhpcyBrZXkuIEl0IGlzIGFuIGVycm9yIHRvIHNwZWNpZnkgYSBwb2xpY3lcbiAgICAgICAqIHRoYXQgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBga2V5X3R5cGVgLlxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICBcIkFsbG93UmF3QmxvYlNpZ25pbmdcIixcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiUmVxdWlyZU1mYVwiOiB7XG4gICAgICAgKiAgICAgICBcImNvdW50XCI6IDFcbiAgICAgICAqICAgICB9XG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgcG9saWN5PzogdW5rbm93bltdIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBXcmFwcGVyIGFyb3VuZCBlbmNyeXB0ZWQgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIGJ5dGVzLlxuICAgICAqXG4gICAgICogV2Ugc2VyaWFsaXplIHRoaXMgaW50byBhIGJhc2U2NHVybC1lbmNvZGVkIHN0cmluZyBhbmQgcmV0dXJuIHRvIHRoZSB1c2VyXG4gICAgICogc28gdGhhdCB0aGV5IGNhbiBwYXNzIHRoaXMgYmFjayB0byB1cyBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICovXG4gICAgTGFzdEV2YWxLZXk6IHN0cmluZztcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoaXJkLXBhcnR5IGlkZW50aXRpZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSB1c2VyJ3MgYWNjb3VudCAqL1xuICAgIExpc3RJZGVudGl0aWVzUmVzcG9uc2U6IHtcbiAgICAgIGlkZW50aXRpZXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRlbnRpdHlJbmZvXCJdW107XG4gICAgfTtcbiAgICBMaXN0TWZhUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIHBlbmRpbmcgTUZBIHJlcXVlc3RzICovXG4gICAgICBtZmFfcmVxdWVzdHM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhUmVxdWVzdEluZm9cIl1bXTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIHBlbmRpbmcgTU1JIHJlcXVlc3RzIGNyZWF0ZWQgYnkgdGhlIGN1cnJlbnQgdXNlci4gKi9cbiAgICBMaXN0UGVuZGluZ01lc3NhZ2VzUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIHBlbmRpbmcgbWVzc2FnZXMgZm9yIGEgdXNlci4gKi9cbiAgICAgIHBlbmRpbmdfbWVzc2FnZXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUGVuZGluZ01lc3NhZ2VJbmZvXCJdW107XG4gICAgfTtcbiAgICBMb2dpblJlcXVlc3Q6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT2lkY0xvZ2luUmVxdWVzdFwiXTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVzY3JpYmVzIHdoZXRoZXIgYSB1c2VyIGluIGFuIG9yZyBpcyBhbiBPd25lciBvciBqdXN0IGEgcmVndWxhciBtZW1iZXJcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIE1lbWJlclJvbGU6IFwiQWxpZW5cIiB8IFwiTWVtYmVyXCIgfCBcIk93bmVyXCI7XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgTWVtYmVyc2hpcFN0YXR1czogXCJlbmFibGVkXCIgfCBcImRpc2FibGVkXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmFtZSBvZiB0aGUgbWV0cmljIHRvIGNvbXB1dGUgKi9cbiAgICBNZXRyaWNOYW1lOlxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9yZ01ldHJpY0Rpc2NyaW1pbmFudHNcIl1cbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUc1F1ZXJ5TmFtZVwiXTtcbiAgICAvKipcbiAgICAgKiBAZXhhbXBsZSB7XG4gICAgICogICBcImFsbG93ZWRfYXBwcm92ZXJzXCI6IFtcbiAgICAgKiAgICAgXCJVc2VyI2ZhYmMzZjg4LTA0ZTAtNDcxYi05NjU3LTBhZTEyYTNjZDczZVwiLFxuICAgICAqICAgICBcIlVzZXIjZDc5NmMzNjktOTk3NC00NzNiLWFiOWUtZTRhMjQxOGQyZDA3XCJcbiAgICAgKiAgIF0sXG4gICAgICogICBcImNvdW50XCI6IDIsXG4gICAgICogICBcImxpZmV0aW1lXCI6IDkwMFxuICAgICAqIH1cbiAgICAgKi9cbiAgICBNZmFQb2xpY3k6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVXNlcnMgd2hvIGFyZSBhbGxvd2VkIHRvIGFwcHJvdmUuIElmIGVtcHR5IGF0IGNyZWF0aW9uIHRpbWUsIGRlZmF1bHQgdG8gdGhlIGN1cnJlbnQgdXNlci4gKi9cbiAgICAgIGFsbG93ZWRfYXBwcm92ZXJzPzogc3RyaW5nW107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbG93ZWQgYXBwcm92YWwgdHlwZXMuIFdoZW4gb21pdHRlZCwgZGVmYXVsdHMgdG8gYW55LiAqL1xuICAgICAgYWxsb3dlZF9tZmFfdHlwZXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVR5cGVcIl1bXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBIb3cgbWFueSB1c2VycyB0byByZXF1aXJlIHRvIGFwcHJvdmUgKGRlZmF1bHRzIHRvIDEpLlxuICAgICAgICovXG4gICAgICBjb3VudD86IG51bWJlcjtcbiAgICAgIGxpZmV0aW1lPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNvbmRzXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSG93IG1hbnkgYXV0aCBmYWN0b3JzIHRvIHJlcXVpcmUgcGVyIHVzZXIgKGRlZmF1bHRzIHRvIDEpLlxuICAgICAgICovXG4gICAgICBudW1fYXV0aF9mYWN0b3JzPzogbnVtYmVyO1xuICAgICAgcmVxdWVzdF9jb21wYXJlcj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSHR0cFJlcXVlc3RDbXBcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDdWJlU2lnbmVyIG9wZXJhdGlvbnMgdG8gd2hpY2ggdGhpcyBwb2xpY3kgc2hvdWxkIGFwcGx5LlxuICAgICAgICogV2hlbiBvbWl0dGVkLCBhcHBsaWVzIHRvIGFsbCBvcGVyYXRpb25zLlxuICAgICAgICovXG4gICAgICByZXN0cmljdGVkX29wZXJhdGlvbnM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9wZXJhdGlvbktpbmRcIl1bXSB8IG51bGw7XG4gICAgICB0aW1lX2RlbGF5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNvbmRzXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIE1GQS1wcm90ZWN0ZWQgYWN0aW9ucyB3aG9zZSBNRkEgcmVxdWlyZW1lbnRzIGFyZSBjb25maWd1cmFibGUgYnkgb3JnIG93bmVycy5cbiAgICAgKlxuICAgICAqIFNwZWNpZnlpbmcgdGhlICdDdWJlU2lnbmVyJyBNRkEgdHlwZSBpcyBuZXZlciBhbGxvd2VkIGZvciBhbnkgb2YgdGhlc2UgYWN0aW9ucy5cbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIE1mYVByb3RlY3RlZEFjdGlvbjpcbiAgICAgIHwgXCJEZWZhdWx0XCJcbiAgICAgIHwgXCJSZWdpc3Rlck1mYVwiXG4gICAgICB8IFwiTG9naW5cIlxuICAgICAgfCBcIkV4dGVuZFNlc3Npb25cIlxuICAgICAgfCBcIkFkZElkZW50aXR5XCJcbiAgICAgIHwgXCJLZXlFeHBvcnRcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJldHVybmVkIGFzIGEgcmVzcG9uc2UgZnJvbSBtdWx0aXBsZSByb3V0ZXMgKGUuZy4sICdnZXQgbWZhJywgJ2FwcHJvdmUgbWZhJywgJ2FwcHJvdmUgdG90cCcpLiAqL1xuICAgIE1mYVJlcXVlc3RJbmZvOiB7XG4gICAgICBjcmVhdGVkX2F0PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgc2Vzc2lvbiBpZGVudGl0eSAodXNlciBvciByb2xlKSB0aGF0IGNyZWF0ZWQgdGhpcyByZXF1ZXN0LiAqL1xuICAgICAgY3JlYXRlZF9ieTogc3RyaW5nO1xuICAgICAgZXhwaXJlc19hdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBcHByb3ZhbCByZXF1ZXN0IElELiAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIG5vdF92YWxpZF91bnRpbD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE1GQSBwb2xpY3kgcHJvdmVuYW5jZVxuICAgICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgICAqL1xuICAgICAgcHJvdmVuYW5jZTogXCJLZXlcIiB8IFwiS2V5SW5Sb2xlXCIgfCBcIlJvbGVcIiB8IFwiVXNlclwiIHwgXCJFZGl0UG9saWN5XCI7XG4gICAgICByZWNlaXB0PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSZWNlaXB0XCJdIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlZ2lvbiB0aGlzIE1GQSByZXF1ZXN0IHdhcyBjcmVhdGVkIGluLiAgSXQgY2FuIG9ubHkgYmUgcmVkZWVtZWQgZnJvbSB0aGUgc2FtZSByZWdpb24uICovXG4gICAgICByZWdpb24/OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIGNvbnRhaW5zIHRoZSBJRHMgb2YgYWxsIE1GQSByZXF1ZXN0cyAoaW5jbHVkaW5nIHRoaXMgb25lISkgdGhhdFxuICAgICAgICogd2VyZSBnZW5lcmF0ZWQgYXQgb25jZSBmb3IgdGhlIHNhbWUgQ3ViZVNpZ25lciBvcGVyYXRpb24uXG4gICAgICAgKlxuICAgICAgICogSWYgbm90IHNldCwgaXQgbWVhbnMgdGhhdCB0aGlzIHdhcyB0aGUgbG9uZSBNRkEgcmVxdWVzdCBnZW5lcmF0ZWQgZm9yIGByZXF1ZXN0YC5cbiAgICAgICAqXG4gICAgICAgKiBUaGlzIGlzIHVzZWZ1bCBzbyB0aGF0IGEgY2xpZW50IGNhbiBkaXNjb3ZlciBhbGwgdGhlIE1GQXMgd2hvc2UgcmVjZWlwdHMgbXVzdFxuICAgICAgICogYmUgc3VibWl0dGVkIHRvZ2V0aGVyIHRvIGNhcnJ5IG91dCB0aGUgb3JpZ2luYWwgQ3ViZVNpZ25lciBvcGVyYXRpb24uXG4gICAgICAgKi9cbiAgICAgIHJlbGF0ZWRfaWRzPzogc3RyaW5nW107XG4gICAgICByZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkh0dHBSZXF1ZXN0XCJdO1xuICAgICAgc3RhdHVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlN0YXR1c1wiXTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gT3JnLXdpZGUgTUZBIHJlcXVpcmVtZW50cy4gKi9cbiAgICBNZmFSZXF1aXJlbWVudHM6IHtcbiAgICAgIGFsaWVuX2xvZ2luX3JlcXVpcmVtZW50PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNvbmRGYWN0b3JSZXF1aXJlbWVudFwiXTtcbiAgICAgIGFsbG93ZWRfbWZhX3R5cGVzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBbGxvd2VkTWZhTWFwXCJdO1xuICAgICAga2V5X2V4cG9ydF9yZXF1aXJlbWVudD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kRmFjdG9yUmVxdWlyZW1lbnRcIl07XG4gICAgICBtZW1iZXJfbG9naW5fcmVxdWlyZW1lbnQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlY29uZEZhY3RvclJlcXVpcmVtZW50XCJdO1xuICAgIH07XG4gICAgTWZhUmVzZXRSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIHVzZXIgeW91IHdhbnQgdG8gcmVzZXQgTUZBIGZvclxuICAgICAgICogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGZcbiAgICAgICAqL1xuICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogRm9ybWF0OiAnQ3ViZVNpZ25lcicgfCAnRmlkbycgfCBgRmlkb0tleSMke3N0cmluZ31gIHwgJ1RvdHAnIHwgJ0VtYWlsT3RwJyB8IGBFbWFpbE90cCMke251bWJlcn1gXG4gICAgICogQGRlc2NyaXB0aW9uIERpZmZlcmVudCB0eXBlcyB0aGF0IGNhbiBiZSB1c2VkIHRvIGFwcHJvdmUgYW4gTUZBIHJlcXVlc3RcbiAgICAgKi9cbiAgICBNZmFUeXBlOiBzdHJpbmc7XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgTWZhVm90ZTogXCJhcHByb3ZlXCIgfCBcInJlamVjdFwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gaW5kaXZpZHVhbCBpdGVtIGluIGEgTWlncmF0ZUlkZW50aXR5UmVxdWVzdCAqL1xuICAgIE1pZ3JhdGVJZGVudGl0eUl0ZW06IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT2lkY0lkZW50aXR5XCJdICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIHVzZXIgeW91IHdhbnQgdG8gb3BlcmF0ZSBvbiAqL1xuICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHJlcXVlc3QgdG8gYWRkIG9yIHJlbW92ZSBhbiBPSURDIGlkZW50aXRpZXMgZm9yIGFuIGV4aXN0aW5nIHVzZXIgKi9cbiAgICBNaWdyYXRlSWRlbnRpdHlSZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1pZ3JhdGVJZGVudGl0eUl0ZW1cIl1bXTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgcmVxdWVzdCB0byB1cGRhdGUgYW4gZXhpc3RpbmcgdXNlci4gKi9cbiAgICBNaWdyYXRlVXBkYXRlVXNlckl0ZW06IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSB1c2VyIHlvdSB3YW50IHRvIG9wZXJhdGUgb24gKi9cbiAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE92ZXJyaWRlIHVzZXIncyB2ZXJpZmllZCBlbWFpbCBpbiB0aGlzIG9yZy4gVXNlIGFuIGVtcHR5IHN0cmluZyB0byBpbmRpY2F0ZSB0aGF0IHRoaXMgdXNlcidzXG4gICAgICAgKiB2ZXJpZmllZCBlbWFpbCBzaG91bGQgYmUgY2xlYXJlZCAoYW5kIGZhbGxiYWNrIHRvIHRoZWlyIGRpc3BsYXkgZW1haWwpLlxuICAgICAgICovXG4gICAgICB2ZXJpZmllZF9lbWFpbD86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICBNaWdyYXRlVXBkYXRlVXNlcnNSZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1pZ3JhdGVVcGRhdGVVc2VySXRlbVwiXVtdO1xuICAgIE1taU1ldGFkYXRhOiAoY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNbWlNZXRhZGF0YUV4dFwiXSB8IG51bGwpICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBDaGFpbiBJRCAobm90IHJlcXVpcmVkIHdoZW4gc2lnbmluZyBhIHBlcnNvbmFsIG1lc3NhZ2UgKEVJUC0xOTEpKSAqL1xuICAgICAgY2hhaW5JZD86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIElmIHRoZSBjdXN0b2RpYW4gc2hvdWxkIHB1Ymxpc2ggdGhlIHRyYW5zYWN0aW9uICovXG4gICAgICBjdXN0b2RpYW5QdWJsaXNoZXNUcmFuc2FjdGlvbj86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIG5vdGUgdG8gYmUgYXR0YWNoZWQgdG8gdGhlIHRyYW5zYWN0aW9uIHdoaWNoIGNhbiBiZSBzcGVjaWZpZWQgYnkgdGhlIHVzZXIgKi9cbiAgICAgIG5vdGU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgd2ViIHBhZ2UvZGFwcCB3aGVyZSB0aGUgdHJhbnNhY3Rpb24gb3JpZ2luYXRlZCAqL1xuICAgICAgb3JpZ2luVXJsPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVXNlcidzIHByZWZlcnJlZCBSUEMgVVJMLCBhbmQgaXQgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBSUEMgVVJMIGZvciB0aGUgbmV0d29yayBjb3JyZXNwb25kaW5nIHRvIHRoZSBDaGFpbiBJRCAqL1xuICAgICAgcnBjVXJsPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGNhdGVnb3J5IG9mIHRyYW5zYWN0aW9uLCBhcyBiZXN0IGNhbiBiZSBkZXRlcm1pbmVkIGJ5IHRoZSB3YWxsZXQgKi9cbiAgICAgIHRyYW5zYWN0aW9uQ2F0ZWdvcnk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgTW1pTWV0YWRhdGFFeHQ6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFsbCBhY2NvdW50cyB0aGUgdXNlciBjYW4gYWNjZXNzLlxuICAgICAgICogT25seSBzZXQgd2hlbiByZXF1ZXN0ZWQgZXhwbGljaXRseSwgaS5lLiwgdmlhICdjdXN0b21lcl9saXN0QWNjb3VudHNTaWduZWQnLlxuICAgICAgICovXG4gICAgICBhY2NvdW50cz86XG4gICAgICAgIHwge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gQW4gRXRoZXJldW0gYWRkcmVzcywgaGV4LWVuY29kZWQsIHdpdGggbGVhZGluZyAnMHgnXG4gICAgICAgICAgICAgKiBAZXhhbXBsZSAweDAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYWRkcmVzczogc3RyaW5nO1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBY2NvdW50IG1ldGFkYXRhICovXG4gICAgICAgICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFjY291bnQgbmFtZSAqL1xuICAgICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcmRlcmVkIGxpc3Qgb2YgbmFtZS12YWx1ZSBwYWlycyAqL1xuICAgICAgICAgICAgdGFncz86IHtcbiAgICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUYWcgbmFtZSAqL1xuICAgICAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGFnIHZhbHVlICovXG4gICAgICAgICAgICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgICAgICAgICB9W107XG4gICAgICAgICAgfVtdXG4gICAgICAgIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGN1c3RvbWVyIElEIG9mIHRoZSB1c2VyLCBpLmUuLCB0aGUgY3VzdG9tZXIncyBvcmdhbml6YXRpb24gSUQuICovXG4gICAgICBjdXN0b21lcklkOiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIGh1bWFuIHJlYWRhYmxlIG5hbWUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgb3JnYW5pemF0aW9uLCBpZiBhbnkuICovXG4gICAgICBjdXN0b21lck5hbWU6IHN0cmluZyB8IG51bGw7XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgbXVzdCBtYXRjaCB0aGUgYHN1YmAgY2xhaW0gb2YgdGhlIGN1c3RvbWVyIHByb29mIG9mXG4gICAgICAgKiB0aGUgdXNlciBvciByb2xlIHNlc3Npb24gd2hpY2ggY3JlYXRlZCB0aGUgdHJhbnNhY3Rpb24uXG4gICAgICAgKi9cbiAgICAgIHVzZXJJZDogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIE1taVJlamVjdFJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcmVhc29uIGZvciByZWplY3RpbmcuICovXG4gICAgICByZWFzb24/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgTW1pU3RhdHVzOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFNob3J0IHRleHQgdG8gZGlzcGxheSB0byB0aGUgdXNlciAqL1xuICAgICAgZGlzcGxheVRleHQ6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGUgc2lnbmVkIG1lc3NhZ2UgaGFzIGZpbmlzaGVkLCBlLmcuIGl0IGlzIGNvbXBsZXRlZCwgZmFpbGVkIG9yIGNhbmNlbGxlZCAqL1xuICAgICAgZmluaXNoZWQ6IGJvb2xlYW47XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZWFzb24gZm9yIHRoZSBzaWduZWQgbWVzc2FnZSBzdGF0dXMgKi9cbiAgICAgIHJlYXNvbj86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlIG1lc3NhZ2Ugd2FzIHNpZ25lZCAqL1xuICAgICAgc2lnbmVkOiBib29sZWFuO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRoZSB0cmFuc2FjdGlvbiB3YXMgc3VibWl0dGVkIHRvIHRoZSBibG9ja2NoYWluICovXG4gICAgICBzdWJtaXR0ZWQ/OiBib29sZWFuO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRoZSB0cmFuc2FjdGlvbiB3YXMgc3VjY2Vzc2Z1bCwgaS5lLiBpdCB3YXMgaW5jbHVkZWQgaW4gYSBibG9jayBhbmQgbm90IHJldmVydGVkICovXG4gICAgICBzdWNjZXNzOiBib29sZWFuO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBJbmZvcm1hdGlvbiBhYm91dCBhIHNpZ25lZCBtZXNzYWdlICovXG4gICAgTXNnU2lnbmF0dXJlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBzaWduYXR1cmUgKi9cbiAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHN0cnVjdCByZXByZXNlbnRpbmcgdGhlIHBlbmRpbmcgbWVzc2FnZSBzdGF0dXMgKi9cbiAgICBNc2dTdGF0dXM6XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBzdGF0dXM6IFwiUGVuZGluZ1wiO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIGFib3V0IGEgc2lnbmVkIG1lc3NhZ2UgKi9cbiAgICAgICAgICBzaWc6IHtcbiAgICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHNpZ25hdHVyZSAqL1xuICAgICAgICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgICAgICAgfTtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBzdGF0dXM6IFwiU2lnbmVkXCI7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIHJlYXNvbjogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIHN0YXR1czogXCJSZWplY3RlZFwiO1xuICAgICAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBOZXR3b3JrIG5hbWUgKCdtYWlubmV0JywgJ2hvbGVza3knKVxuICAgICAqIEBleGFtcGxlIGhvbGVza3lcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIE5ldHdvcms6IFwibWFpbm5ldFwiIHwgXCJob2xlc2t5XCIgfCBcImhvb2RpXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBJbmZvcm1hdGlvbiBhYm91dCBhIG5ldyBzZXNzaW9uLCByZXR1cm5lZCBmcm9tIG11bHRpcGxlIGVuZHBvaW50cyAoZS5nLiwgbG9naW4sIHJlZnJlc2gsIGV0Yy4pLiAqL1xuICAgIE5ld1Nlc3Npb25SZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gU2Vzc2lvbiBleHBpcmF0aW9uIChpbiBzZWNvbmRzIHNpbmNlIFVOSVggZXBvY2gpLCBiZXlvbmQgd2hpY2ggaXQgY2Fubm90IGJlIHJlZnJlc2hlZC5cbiAgICAgICAqIEBleGFtcGxlIDE3MDE4Nzk2NDBcbiAgICAgICAqL1xuICAgICAgZXhwaXJhdGlvbj86IG51bWJlcjtcbiAgICAgIG9yZ19pZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl0gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUb2tlbiB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlZnJlc2ggdGhpcyBzZXNzaW9uLiAqL1xuICAgICAgcmVmcmVzaF90b2tlbjogc3RyaW5nO1xuICAgICAgc2Vzc2lvbl9pbmZvOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNsaWVudFNlc3Npb25JbmZvXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTmV3IHRva2VuIHRvIGJlIHVzZWQgZm9yIGF1dGhlbnRpY2F0aW9uLiBSZXF1ZXN0cyB0byBzaWduaW5nIGVuZHBvaW50c1xuICAgICAgICogc2hvdWxkIGluY2x1ZGUgdGhpcyB2YWx1ZSBpbiB0aGUgYEF1dGhvcml6YXRpb25gIGhlYWRlci5cbiAgICAgICAqL1xuICAgICAgdG9rZW46IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBGb3JtYXQ6IGJpbmFyeSAqL1xuICAgIE5vbmNlVmFsdWU6IHN0cmluZztcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBOb3RGb3VuZEVycm9yQ29kZTpcbiAgICAgIHwgXCJVcmlTZWdtZW50TWlzc2luZ1wiXG4gICAgICB8IFwiVXJpU2VnbWVudEludmFsaWRcIlxuICAgICAgfCBcIlRvdHBOb3RDb25maWd1cmVkXCJcbiAgICAgIHwgXCJGaWRvS2V5Tm90Rm91bmRcIlxuICAgICAgfCBcIkZpZG9DaGFsbGVuZ2VOb3RGb3VuZFwiXG4gICAgICB8IFwiVG90cENoYWxsZW5nZU5vdEZvdW5kXCJcbiAgICAgIHwgXCJVc2VyRXhwb3J0UmVxdWVzdE5vdEZvdW5kXCJcbiAgICAgIHwgXCJVc2VyRXhwb3J0Q2lwaGVydGV4dE5vdEZvdW5kXCJcbiAgICAgIHwgXCJPcmdFeHBvcnRDaXBoZXJ0ZXh0Tm90Rm91bmRcIlxuICAgICAgfCBcIlVwbG9hZE9iamVjdE5vdEZvdW5kXCJcbiAgICAgIHwgXCJQb2xpY3lTZWNyZXROb3RGb3VuZFwiXG4gICAgICB8IFwiVGltZXN0cmVhbURpc2FibGVkXCJcbiAgICAgIHwgXCJDdXN0b21DaGFpbk5vdEZvdW5kXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgY29uZmlndXJhdGlvbiBhbmQgc3RhdHVzIG9mIGEgbm90aWZpY2F0aW9uIGVuZHBvaW50ICovXG4gICAgTm90aWZpY2F0aW9uRW5kcG9pbnQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTm90aWZpY2F0aW9uRW5kcG9pbnRTdWJzY3JpcHRpb25cIl0gJiB7XG4gICAgICBzdGF0dXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU3Vic2NyaXB0aW9uU3RhdHVzXCJdO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgY29uZmlndXJhdGlvbiBmb3IgYW4gb3JnIGV2ZW50IGVuZHBvaW50ICovXG4gICAgTm90aWZpY2F0aW9uRW5kcG9pbnRDb25maWd1cmF0aW9uOiB7XG4gICAgICBmaWx0ZXI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9yZ0V2ZW50RmlsdGVyXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBVUkwgb2YgdGhlIGVuZHBvaW50ICovXG4gICAgICB1cmw6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSBub3RpZmljYXRpb24gZW5kcG9pbnQgc3Vic2NyaXB0aW9uICovXG4gICAgTm90aWZpY2F0aW9uRW5kcG9pbnRTdWJzY3JpcHRpb246IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIEFSTiBvZiB0aGUgc3Vic2NyaXB0aW9uICovXG4gICAgICBhcm46IHN0cmluZztcbiAgICAgIGNvbmZpZzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJOb3RpZmljYXRpb25FbmRwb2ludENvbmZpZ3VyYXRpb25cIl07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgdGhlIGRhdGEgZXh0cmFjdGVkIGZyb20gdGhlIE9JREMgdG9rZW4gKi9cbiAgICBPaWRjQ2xhaW1zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9pZGNVc2VySW5mb1wiXSAmXG4gICAgICBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9pZGNJZGVudGl0eVwiXSAmIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBBdWRpZW5jZShzKSB0aGF0IHRoaXMgSUQgVG9rZW4gaXMgaW50ZW5kZWQgZm9yLiBJdCBNVVNUIGNvbnRhaW4gdGhlXG4gICAgICAgICAqIE9BdXRoIDIuMCBjbGllbnRfaWQgb2YgdGhlIFJlbHlpbmcgUGFydHkgYXMgYW4gYXVkaWVuY2UgdmFsdWUuIEl0IE1BWVxuICAgICAgICAgKiBhbHNvIGNvbnRhaW4gaWRlbnRpZmllcnMgZm9yIG90aGVyIGF1ZGllbmNlcy5cbiAgICAgICAgICogVGhpcyB2YWx1ZSBpcyBvcGFxdWUgYWNjb3JkaW5nIHRvIHRoZSBPSURDIHNwZWMsIGJ1dCBmb3IgZXhhbXBsZSBHb29nbGVcbiAgICAgICAgICogYXVkaWVuY2VzIGxvb2sgbGlrZSBgMTIzNDk4NzgxOTIwMC5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbWBcbiAgICAgICAgICogQGV4YW1wbGUgMTIzNDk4NzgxOTIwMC5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbVxuICAgICAgICAgKi9cbiAgICAgICAgYXVkOiBzdHJpbmc7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gb3B0aW9uYWwgcmVzdHJpY3Rpb24gb24gdGhlIHNldCBvZiBzY29wZXMgYWxsb3dlZCB3aXRoIHRoaXMgdG9rZW4gKi9cbiAgICAgICAgY3ViZXNpZ25lcl9zY29wZV9jZWlsaW5nPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTY29wZVwiXVtdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgYSBnbG9iYWxseSB1bmlxdWUgT0lEQy1hdXRob3JpemVkIHVzZXIgYnkgZXhwcmVzc2luZyB0aGUgZnVsbCBcInBhdGhcIiB0byBhIHVzZXIuIFRoYXQgaXM6XG4gICAgICpcbiAgICAgKiAoaXNzKSAgICAgICAoc3ViKVxuICAgICAqIElzc3VlciAtPiBTdWJyZXNvdXJjZVxuICAgICAqL1xuICAgIE9pZGNJZGVudGl0eToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHJvb3QtbGV2ZWwgaXNzdWVyIHdobyBhZG1pbmlzdHJhdGVzIHRoaXMgdXNlci4gRnJvbSB0aGUgT0lEQyBzcGVjOlxuICAgICAgICogSXNzdWVyIElkZW50aWZpZXIgZm9yIHRoZSBJc3N1ZXIgb2YgdGhlIHJlc3BvbnNlLiBUaGUgaXNzXG4gICAgICAgKiB2YWx1ZSBpcyBhIGNhc2Ugc2Vuc2l0aXZlIFVSTCB1c2luZyB0aGUgaHR0cHMgc2NoZW1lIHRoYXQgY29udGFpbnNcbiAgICAgICAqIHNjaGVtZSwgaG9zdCwgYW5kIG9wdGlvbmFsbHksIHBvcnQgbnVtYmVyIGFuZCBwYXRoIGNvbXBvbmVudHMgYW5kXG4gICAgICAgKiBubyBxdWVyeSBvciBmcmFnbWVudCBjb21wb25lbnRzLlxuICAgICAgICogQGV4YW1wbGUgaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tXG4gICAgICAgKi9cbiAgICAgIGlzczogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gRnJvbSB0aGUgT0lEQyBzcGVjOlxuICAgICAgICpcbiAgICAgICAqIEEgbG9jYWxseSB1bmlxdWUgYW5kIG5ldmVyIHJlYXNzaWduZWQgaWRlbnRpZmllciB3aXRoaW4gdGhlIElzc3VlciBmb3JcbiAgICAgICAqIHRoZSBFbmQtVXNlciwgd2hpY2ggaXMgaW50ZW5kZWQgdG8gYmUgY29uc3VtZWQgYnkgdGhlIENsaWVudCwgZS5nLixcbiAgICAgICAqIDI0NDAwMzIwIG9yIEFJdE9hd213dFd3Y1QwazUxQmF5ZXdOdnV0ckpVcXN2bDZxczdBNC4gSXQgTVVTVCBOT1QgZXhjZWVkXG4gICAgICAgKiAyNTUgQVNDSUkgY2hhcmFjdGVycyBpbiBsZW5ndGguIFRoZSBzdWIgdmFsdWUgaXMgYSBjYXNlIHNlbnNpdGl2ZVxuICAgICAgICogc3RyaW5nLlxuICAgICAgICogQGV4YW1wbGUgMTA3NjkxNTAzNTAwMDYxNTA3MTUxMTMwODIzNjdcbiAgICAgICAqL1xuICAgICAgc3ViOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIGFib3V0IGFuIGV4cGxpY2l0bHkgY29uZmlndXJlZCAoYWxsb3dsaXN0ZWQpIE9wZW5JRCBwcm92aWRlciBmb3IgYW4gb3JnICovXG4gICAgT2lkY0lzc3VlckluZm86IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSW50ZW5kZWQgYXVkaWVuY2VzIChjbGllbnQgSURzKSAqL1xuICAgICAgYXVkaWVuY2VzOiBzdHJpbmdbXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSXNzdWVyIFVSTCAqL1xuICAgICAgaXNzdWVyOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIGlzc3VlciBuaWNrbmFtZSAqL1xuICAgICAgbmlja25hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdXNlciByb2xlcyBhbGxvd2VkIHRvIHVzZSB0aGlzIElEUCAqL1xuICAgICAgdXNlcnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyUm9sZVwiXVtdO1xuICAgIH07XG4gICAgT2lkY0xvZ2luRGltZW5zaW9uczoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgT0lEQyBpc3N1ZXIgKHByb3ZpZGVyKSAqL1xuICAgICAgaXNzdWVyOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBtZXRyaWNzIG11c3QgaW5jbHVkZSAnb3JnX2lkJyBhcyBhIGRpbWVuc2lvbi4gKi9cbiAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBPSURDIGxvZ2luIHJlcXVlc3QgKi9cbiAgICBPaWRjTG9naW5SZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNsaWVudFNlc3Npb25NZXRhZGF0YVwiXSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQSBodW1hbiByZWFkYWJsZSBkZXNjcmlwdGlvbiBvZiB0aGUgcHVycG9zZSBvZiB0aGUgc2Vzc2lvbiAqL1xuICAgICAgcHVycG9zZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDb250cm9scyB3aGF0IGNhcGFiaWxpdGllcyB0aGlzIHNlc3Npb24gd2lsbCBoYXZlLlxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICBcInNpZ246KlwiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHNjb3BlczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTY29wZVwiXVtdO1xuICAgICAgdG9rZW5zPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSYXRjaGV0Q29uZmlnXCJdO1xuICAgIH07XG4gICAgT2lkY1VzZXJJbmZvOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZW1haWwgYXNzb2NpYXRlZCB3aXRoIHRoZSB1c2VyXG4gICAgICAgKiBAZXhhbXBsZSB1c2VyQGVtYWlsLmNvbVxuICAgICAgICovXG4gICAgICBlbWFpbD86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdXNlciBuYW1lIChpZiBhbnkpIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXNlclxuICAgICAgICogQGV4YW1wbGUgZHJpbFxuICAgICAgICovXG4gICAgICBwcmVmZXJyZWRfdXNlcm5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEFsbCBkaWZmZXJlbnQga2luZHMgb2Ygc2Vuc2l0aXZlIG9wZXJhdGlvbnNcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIE9wZXJhdGlvbktpbmQ6XG4gICAgICB8IFwiQXZhU2lnblwiXG4gICAgICB8IFwiQXZhQ2hhaW5UeFNpZ25cIlxuICAgICAgfCBcIkJhYnlsb25Db3ZTaWduXCJcbiAgICAgIHwgXCJCYWJ5bG9uUmVnaXN0cmF0aW9uXCJcbiAgICAgIHwgXCJCYWJ5bG9uU3Rha2luZ1wiXG4gICAgICB8IFwiQmxvYlNpZ25cIlxuICAgICAgfCBcIkJ0Y01lc3NhZ2VTaWduXCJcbiAgICAgIHwgXCJCdGNTaWduXCJcbiAgICAgIHwgXCJEaWZmaWVIZWxsbWFuXCJcbiAgICAgIHwgXCJQc2J0U2lnblwiXG4gICAgICB8IFwiVGFwcm9vdFNpZ25cIlxuICAgICAgfCBcIkVpcDE5MVNpZ25cIlxuICAgICAgfCBcIkVpcDcxMlNpZ25cIlxuICAgICAgfCBcIkVvdHNOb25jZXNcIlxuICAgICAgfCBcIkVvdHNTaWduXCJcbiAgICAgIHwgXCJFdGgxU2lnblwiXG4gICAgICB8IFwiRXRoMlNpZ25cIlxuICAgICAgfCBcIkV0aDJTdGFrZVwiXG4gICAgICB8IFwiRXRoMlVuc3Rha2VcIlxuICAgICAgfCBcIlNvbGFuYVNpZ25cIlxuICAgICAgfCBcIlN1aVNpZ25cIlxuICAgICAgfCBcIlRlbmRlcm1pbnRTaWduXCJcbiAgICAgIHwgXCJSb2xlVXBkYXRlXCI7XG4gICAgT3JnQWxlcnRzUHJlZnM6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gUmVjaXBpZW50IHVzZXJzIGZvciBvcmctbGV2ZWwgYWxlcnRzICovXG4gICAgICBhbGVydF9yZWNpcGllbnRzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXVtdIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3JnLWxldmVsIGFsZXJ0cyB0byBzZW5kIGVtYWlscyBmb3IgKi9cbiAgICAgIHN1YnNjcmliZWRfYWxlcnRzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBbGVydEtpbmRcIl1bXSB8IG51bGw7XG4gICAgfTtcbiAgICBPcmdEYXRhOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIG9yZ1xuICAgICAgICogQGV4YW1wbGUgT3JnIzEyMy4uLlxuICAgICAgICovXG4gICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgb3JnXG4gICAgICAgKiBAZXhhbXBsZSBteV9vcmdfbmFtZVxuICAgICAgICovXG4gICAgICBvcmdfbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICBPcmdFdmVudEFyZ3M6IHtcbiAgICAgIG9yZ19ldmVudDogXCJPcmdFdmVudEFyZ3NcIjtcbiAgICB9ICYgT21pdDxjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9yZ0V2ZW50RGF0YVwiXSwgXCJvcmdfZXZlbnRcIj4gJiB7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGlkZW50aXR5IHRoYXQgdHJpZ2dlcmVkIHRoZSBldmVudCAqL1xuICAgICAgICB0cmlnZ2VyZWRfYnk6IHN0cmluZztcbiAgICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBPcmctbGV2ZWwgZXZlbnRzIHRoYXQgd2Ugbm90aWZ5IG91ciBjdXN0b21lcnMgYWJvdXQgKi9cbiAgICBPcmdFdmVudERhdGE6XG4gICAgICB8IHtcbiAgICAgICAgICBiaWxsaW5nX2V2ZW50OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJpbGxpbmdFdmVudFwiXTtcbiAgICAgICAgICBrZXk/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdIHwgbnVsbDtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBvcmdfZXZlbnQ6IFwiQmlsbGluZ1wiO1xuICAgICAgICAgIHJvbGU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdIHwgbnVsbDtcbiAgICAgICAgICB1c2VyPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXSB8IG51bGw7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGR1cmF0aW9uIG9mIHRoZSByZXF1ZXN0IGluIG1pbGxpc2Vjb25kc1xuICAgICAgICAgICAqL1xuICAgICAgICAgIGR1cmF0aW9uX21zOiBudW1iZXI7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSFRUUCByZXF1ZXN0IG1ldGhvZCAqL1xuICAgICAgICAgIG1ldGhvZDogc3RyaW5nO1xuICAgICAgICAgIG9wZXJhdGlvbjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCaWxsaW5nRXZlbnRcIl07XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgb3JnX2V2ZW50OiBcIlJlc3BvbnNlXCI7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSFRUUCByZXNwb25zZSBzdGF0dXNcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBzdGF0dXM6IG51bWJlcjtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBIVFRQIHJlcXVlc3QgcGF0aCArIHF1ZXJ5IHBhcmFtZXRlcnMgKi9cbiAgICAgICAgICB1cmk6IHN0cmluZztcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgbWVtYmVyc2hpcDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZW1iZXJSb2xlXCJdO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG9yZ19ldmVudDogXCJPaWRjQXV0aFwiO1xuICAgICAgICAgIHB1cnBvc2U/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIHNjb3BlczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTY29wZVwiXVtdO1xuICAgICAgICAgIHVzZXJfaW5mbzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPaWRjQ2xhaW1zXCJdO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBtYXRlcmlhbCBpZCAoYWRkcmVzcykgb2YgdGhlIGtleSB1c2VkIGZvciBzaWduaW5nICovXG4gICAgICAgICAga2V5X21hdGVyaWFsX2lkOiBzdHJpbmc7XG4gICAgICAgICAga2V5X3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5VHlwZVwiXTtcbiAgICAgICAgICBvcGVyYXRpb246IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT3BlcmF0aW9uS2luZFwiXTtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBvcmdfZXZlbnQ6IFwiU2lnbmVkXCI7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIGNoYWluX2lkOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgICAgICAgIGtleV9pZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXTtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBvcmdfZXZlbnQ6IFwiQmFieWxvbkVvdHNDb25jdXJyZW50U2lnbmluZ1wiO1xuICAgICAgICAgIC8qKiBGb3JtYXQ6IGludDY0ICovXG4gICAgICAgICAgcHJldl9ibG9ja19oZWlnaHQ6IG51bWJlcjtcbiAgICAgICAgICBwcmV2X3NpZ25pbmdfaGFzaDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBGb3JtYXQ6IGludDY0ICovXG4gICAgICAgICAgcmVxX2Jsb2NrX2hlaWdodDogbnVtYmVyO1xuICAgICAgICAgIHJlcV9zaWduaW5nX2hhc2g6IHN0cmluZztcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgYXR0ZXN0YXRpb246IHtcbiAgICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGhhc2ggdGhhdCB3YXMgc2lnbmVkICovXG4gICAgICAgICAgICBzaWduaW5nX3Jvb3Q6IHN0cmluZztcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBhdHRlc3RhdGlvbi5kYXRhLnNvdXJjZS5lcG9jaCBvZiB0aGUgc2lnbmVkIGF0dGVzdGF0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNvdXJjZV9lcG9jaDogbnVtYmVyO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGF0dGVzdGF0aW9uLmRhdGEudGFyZ2V0LmVwb2NoIG9mIHRoZSBzaWduZWQgYXR0ZXN0YXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdGFyZ2V0X2Vwb2NoOiBudW1iZXI7XG4gICAgICAgICAgfTtcbiAgICAgICAgICBrZXk6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICAgICAgbWF0ZXJpYWxfaWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG9yZ19ldmVudDogXCJFdGgyQ29uY3VycmVudEF0dGVzdGF0aW9uU2lnbmluZ1wiO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICBibG9jazoge1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaGFzaCB0aGF0IHdhcyBzaWduZWQgKi9cbiAgICAgICAgICAgIHNpZ25pbmdfcm9vdDogc3RyaW5nO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHNsb3QgbnVtYmVyIG9mIHRoZSBibG9jayB0aGF0IHdhcyBzaWduZWRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2xvdDogbnVtYmVyO1xuICAgICAgICAgIH07XG4gICAgICAgICAga2V5OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgICAgICAgIG1hdGVyaWFsX2lkPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBvcmdfZXZlbnQ6IFwiRXRoMkNvbmN1cnJlbnRCbG9ja1NpZ25pbmdcIjtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgZW5mb3JjZWQ6IGJvb2xlYW47XG4gICAgICAgICAgbGFzdF9zaWduaW5nX3Jvb3Q6IHN0cmluZztcbiAgICAgICAgICAvKiogRm9ybWF0OiBpbnQ2NCAqL1xuICAgICAgICAgIGxhc3Rfc2xvdDogbnVtYmVyO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG9yZ19ldmVudDogXCJFdGgySW52YWxpZEJsb2NrUHJvcG9zZXJTbG90VG9vTG93XCI7XG4gICAgICAgICAgc2lnbmluZ19yb290OiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEZvcm1hdDogaW50NjQgKi9cbiAgICAgICAgICBzbG90OiBudW1iZXI7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIGVuZm9yY2VkOiBib29sZWFuO1xuICAgICAgICAgIGxhc3Rfc2lnbmluZ19yb290OiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEZvcm1hdDogaW50NjQgKi9cbiAgICAgICAgICBsYXN0X3RhcmdldF9lcG9jaDogbnVtYmVyO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG9yZ19ldmVudDogXCJFdGgySW52YWxpZEF0dGVzdGF0aW9uU291cmNlRXBvY2hUb29Mb3dcIjtcbiAgICAgICAgICBzaWduaW5nX3Jvb3Q6IHN0cmluZztcbiAgICAgICAgICAvKiogRm9ybWF0OiBpbnQ2NCAqL1xuICAgICAgICAgIHNvdXJjZV9lcG9jaDogbnVtYmVyO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICBlbmZvcmNlZDogYm9vbGVhbjtcbiAgICAgICAgICBsYXN0X3NpZ25pbmdfcm9vdDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBGb3JtYXQ6IGludDY0ICovXG4gICAgICAgICAgbGFzdF90YXJnZXRfZXBvY2g6IG51bWJlcjtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBvcmdfZXZlbnQ6IFwiRXRoMkludmFsaWRBdHRlc3RhdGlvblRhcmdldEVwb2NoVG9vTG93XCI7XG4gICAgICAgICAgc2lnbmluZ19yb290OiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEZvcm1hdDogaW50NjQgKi9cbiAgICAgICAgICB0YXJnZXRfZXBvY2g6IG51bWJlcjtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgLyoqIEZvcm1hdDogaW50MzIgKi9cbiAgICAgICAgICBkYWlseV91bnN0YWtlX2NvdW50OiBudW1iZXI7XG4gICAgICAgICAga2V5X2lkOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG9yZ19ldmVudDogXCJFdGgyVW5zdGFrZVwiO1xuICAgICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgICAgIC8qKiBGb3JtYXQ6IGludDY0ICovXG4gICAgICAgICAgdmFsaWRhdG9yX2luZGV4OiBudW1iZXI7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIGRhdGU6IHVua25vd247XG4gICAgICAgICAgLyoqIEZvcm1hdDogaW50MzIgKi9cbiAgICAgICAgICBtYXg6IG51bWJlcjtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBvcmdfZXZlbnQ6IFwiRXRoMkV4Y2VlZGVkTWF4VW5zdGFrZVwiO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEtleSBpZHMgKi9cbiAgICAgICAgICBrZXlfaWRzOiBzdHJpbmdbXTtcbiAgICAgICAgICBrZXlfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlUeXBlXCJdO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG9yZ19ldmVudDogXCJLZXlDcmVhdGVkXCI7XG4gICAgICAgICAgb3duZXJfaWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIGFwcHJvdmVkX3dpdGhfbWZhX3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhVHlwZVwiXTtcbiAgICAgICAgICBtZmFfcmVxdWVzdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFSZXF1ZXN0SW5mb1wiXTtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBvcmdfZXZlbnQ6IFwiTWZhQXBwcm92ZWRcIjtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgbWZhX3JlcXVlc3Q6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhUmVxdWVzdEluZm9cIl07XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgb3JnX2V2ZW50OiBcIk1mYVJlamVjdGVkXCI7XG4gICAgICAgICAgcmVqZWN0ZWRfYnk6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICAgICAgcmVqZWN0ZWRfbWZhX2lkPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXSB8IG51bGw7XG4gICAgICAgICAgcmVqZWN0ZWRfd2l0aF9tZmFfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFUeXBlXCJdO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICBjaGFuZ2VkX2J5OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG5ldyBwb2xpY3kgKi9cbiAgICAgICAgICBuZXdfcG9saWN5OiB1bmtub3duW107XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgb3JnX2V2ZW50OiBcIlBvbGljeUNoYW5nZWRcIjtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBDaGFpbiBpZCAqL1xuICAgICAgICAgIGNoYWluX2lkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgcmVxdWVzdCAqL1xuICAgICAgICAgIGN1cnJlbnRfc3RhdGU6IHVua25vd247XG4gICAgICAgICAga2V5X2lkOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHN0YXRlIG9mIHRoZSBsYXN0IHNpZ25lZCBtZXNzYWdlICovXG4gICAgICAgICAgbGFzdF9zdGF0ZTogdW5rbm93bjtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBvcmdfZXZlbnQ6IFwiVGVuZGVybWludENvbmN1cnJlbnRTaWduaW5nXCI7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIGtleV9pZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXTtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBvcmdfZXZlbnQ6IFwiVXNlckV4cG9ydEluaXRcIjtcbiAgICAgICAgICB2YWxpZF9lcG9jaDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICBrZXlfaWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgb3JnX2V2ZW50OiBcIlVzZXJFeHBvcnRDb21wbGV0ZVwiO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBlcnJvciBmcm9tIHRoZSBwb2xpY3kgZW5naW5lICh3aGVuIHJlc3BvbnNlIGlzIGVxdWFsIHRvICdFcnJvcicpICovXG4gICAgICAgICAgZXJyb3I/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIGtleV9pZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl0gfCBudWxsO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG9yZ19ldmVudDogXCJXYXNtUG9saWN5RXhlY3V0ZWRcIjtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFBvbGljeSBuYW1lIG9yIGlkICovXG4gICAgICAgICAgcG9saWN5OiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBQb2xpY3kgaGFzaCAqL1xuICAgICAgICAgIHBvbGljeV9oYXNoOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVhc29uIGZvciB0aGUgZGVuaWFsICh3aGVuIHJlc3BvbnNlIGlzIGVxdWFsIHRvICdEZW55JykgKi9cbiAgICAgICAgICByZWFzb24/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBdXRvLWdlbmVyYXRlZCBkaXNjcmltaW5hbnQgZW51bSB2YXJpYW50c1xuICAgICAgICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICAgICAgICovXG4gICAgICAgICAgcmVzcG9uc2U6IFwiQWxsb3dcIiB8IFwiRGVueVwiIHwgXCJFcnJvclwiO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc291cmNlIG9mIGEgcG9saWN5IGV4ZWN1dGlvbiwgaS5lLiB0aGUgcmVhc29uIGl0IHdhcyBleGVjdXRlZC5cbiAgICAgICAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHNvdXJjZTogXCJTaWduUmVxdWVzdFwiIHwgXCJVc2VySW52b2NhdGlvblwiO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gUG9saWN5IGVycm9yIG91dHB1dCAqL1xuICAgICAgICAgIHN0ZGVycjogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gUG9saWN5IHN0YW5kYXJkIG91dHB1dCAqL1xuICAgICAgICAgIHN0ZG91dDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBdXRvLWdlbmVyYXRlZCBkaXNjcmltaW5hbnQgZW51bSB2YXJpYW50c1xuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgT3JnRXZlbnREaXNjcmltaW5hbnRzOlxuICAgICAgfCBcIkJpbGxpbmdcIlxuICAgICAgfCBcIlJlc3BvbnNlXCJcbiAgICAgIHwgXCJPaWRjQXV0aFwiXG4gICAgICB8IFwiU2lnbmVkXCJcbiAgICAgIHwgXCJCYWJ5bG9uRW90c0NvbmN1cnJlbnRTaWduaW5nXCJcbiAgICAgIHwgXCJFdGgyQ29uY3VycmVudEF0dGVzdGF0aW9uU2lnbmluZ1wiXG4gICAgICB8IFwiRXRoMkNvbmN1cnJlbnRCbG9ja1NpZ25pbmdcIlxuICAgICAgfCBcIkV0aDJJbnZhbGlkQmxvY2tQcm9wb3NlclNsb3RUb29Mb3dcIlxuICAgICAgfCBcIkV0aDJJbnZhbGlkQXR0ZXN0YXRpb25Tb3VyY2VFcG9jaFRvb0xvd1wiXG4gICAgICB8IFwiRXRoMkludmFsaWRBdHRlc3RhdGlvblRhcmdldEVwb2NoVG9vTG93XCJcbiAgICAgIHwgXCJFdGgyVW5zdGFrZVwiXG4gICAgICB8IFwiRXRoMkV4Y2VlZGVkTWF4VW5zdGFrZVwiXG4gICAgICB8IFwiS2V5Q3JlYXRlZFwiXG4gICAgICB8IFwiTWZhQXBwcm92ZWRcIlxuICAgICAgfCBcIk1mYVJlamVjdGVkXCJcbiAgICAgIHwgXCJQb2xpY3lDaGFuZ2VkXCJcbiAgICAgIHwgXCJUZW5kZXJtaW50Q29uY3VycmVudFNpZ25pbmdcIlxuICAgICAgfCBcIlVzZXJFeHBvcnRJbml0XCJcbiAgICAgIHwgXCJVc2VyRXhwb3J0Q29tcGxldGVcIlxuICAgICAgfCBcIldhc21Qb2xpY3lFeGVjdXRlZFwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRmlsdGVyIGZvciBvcmcgZXZlbnRzICovXG4gICAgT3JnRXZlbnRGaWx0ZXI6IE9uZU9mPFxuICAgICAgW1xuICAgICAgICBcIkFsbFwiLFxuICAgICAgICB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBY2NlcHRzIGFsbCBvcmcgZXZlbnRzIG90aGVyIHRoYW4gdGhlIG9uZXMgbGlzdGVkICovXG4gICAgICAgICAgQWxsRXhjZXB0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9yZ0V2ZW50RGlzY3JpbWluYW50c1wiXVtdO1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPbmx5IGFjY2VwdHMgb3JnIGV2ZW50cyB0aGF0IGFyZSBvbmUgb2YgdGhlIGxpc3RlZCBldmVudHMgKi9cbiAgICAgICAgICBPbmVPZjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPcmdFdmVudERpc2NyaW1pbmFudHNcIl1bXTtcbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICA+O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gb3JnLWV4cG9ydCBjaXBoZXJ0ZXh0IHJldHJpZXZlZCB2aWEgdGhlIG9yZy1leHBvcnQgQVBJLiAqL1xuICAgIE9yZ0V4cG9ydFJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEEgYmFzZTY0LWVuY29kZWQgZXhwb3J0IGNpcGhlcnRleHQuICovXG4gICAgICBjaXBoZXJ0ZXh0OiBzdHJpbmc7XG4gICAgfTtcbiAgICBPcmdJbmZvOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVJlcXVpcmVtZW50c1wiXSAmIHtcbiAgICAgIGFjY2Vzc19tb2RlbDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2Nlc3NNb2RlbFwiXTtcbiAgICAgIGN1c3RvbV9jaGFpbnM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkN1c3RvbUNoYWluc0RhdGFcIl0gfCBudWxsO1xuICAgICAgZGVmYXVsdF9pbnZpdGVfa2luZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSW52aXRlS2luZFwiXTtcbiAgICAgIGVtYWlsX3ByZWZlcmVuY2VzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFbWFpbFByZWZlcmVuY2VzXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGVuIGZhbHNlLCBhbGwgY3J5cHRvZ3JhcGhpYyBvcGVyYXRpb25zIGludm9sdmluZyBrZXlzIGluIHRoaXMgb3JnIGFyZSBkaXNhYmxlZC4gKi9cbiAgICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICBleHRfZGF0YT86XG4gICAgICAgIHwgKHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIFBlciBhbGllbiB1c2VyIGtleSBjb3VudCB0aHJlc2hvbGQsIHdoaWNoLCBvbmNlIGV4Y2VlZGVkLCBkaXNhbGxvd3MgZnVydGhlciBrZXkgY3JlYXRpb24gYnkgYWxpZW4gdXNlcnMuXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogVGhpcyBzZXR0aW5nIGlzIGNoZWNrZWQgb25seSB3aGVuIGFuIGFsaWVuIHVzZXIgcmVxdWVzdHMgdG8gY3JlYXRlIG9yIGltcG9ydCBhIG5ldyBrZXkuXG4gICAgICAgICAgICAgKiBJbiBvdGhlciB3b3Jkcywgb3JnIGFkbWlucyBjYW4gc3RpbGwgYXNzaWduIHVubGltaXRlZCBudW1iZXIgb2Yga2V5cyB0byB0aGVpciBhbGllbiB1c2Vycy5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYWxpZW5fa2V5X2NvdW50X3RocmVzaG9sZD86IG51bWJlciB8IG51bGw7XG4gICAgICAgICAgfSAmIHtcbiAgICAgICAgICAgIGNyZWF0ZWQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl0gfCBudWxsO1xuICAgICAgICAgICAgbGFzdF9tb2RpZmllZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXSB8IG51bGw7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBWZXJzaW9uIG9mIHRoaXMgb2JqZWN0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHZlcnNpb24/OiBudW1iZXI7XG4gICAgICAgICAgfSAmIFJlY29yZDxzdHJpbmcsIG5ldmVyPilcbiAgICAgICAgfCBudWxsO1xuICAgICAgaGlzdG9yaWNhbF9kYXRhX2NvbmZpZ3VyYXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkhpc3RvcmljYWxEYXRhQ29uZmlndXJhdGlvblwiXTtcbiAgICAgIGlkcF9jb25maWd1cmF0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZHBDb25maWdcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIERlcHJlY2F0ZWQ6IHRoaXMgZmllbGQgc2hvdWxkIGJlIGlnbm9yZWQuICovXG4gICAgICBrZXlfaW1wb3J0X2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3JnYW5pemF0aW9uJ3MgdW5pdmVyc2FsbHkgdW5pcXVlIGtleS13cmFwcGluZy1rZXkgaWRlbnRpZmllci5cbiAgICAgICAqIFRoaXMgdmFsdWUgaXMgcmVxdWlyZWQgd2hlbiBzZXR0aW5nIHVwIGtleSBleHBvcnQuXG4gICAgICAgKiBAZXhhbXBsZSBtcmstZmNlMDk1MjVlODE1ODdkMjM1MjBmMTFlMDdlMmU5ZDlcbiAgICAgICAqL1xuICAgICAga3drX2lkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBEYXRlL3RpbWUgKGluIFVUQykgd2hlbiBsYXN0ICd1bnN0YWtlJyB3YXMgcGVyZm9ybWVkLiBVbml4IGVwb2NoIGlmIG5vbmUuXG4gICAgICAgKiBAZXhhbXBsZSBUT0RPXG4gICAgICAgKi9cbiAgICAgIGxhc3RfdW5zdGFrZTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSG93IG1hbnkgJ3Vuc3Rha2UnIGNhbGxzIGhhcHBlbmVkIG9uIHRoZSBkYXkgd2hlbiBgbGFzdF91bnN0YWtlYCB3YXMgcGVyZm9ybWVkLlxuICAgICAgICovXG4gICAgICBsYXN0X3Vuc3Rha2VfZGF5X2NvdW50OiBudW1iZXI7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgbWV0cmljcyBhcmUgY29sbGVjdGVkIGZvciB0aGlzIG9yZyAqL1xuICAgICAgbWV0cmljc19lbmFibGVkPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgb3JnXG4gICAgICAgKiBAZXhhbXBsZSBteV9vcmdfbmFtZVxuICAgICAgICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyBub3RpZmljYXRpb24gZW5kcG9pbnRzLCB3aGljaCBhcmUgSFRUUFMgVVJMcyBhcmUgbm90aWZpZWQgYWJvdXQgYVxuICAgICAgICogY29uZmlndXJhYmxlIHNldCBvZiBldmVudHMgaW4gYW4gb3JnYW5pemF0aW9uLiBGb3IgZWFjaCBldmVudCwgQ3ViZVNpZ25lciBzZW5kcyBhIFBPU1RcbiAgICAgICAqIHJlcXVlc3Qgd2l0aCBhIEpTT04tZm9ybWF0dGVkIGJvZHkgdGhhdCBjb250YWlucyB0aGUgZXZlbnQgZGV0YWlscy5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiYXJuXCI6IFwiYXJuOmF3czpzbnM6dXMtZWFzdC0xOjAxMjM0NTY3ODkwMTpPcmdFdmVudHNUb3BpYzoxMjM0NTY3OC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDFcIixcbiAgICAgICAqICAgICBcImNvbmZpZ1wiOiB7XG4gICAgICAgKiAgICAgICBcInVybFwiOiBcImh0dHBzOi8vZXhhbXBsZS5jb20vZW5kcG9pbnQxXCJcbiAgICAgICAqICAgICB9LFxuICAgICAgICogICAgIFwic3RhdHVzXCI6IFwiQ29uZmlybWVkXCJcbiAgICAgICAqICAgfSxcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiYXJuXCI6IFwiYXJuOmF3czpzbnM6dXMtZWFzdC0xOjAxMjM0NTY3ODkwMTpPcmdFdmVudHNUb3BpYzoxMjM0NTY3OC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDJcIixcbiAgICAgICAqICAgICBcImNvbmZpZ1wiOiB7XG4gICAgICAgKiAgICAgICBcImZpbHRlclwiOiB7XG4gICAgICAgKiAgICAgICAgIFwiT25lT2ZcIjogW1xuICAgICAgICogICAgICAgICAgIFwiRXRoMkNvbmN1cnJlbnRBdHRlc3RhdGlvblNpZ25pbmdcIixcbiAgICAgICAqICAgICAgICAgICBcIkV0aDJDb25jdXJyZW50QmxvY2tTaWduaW5nXCJcbiAgICAgICAqICAgICAgICAgXVxuICAgICAgICogICAgICAgfSxcbiAgICAgICAqICAgICAgIFwidXJsXCI6IFwiaHR0cHM6Ly9leGFtcGxlLmNvbS9lbmRwb2ludDJcIlxuICAgICAgICogICAgIH0sXG4gICAgICAgKiAgICAgXCJzdGF0dXNcIjogXCJQZW5kaW5nXCJcbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBub3RpZmljYXRpb25fZW5kcG9pbnRzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJOb3RpZmljYXRpb25FbmRwb2ludFwiXVtdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBvcmdhbml6YXRpb25cbiAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAqL1xuICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICBwYXNza2V5X2NvbmZpZ3VyYXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBhc3NrZXlDb25maWdcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcmctd2lkZSBwb2xpY2llcyB0aGF0IGFyZSBjaGVja2VkIGJlZm9yZSBhIGtleSBpcyB1c2VkIGZvciBzaWduaW5nXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIk1heERhaWx5VW5zdGFrZVwiOiA1XG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W107XG4gICAgICBwb2xpY3lfZW5naW5lX2NvbmZpZ3VyYXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBvbGljeUVuZ2luZUNvbmZpZ3VyYXRpb25cIl07XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3JnYW5pemF0aW9uJ3MgY3VycmVudGx5IGNvbmZpZ3VyZWQgVE9UUCBmYWlsdXJlIGxpbWl0LCBpLmUuLCB0aGUgbnVtYmVyXG4gICAgICAgKiBvZiB0aW1lcyBhIHVzZXIgY2FuIHByb3ZpZGUgYW4gaW5jb3JyZWN0IFRPVFAgY29kZSBiZWZvcmUgYmVpbmcgcmF0ZSBsaW1pdGVkLlxuICAgICAgICogVGhpcyB2YWx1ZSBjYW4gYmUgYmV0d2VlbiAxIGFuZCA1IChpbmNsdXNpdmUpLlxuICAgICAgICovXG4gICAgICB0b3RwX2ZhaWx1cmVfbGltaXQ6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyBjdXJyZW50bHkgY29uZmlndXJlZCB1c2VyLWV4cG9ydCBkZWxheSwgaS5lLiwgdGhlIG1pbmltdW1cbiAgICAgICAqIGFtb3VudCBvZiB0aW1lIChpbiBzZWNvbmRzKSBiZXR3ZWVuIHdoZW4gYSB1c2VyLWV4cG9ydCBpcyBpbml0aWF0ZWQgYW5kIHdoZW5cbiAgICAgICAqIGl0IG1heSBiZSBjb21wbGV0ZWQuIChUaGlzIHZhbHVlIGlzIG1lYW5pbmdsZXNzIGZvciBvcmdhbml6YXRpb25zIHRoYXQgdXNlXG4gICAgICAgKiBvcmctd2lkZSBleHBvcnQuKVxuICAgICAgICovXG4gICAgICB1c2VyX2V4cG9ydF9kZWxheTogbnVtYmVyO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHVzZXIgZXhwb3J0IGlzIGRpc2FibGVkICovXG4gICAgICB1c2VyX2V4cG9ydF9kaXNhYmxlZD86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3JnYW5pemF0aW9uJ3MgY3VycmVudGx5IGNvbmZpZ3VyZWQgdXNlci1leHBvcnQgd2luZG93LCBpLmUuLCB0aGUgYW1vdW50XG4gICAgICAgKiBvZiB0aW1lIChpbiBzZWNvbmRzKSBiZXR3ZWVuIHdoZW4gdGhlIHVzZXItZXhwb3J0IGRlbGF5IGlzIGNvbXBsZXRlZCBhbmQgd2hlblxuICAgICAgICogdGhlIHVzZXIgZXhwb3J0IHJlcXVlc3QgaGFzIGV4cGlyZWQgYW5kIGNhbiBubyBsb25nZXIgYmUgY29tcGxldGVkLiAoVGhpcyB2YWx1ZVxuICAgICAgICogaXMgbWVhbmluZ2xlc3MgZm9yIG9yZ2FuaXphdGlvbnMgdGhhdCB1c2Ugb3JnLXdpZGUgZXhwb3J0LilcbiAgICAgICAqL1xuICAgICAgdXNlcl9leHBvcnRfd2luZG93OiBudW1iZXI7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIG9mZmljaWFsIHdlYmFwcCBvcmlnaW4gaXMgYXV0b21hdGljYWxseSBhbGxvd2VkICovXG4gICAgICB3ZWJhcHBfZW5hYmxlZD86IGJvb2xlYW47XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFN1cHBvcnRlZCBvcmcgbWV0cmljcy4gKi9cbiAgICBPcmdNZXRyaWM6IE9uZU9mPFxuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgQmlsbGluZ0V2ZW50OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJpbGxpbmdEaW1lbnNpb25zXCJdO1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgT2lkY0xvZ2luRXZlbnQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT2lkY0xvZ2luRGltZW5zaW9uc1wiXTtcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFNpZ25FdmVudDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTaWduRGltZW5zaW9uc1wiXTtcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFVzZXJDb3VudDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VyQ291bnREaW1lbnNpb25zXCJdO1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgS2V5Q291bnQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5Q291bnREaW1lbnNpb25zXCJdO1xuICAgICAgICB9LFxuICAgICAgXVxuICAgID47XG4gICAgT3JnTWV0cmljRGF0YToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgZGF0YSBwb2ludHMsIG9uZSBmb3IgZWFjaCB0aW1lIHBlcmlvZCAodGltZSBwZXJpb2RzIGZvciB3aGljaCB0aGUgdmFsdWUgaXMgMCBhcmUgb21pdHRlZCkuICovXG4gICAgICBkYXRhOiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IG51bWJlcjtcbiAgICAgIH07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBtZXRyaWMgZGltZW5zaW9ucy4gKi9cbiAgICAgIGRpbWVuc2lvbnM6IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBdXRvLWdlbmVyYXRlZCBkaXNjcmltaW5hbnQgZW51bSB2YXJpYW50c1xuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgT3JnTWV0cmljRGlzY3JpbWluYW50czpcbiAgICAgIHwgXCJCaWxsaW5nRXZlbnRcIlxuICAgICAgfCBcIk9pZGNMb2dpbkV2ZW50XCJcbiAgICAgIHwgXCJTaWduRXZlbnRcIlxuICAgICAgfCBcIlVzZXJDb3VudFwiXG4gICAgICB8IFwiS2V5Q291bnRcIjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQXZhaWxhYmxlIHN0YXRpc3RpY3MgdG8gY29tcHV0ZVxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgT3JnTWV0cmljU3RhdDogXCJTdW1cIiB8IFwiQXZlcmFnZVwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gT1MgaW5mb3JtYXRpb24gc2V0IGluIFtgQ2xpZW50U2Vzc2lvbk1ldGFkYXRhYF0gYW5kIHJlZmxlY3RlZCBpbiBbYFNlc3Npb25NZXRhZGF0YWBdICovXG4gICAgT3NJbmZvOiB7XG4gICAgICAvKiogQGV4YW1wbGUgYXJtNjQgKi9cbiAgICAgIGFyY2hpdGVjdHVyZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKiogQGV4YW1wbGUgTWFjIE9TICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZXhhbXBsZSAxNC41LjAgKi9cbiAgICAgIHZlcnNpb24/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBleGFtcGxlIDY0LWJpdCAqL1xuICAgICAgd29yZF9zaXplPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcm9ja2V0IHF1ZXJ5IHBhcmFtZXRlciByZXByZXNlbnRpbmcgdGhlIHBhZ2UgZnJvbSB3aGljaCB0byBzdGFydCBhIHBhZ2luYXRlZCBxdWVyeS5cbiAgICAgKlxuICAgICAqIE1VU1QgYmUgbmFtZWQgYDxwYWdlPmAgaW4gcm9ja2V0IHVybCBzcGVjIHNvIHRoYXQgJ3NlcmRlKHJlbmFtZSA9IFwicGFnZS4qXCIpJyBiZWxvdyBjb250aW51ZXMgdG8gd29ya1xuICAgICAqL1xuICAgIFBhZ2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICpcbiAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAqL1xuICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICovXG4gICAgICBcInBhZ2Uuc3RhcnRcIj86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgdHlwZSB0aGF0IHdyYXBzIGFub3RoZXIgdHlwZSBhbmQgYWRkcyBiYXNlNjR1cmwtZW5jb2RlZCBlbmNyeXB0ZWQgYGxhc3RfZXZhbHVhdGVkX2tleWBcbiAgICAgKiB2YWx1ZSAod2hpY2ggY2FuIHRoZSB1c2VyIHBhc3MgYmFjayB0byB1c2UgYXMgYSB1cmwgcXVlcnkgcGFyYW1ldGVyIHRvIGNvbnRpbnVlIHBhZ2luYXRpb24pLlxuICAgICAqL1xuICAgIFBhZ2luYXRlZEF1ZGl0TG9nUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQXVkaXQgbG9nIGVudHJpZXMgKi9cbiAgICAgIGVudHJpZXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXVkaXRMb2dFbnRyeVwiXVtdO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRHZXRVc2Vyc0luT3JnUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGxpc3Qgb2YgdXNlcnMgaW4gdGhlIG9yZyAqL1xuICAgICAgdXNlcnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckluT3JnSW5mb1wiXVtdO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRMaXN0Q29udGFjdHNSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIGxpc3Qgb2YgY29udGFjdHMgaW4gdGhlIG9yZ2FuaXphdGlvbiwgbWF0Y2hpbmcgYW55IHByb3ZpZGVkIHF1ZXJpZXMuICovXG4gICAgICBjb250YWN0czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDb250YWN0SW5mb1Jlc3BvbnNlXCJdW107XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgKi9cbiAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgdHlwZSB0aGF0IHdyYXBzIGFub3RoZXIgdHlwZSBhbmQgYWRkcyBiYXNlNjR1cmwtZW5jb2RlZCBlbmNyeXB0ZWQgYGxhc3RfZXZhbHVhdGVkX2tleWBcbiAgICAgKiB2YWx1ZSAod2hpY2ggY2FuIHRoZSB1c2VyIHBhc3MgYmFjayB0byB1c2UgYXMgYSB1cmwgcXVlcnkgcGFyYW1ldGVyIHRvIGNvbnRpbnVlIHBhZ2luYXRpb24pLlxuICAgICAqL1xuICAgIFBhZ2luYXRlZExpc3RIaXN0b3JpY2FsVHhSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBIaXN0b3JpY2FsIHRyYW5zYWN0aW9ucyBzaWduZWQgd2l0aCB0aGUgcmVxdWVzdGVkIGtleSwgc29ydGVkIGZyb20gbW9zdCB0byBsZWFzdCByZWNlbnQuICovXG4gICAgICB0eHM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSGlzdG9yaWNhbFR4XCJdW107XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgKi9cbiAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgdHlwZSB0aGF0IHdyYXBzIGFub3RoZXIgdHlwZSBhbmQgYWRkcyBiYXNlNjR1cmwtZW5jb2RlZCBlbmNyeXB0ZWQgYGxhc3RfZXZhbHVhdGVkX2tleWBcbiAgICAgKiB2YWx1ZSAod2hpY2ggY2FuIHRoZSB1c2VyIHBhc3MgYmFjayB0byB1c2UgYXMgYSB1cmwgcXVlcnkgcGFyYW1ldGVyIHRvIGNvbnRpbnVlIHBhZ2luYXRpb24pLlxuICAgICAqL1xuICAgIFBhZ2luYXRlZExpc3RLZXlSb2xlc1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCByb2xlcyB0aGUga2V5IGlzIGluICovXG4gICAgICByb2xlczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJblJvbGVJbmZvXCJdW107XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgKi9cbiAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgdHlwZSB0aGF0IHdyYXBzIGFub3RoZXIgdHlwZSBhbmQgYWRkcyBiYXNlNjR1cmwtZW5jb2RlZCBlbmNyeXB0ZWQgYGxhc3RfZXZhbHVhdGVkX2tleWBcbiAgICAgKiB2YWx1ZSAod2hpY2ggY2FuIHRoZSB1c2VyIHBhc3MgYmFjayB0byB1c2UgYXMgYSB1cmwgcXVlcnkgcGFyYW1ldGVyIHRvIGNvbnRpbnVlIHBhZ2luYXRpb24pLlxuICAgICAqL1xuICAgIFBhZ2luYXRlZExpc3RLZXlzUmVzcG9uc2U6IHtcbiAgICAgIGtleXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5mb1wiXVtdO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRMaXN0UG9saWNpZXNSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgT3JnJ3MgbmFtZWQgcG9saWNpZXMuICovXG4gICAgICBwb2xpY2llczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQb2xpY3lJbmZvXCJdW107XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgKi9cbiAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgdHlwZSB0aGF0IHdyYXBzIGFub3RoZXIgdHlwZSBhbmQgYWRkcyBiYXNlNjR1cmwtZW5jb2RlZCBlbmNyeXB0ZWQgYGxhc3RfZXZhbHVhdGVkX2tleWBcbiAgICAgKiB2YWx1ZSAod2hpY2ggY2FuIHRoZSB1c2VyIHBhc3MgYmFjayB0byB1c2UgYXMgYSB1cmwgcXVlcnkgcGFyYW1ldGVyIHRvIGNvbnRpbnVlIHBhZ2luYXRpb24pLlxuICAgICAqL1xuICAgIFBhZ2luYXRlZExpc3RSb2xlS2V5c1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBrZXlzIGluIGEgcm9sZSAqL1xuICAgICAga2V5czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJblJvbGVJbmZvXCJdW107XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgKi9cbiAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgdHlwZSB0aGF0IHdyYXBzIGFub3RoZXIgdHlwZSBhbmQgYWRkcyBiYXNlNjR1cmwtZW5jb2RlZCBlbmNyeXB0ZWQgYGxhc3RfZXZhbHVhdGVkX2tleWBcbiAgICAgKiB2YWx1ZSAod2hpY2ggY2FuIHRoZSB1c2VyIHBhc3MgYmFjayB0byB1c2UgYXMgYSB1cmwgcXVlcnkgcGFyYW1ldGVyIHRvIGNvbnRpbnVlIHBhZ2luYXRpb24pLlxuICAgICAqL1xuICAgIFBhZ2luYXRlZExpc3RSb2xlVXNlcnNSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgdXNlcnMgaW4gYSByb2xlICovXG4gICAgICB1c2VyczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VySW5Sb2xlSW5mb1wiXVtdO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRMaXN0Um9sZXNSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgcm9sZXMgaW4gYW4gb3JnYW5pemF0aW9uLiAqL1xuICAgICAgcm9sZXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUm9sZUluZm9cIl1bXTtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0eXBlIHRoYXQgd3JhcHMgYW5vdGhlciB0eXBlIGFuZCBhZGRzIGJhc2U2NHVybC1lbmNvZGVkIGVuY3J5cHRlZCBgbGFzdF9ldmFsdWF0ZWRfa2V5YFxuICAgICAqIHZhbHVlICh3aGljaCBjYW4gdGhlIHVzZXIgcGFzcyBiYWNrIHRvIHVzZSBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIgdG8gY29udGludWUgcGFnaW5hdGlvbikuXG4gICAgICovXG4gICAgUGFnaW5hdGVkUG9saWN5TG9nc1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBwb2xpY3kgZXhlY3V0aW9uIGxvZ3MgKi9cbiAgICAgIGxvZ3M6IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICAgICAgfVtdO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRRdWVyeU1ldHJpY3NSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBZHZpc29yeSBtZXNzYWdlcyAoZS5nLiwgaWYgbWF4IG51bWJlciBvZiByZXN1bHRzIGlzIHJlYWNoZWQpLiAqL1xuICAgICAgbWVzc2FnZXM/OiBzdHJpbmdbXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwZXJpb2QgZm9yIHdoaWNoIHRoZSBzdGF0aXN0aWMgaXMgY29tcHV0ZWQsIGlmIGFueSAobm90IGFsbCBtZXRyaWNzIHN1cHBvcnQgc3BsaXR0aW5nIHRoZSByZXF1ZXN0ZWQgdGltZSByYW5nZSBpbnRvIGJpbnMpLlxuICAgICAgICogSWYgc2V0LCBlcXVhbHMgdG8gdGhlIHZhbHVlIGZyb20gdGhlIHJlcXVlc3Qgcm91bmRlZCB1cCB0byB0aGUgY2xvc2VzdCBtdWx0aXBsZSBvZiA2MC5cbiAgICAgICAqL1xuICAgICAgcGVyaW9kPzogbnVtYmVyO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBTb21lIG1ldHJpY3MgY2FuIG9wdGlvbmFsbHkgcmV0dXJuIHRoZSByYXcgZGF0YSwgd2hlbiByZXF1ZXN0ZWQuICovXG4gICAgICByYXdfZGF0YToge1xuICAgICAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gICAgICB9W107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIENvbXB1dGVkIGRhdGEgcG9pbnRzLiAqL1xuICAgICAgcmVzdWx0czoge1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBkYXRhIHBvaW50cywgb25lIGZvciBlYWNoIHRpbWUgcGVyaW9kICh0aW1lIHBlcmlvZHMgZm9yIHdoaWNoIHRoZSB2YWx1ZSBpcyAwIGFyZSBvbWl0dGVkKS4gKi9cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIFtrZXk6IHN0cmluZ106IG51bWJlcjtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbWV0cmljIGRpbWVuc2lvbnMuICovXG4gICAgICAgIGRpbWVuc2lvbnM6IHtcbiAgICAgICAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9W107XG4gICAgICBzdGF0PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPcmdNZXRyaWNTdGF0XCJdIHwgbnVsbDtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0eXBlIHRoYXQgd3JhcHMgYW5vdGhlciB0eXBlIGFuZCBhZGRzIGJhc2U2NHVybC1lbmNvZGVkIGVuY3J5cHRlZCBgbGFzdF9ldmFsdWF0ZWRfa2V5YFxuICAgICAqIHZhbHVlICh3aGljaCBjYW4gdGhlIHVzZXIgcGFzcyBiYWNrIHRvIHVzZSBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIgdG8gY29udGludWUgcGFnaW5hdGlvbikuXG4gICAgICovXG4gICAgUGFnaW5hdGVkU2Vzc2lvbnNSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbGlzdCBvZiBzZXNzaW9ucyAqL1xuICAgICAgc2Vzc2lvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vzc2lvbkluZm9cIl1bXTtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0eXBlIHRoYXQgd3JhcHMgYW5vdGhlciB0eXBlIGFuZCBhZGRzIGJhc2U2NHVybC1lbmNvZGVkIGVuY3J5cHRlZCBgbGFzdF9ldmFsdWF0ZWRfa2V5YFxuICAgICAqIHZhbHVlICh3aGljaCBjYW4gdGhlIHVzZXIgcGFzcyBiYWNrIHRvIHVzZSBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIgdG8gY29udGludWUgcGFnaW5hdGlvbikuXG4gICAgICovXG4gICAgUGFnaW5hdGVkVXNlckV4cG9ydExpc3RSZXNwb25zZToge1xuICAgICAgZXhwb3J0X3JlcXVlc3RzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJFeHBvcnRJbml0UmVzcG9uc2VcIl1bXTtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gU2VudCBmcm9tIHRoZSBjbGllbnQgdG8gdGhlIHNlcnZlciB0byBhbnN3ZXIgYSBmaWRvIGNoYWxsZW5nZSAqL1xuICAgIFBhc3NrZXlBc3NlcnRBbnN3ZXI6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBjaGFsbGVuZ2UgdGhhdCB3YXMgcmV0dXJuZWQgZnJvbSB0aGUgUE9TVCBlbmRwb2ludCAqL1xuICAgICAgY2hhbGxlbmdlX2lkOiBzdHJpbmc7XG4gICAgICBjcmVkZW50aWFsOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxcIl07XG4gICAgfTtcbiAgICBQYXNza2V5QXNzZXJ0Q2hhbGxlbmdlOiAoY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDaGFsbGVuZ2VQaWVjZXNcIl0gJiB7XG4gICAgICBvcHRpb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uc1wiXTtcbiAgICB9KSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBjaGFsbGVuZ2UuIE11c3QgYmUgc3VwcGxpZWQgd2hlbiBhbnN3ZXJpbmcgdGhlIGNoYWxsZW5nZS4gKi9cbiAgICAgIGNoYWxsZW5nZV9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBPcmctbGV2ZWwgcGFzc2tleSBjb25maWd1cmF0aW9uICovXG4gICAgUGFzc2tleUNvbmZpZzoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBFbmFibGUgcGFzc2tleSBsb2dpbiBmb3IgY2VydGFpbiB1c2VyIHJvbGVzIChkaXNhYmxlZCBmb3IgZXZlcnlvbmUgYnkgZGVmYXVsdCkgKi9cbiAgICAgIHVzZXJzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZW1iZXJSb2xlXCJdW107XG4gICAgfTtcbiAgICBQYXNzd29yZFJlc2V0Q29uZmlybVJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG5ldyBwYXNzd29yZCB0byBzZXQuICovXG4gICAgICBuZXdfcGFzc3dvcmQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEludml0YXRpb24gdG9rZW4sIGNvbnN0cnVjdGVkIGJ5IGNvbmNhdGVuYXRpbmcgdGhlIFwicGFydGlhbCB0b2tlblwiXG4gICAgICAgKiAoaS5lLiwgYHtoZWFkZXJ9LntwYXlsb2FkfS5gKSByZXR1cm5lZCBieSB0aGUgYGlkcF9wYXNzd29yZF9yZXNldF9yZXF1ZXN0YCBlbmRwb2ludFxuICAgICAgICogYW5kIHRoZSBzaWduYXR1cmUgc2VudCB0byB0aGUgdXNlcidzIGVtYWlsLlxuICAgICAgICovXG4gICAgICB0b2tlbjogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVxdWVzdCBib2R5IGZvciB0aGUgaWRwIHBhc3N3b3JkIHJlc2V0IGVuZHBvaW50ICovXG4gICAgUGFzc3dvcmRSZXNldFJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBlbWFpbCBhZGRyZXNzIG9mIHRoZSB1c2VyIHJlcXVlc3RpbmcgdG8gcmVzZXQgdGhlaXIgcGFzc3dvcmRcbiAgICAgICAqIEBleGFtcGxlIGFsaWNlQGV4YW1wbGUuY29tXG4gICAgICAgKi9cbiAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEV4dGVuZGVkIGluZm9ybWF0aW9uIGFib3V0IGFuIGV4aXN0aW5nIE1NSSByZXF1ZXN0LiAqL1xuICAgIFBlbmRpbmdNZXNzYWdlSW5mbzoge1xuICAgICAgbWV0YWRhdGE6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTW1pTWV0YWRhdGFcIl07XG4gICAgICBzaWduZWRNZXNzYWdlPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTaWduZWRNZXNzYWdlXCJdIHwgbnVsbDtcbiAgICAgIHRyYW5zYWN0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUcmFuc2FjdGlvbkFuZFN0YXR1c1wiXSB8IG51bGw7XG4gICAgfSAmIHtcbiAgICAgIGNyZWF0ZWRfYXQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgIGV4cGlyZXNfYXQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBwZW5kaW5nIG1lc3NhZ2UgKi9cbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBpZGVudGl0eSAoYSB1c2VyIG9yIGEgcm9sZSBpZCkgd2hpY2ggY3JlYXRlZCB0aGlzIG1lc3NhZ2UuICovXG4gICAgICBpZGVudGl0eTogc3RyaW5nO1xuICAgICAgbWVzc2FnZV9laXAxOTE/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gRnJvbSBhZGRyZXNzLCBoZXgtZW5jb2RlZCwgd2l0aCBsZWFkaW5nICcweCdcbiAgICAgICAgICogQGV4YW1wbGUgMHgwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5XG4gICAgICAgICAqL1xuICAgICAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgKGluY2x1ZGluZyBhICcweCcgcHJlZml4KSBtZXNzYWdlIHRvIHNpZ24uICovXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIH0gfCBudWxsO1xuICAgICAgbWVzc2FnZV9laXA3MTI/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gRnJvbSBhZGRyZXNzLCBoZXgtZW5jb2RlZCwgd2l0aCBsZWFkaW5nICcweCdcbiAgICAgICAgICogQGV4YW1wbGUgMHgwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5XG4gICAgICAgICAqL1xuICAgICAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgICAgIGRhdGE6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVHlwZWREYXRhXCJdO1xuICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgdmVyc2lvbjogXCJ2M1wiIHwgXCJ2NFwiO1xuICAgICAgfSB8IG51bGw7XG4gICAgICBtZXNzYWdlX3R4PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUeXBlZFRyYW5zYWN0aW9uXCJdIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRXh0ZW5kZWQgaW5mb3JtYXRpb24gYWJvdXQgYW4gZXhpc3RpbmcgTU1JIG1lc3NhZ2UsIGluY2x1ZGluZyB0aGUgc2lnbmF0dXJlLiAqL1xuICAgIFBlbmRpbmdNZXNzYWdlU2lnblJlc3BvbnNlOiAoe1xuICAgICAgbWV0YWRhdGE6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTW1pTWV0YWRhdGFcIl07XG4gICAgICBzaWduZWRNZXNzYWdlPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTaWduZWRNZXNzYWdlXCJdIHwgbnVsbDtcbiAgICAgIHRyYW5zYWN0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUcmFuc2FjdGlvbkFuZFN0YXR1c1wiXSB8IG51bGw7XG4gICAgfSAmIHtcbiAgICAgIGNyZWF0ZWRfYXQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgIGV4cGlyZXNfYXQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBwZW5kaW5nIG1lc3NhZ2UgKi9cbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBpZGVudGl0eSAoYSB1c2VyIG9yIGEgcm9sZSBpZCkgd2hpY2ggY3JlYXRlZCB0aGlzIG1lc3NhZ2UuICovXG4gICAgICBpZGVudGl0eTogc3RyaW5nO1xuICAgICAgbWVzc2FnZV9laXAxOTE/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gRnJvbSBhZGRyZXNzLCBoZXgtZW5jb2RlZCwgd2l0aCBsZWFkaW5nICcweCdcbiAgICAgICAgICogQGV4YW1wbGUgMHgwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5XG4gICAgICAgICAqL1xuICAgICAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgKGluY2x1ZGluZyBhICcweCcgcHJlZml4KSBtZXNzYWdlIHRvIHNpZ24uICovXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIH0gfCBudWxsO1xuICAgICAgbWVzc2FnZV9laXA3MTI/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gRnJvbSBhZGRyZXNzLCBoZXgtZW5jb2RlZCwgd2l0aCBsZWFkaW5nICcweCdcbiAgICAgICAgICogQGV4YW1wbGUgMHgwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5XG4gICAgICAgICAqL1xuICAgICAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgICAgIGRhdGE6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVHlwZWREYXRhXCJdO1xuICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgdmVyc2lvbjogXCJ2M1wiIHwgXCJ2NFwiO1xuICAgICAgfSB8IG51bGw7XG4gICAgICBtZXNzYWdlX3R4PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUeXBlZFRyYW5zYWN0aW9uXCJdIHwgbnVsbDtcbiAgICB9KSAmXG4gICAgICBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4gICAgLyoqXG4gICAgICogUG9saWN5QWN0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSBhY2Nlc3MtY29udHJvbGxlZCBhY3Rpb25zIHRoYXQgY2FuIGJlIHBlcmZvcm1lZCBvbiBhIG5hbWVkIHBvbGljeS5cbiAgICAgKiBAZXhhbXBsZSByZWFkOnBvbGljeVxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgUG9saWN5QWN0aW9uOlxuICAgICAgfCBcInJlYWQ6KlwiXG4gICAgICB8IFwicmVhZDpwb2xpY3lcIlxuICAgICAgfCBcInJlYWQ6bG9nc1wiXG4gICAgICB8IFwidXBkYXRlOipcIlxuICAgICAgfCBcInVwZGF0ZTpuYW1lXCJcbiAgICAgIHwgXCJ1cGRhdGU6cnVsZXNcIlxuICAgICAgfCBcInVwZGF0ZTptZXRhZGF0YVwiXG4gICAgICB8IFwidXBkYXRlOmVkaXRQb2xpY3lcIlxuICAgICAgfCBcInVwZGF0ZTpvd25lclwiXG4gICAgICB8IFwidXBkYXRlOmFjbFwiXG4gICAgICB8IFwiZGVsZXRlXCJcbiAgICAgIHwgXCJhdHRhY2hcIlxuICAgICAgfCBcInNpZ25cIlxuICAgICAgfCBcImludm9rZVwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGlkIGZvciBhdHRhY2hpbmcgYSBuYW1lZCBwb2xpY3kgdG8gYSBrZXksIHJvbGUsIG9yIGtleSBpbiByb2xlLiAqL1xuICAgIFBvbGljeUF0dGFjaGVkVG9JZDogT25lT2Y8XG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBrZXkgaW4gdGhlIHJvbGUgdGhlIHBvbGljeSBzaG91bGQgYmUgYXR0YWNoZWQgdG8uXG4gICAgICAgICAgICogQGV4YW1wbGUgS2V5IzB4OGUzNDg0Njg3ZTY2Y2RkMjZjZjA0YzM2NDc2MzNhYjRmMzU3MDE0OFxuICAgICAgICAgICAqL1xuICAgICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIHJvbGUgdGhlIGtleSBpcyBpbi5cbiAgICAgICAgICAgKiBAZXhhbXBsZSBSb2xlI2JmZTNlY2NiLTczMWUtNDMwZC1iMWU1LWFjMTM2M2U2YjA2YlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGtleSB0aGUgcG9saWN5IHNob3VsZCBiZSBhdHRhY2hlZCB0by5cbiAgICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMHg4ZTM0ODQ2ODdlNjZjZGQyNmNmMDRjMzY0NzYzM2FiNGYzNTcwMTQ4XG4gICAgICAgICAgICovXG4gICAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSByb2xlIHRoZSBwb2xpY3kgc2hvdWxkIGJlIGF0dGFjaGVkIHRvLlxuICAgICAgICAgICAqIEBleGFtcGxlIFJvbGUjYmZlM2VjY2ItNzMxZS00MzBkLWIxZTUtYWMxMzYzZTZiMDZiXG4gICAgICAgICAgICovXG4gICAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgICB9LFxuICAgICAgXVxuICAgID47XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHN0cnVjdCBjb250YWluaW5nIE9yZy1sZXZlbCBjb25maWd1cmF0aW9ucyBmb3IgdGhlIHdvcmtpbmdzIG9mIHRoZSBQb2xpY3kgRW5naW5lLiAqL1xuICAgIFBvbGljeUVuZ2luZUNvbmZpZ3VyYXRpb246IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFsbG93ZWQgZG9tYWlucyBmb3IgSFRUUCByZXF1ZXN0c1xuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICBcImN1YmlzdC5kZXY6NDQzXCJcbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgYWxsb3dlZF9odHRwX2F1dGhvcml0aWVzOiBzdHJpbmdbXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG1heGltdW0gbnVtYmVyIG9mIHBvbGljeSBzZWNyZXRzIGZvciB0aGUgT3JnLiAqL1xuICAgICAgb3JnX3NlY3JldHNfbGltaXQ/OiBudW1iZXIgfCBudWxsO1xuICAgIH07XG4gICAgUG9saWN5RXJyb3JDb2RlOlxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBvbGljeUVycm9yT3duQ29kZXNcIl1cbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFdm1UeERlcG9zaXRFcnJvckNvZGVcIl07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgUG9saWN5RXJyb3JPd25Db2RlczpcbiAgICAgIHwgXCJJbmFwcGxpY2FibGVcIlxuICAgICAgfCBcIlN1aVR4UmVjZWl2ZXJzRGlzYWxsb3dlZFRyYW5zYWN0aW9uS2luZFwiXG4gICAgICB8IFwiU3VpVHhSZWNlaXZlcnNEaXNhbGxvd2VkVHJhbnNmZXJBZGRyZXNzXCJcbiAgICAgIHwgXCJTdWlUeFJlY2VpdmVyc0Rpc2FsbG93ZWRDb21tYW5kXCJcbiAgICAgIHwgXCJCdGNUeERpc2FsbG93ZWRPdXRwdXRzXCJcbiAgICAgIHwgXCJCdGNTaWduYXR1cmVFeGNlZWRlZFZhbHVlXCJcbiAgICAgIHwgXCJCdGNWYWx1ZU92ZXJmbG93XCJcbiAgICAgIHwgXCJCdGNTaWdoYXNoVHlwZURpc2FsbG93ZWRcIlxuICAgICAgfCBcIkV2bVR4UmVjZWl2ZXJNaXNtYXRjaFwiXG4gICAgICB8IFwiRXZtVHhDaGFpbklkTWlzbWF0Y2hcIlxuICAgICAgfCBcIkV2bVR4U2VuZGVyTWlzbWF0Y2hcIlxuICAgICAgfCBcIkV2bVR4RXhjZWVkZWRWYWx1ZVwiXG4gICAgICB8IFwiRXZtVHhFeGNlZWRlZEdhc0Nvc3RcIlxuICAgICAgfCBcIkV2bVR4R2FzQ29zdFVuZGVmaW5lZFwiXG4gICAgICB8IFwiRXZtRGF0YURpc2FsbG93ZWRcIlxuICAgICAgfCBcIkVyYzIwRGF0YUludmFsaWRcIlxuICAgICAgfCBcIkV2bUNvbnRyYWN0QWRkcmVzc1VuZGVmaW5lZFwiXG4gICAgICB8IFwiRXZtQ29udHJhY3RDaGFpbklkVW5kZWZpbmVkXCJcbiAgICAgIHwgXCJFdm1EYXRhTm90RGVmaW5lZFwiXG4gICAgICB8IFwiRXZtRGF0YUludmFsaWRcIlxuICAgICAgfCBcIkV2bUNvbnRyYWN0Tm90SW5BbGxvd2xpc3RcIlxuICAgICAgfCBcIkVyYzIwRXhjZWVkZWRUcmFuc2ZlckxpbWl0XCJcbiAgICAgIHwgXCJFcmMyMFJlY2VpdmVyTWlzbWF0Y2hcIlxuICAgICAgfCBcIkVyYzIwRXhjZWVkZWRBcHByb3ZlTGltaXRcIlxuICAgICAgfCBcIkVyYzIwU3BlbmRlck1pc21hdGNoXCJcbiAgICAgIHwgXCJFdm1GdW5jdGlvbk5vdEluQWxsb3dsaXN0XCJcbiAgICAgIHwgXCJFdm1GdW5jdGlvbkNhbGxJbnZhbGlkXCJcbiAgICAgIHwgXCJFdm1GdW5jdGlvbkNhbGxEaXNhbGxvd2VkQXJnXCJcbiAgICAgIHwgXCJQb2xpY3lEaXNqdW5jdGlvbkVycm9yXCJcbiAgICAgIHwgXCJQb2xpY3lOZWdhdGlvbkVycm9yXCJcbiAgICAgIHwgXCJFdGgyRXhjZWVkZWRNYXhVbnN0YWtlXCJcbiAgICAgIHwgXCJFdGgyQ29uY3VycmVudFVuc3Rha2luZ1wiXG4gICAgICB8IFwiTm90SW5JcHY0QWxsb3dsaXN0XCJcbiAgICAgIHwgXCJOb3RJbk9yaWdpbkFsbG93bGlzdFwiXG4gICAgICB8IFwiTm90SW5PcGVyYXRpb25BbGxvd2xpc3RcIlxuICAgICAgfCBcIkludmFsaWRTb3VyY2VJcFwiXG4gICAgICB8IFwiUmF3U2lnbmluZ05vdEFsbG93ZWRcIlxuICAgICAgfCBcIkRpZmZpZUhlbGxtYW5FeGNoYW5nZU5vdEFsbG93ZWRcIlxuICAgICAgfCBcIkVpcDcxMlNpZ25pbmdOb3RBbGxvd2VkXCJcbiAgICAgIHwgXCJPaWRjU291cmNlTm90QWxsb3dlZFwiXG4gICAgICB8IFwiTm9PaWRjQXV0aFNvdXJjZXNEZWZpbmVkXCJcbiAgICAgIHwgXCJBZGRLZXlUb1JvbGVEaXNhbGxvd2VkXCJcbiAgICAgIHwgXCJLZXlzQWxyZWFkeUluUm9sZVwiXG4gICAgICB8IFwiS2V5SW5NdWx0aXBsZVJvbGVzXCJcbiAgICAgIHwgXCJLZXlBY2Nlc3NFcnJvclwiXG4gICAgICB8IFwiUmVxdWlyZVJvbGVTZXNzaW9uS2V5QWNjZXNzRXJyb3JcIlxuICAgICAgfCBcIkJ0Y01lc3NhZ2VTaWduaW5nTm90QWxsb3dlZFwiXG4gICAgICB8IFwiRWlwMTkxU2lnbmluZ05vdEFsbG93ZWRcIlxuICAgICAgfCBcIlRhcHJvb3RTaWduaW5nRGlzYWxsb3dlZFwiXG4gICAgICB8IFwiU2Vnd2l0U2lnbmluZ0Rpc2FsbG93ZWRcIlxuICAgICAgfCBcIlBzYnRTaWduaW5nRGlzYWxsb3dlZFwiXG4gICAgICB8IFwiQmFieWxvblN0YWtpbmdEaXNhbGxvd2VkXCJcbiAgICAgIHwgXCJUaW1lTG9ja2VkXCJcbiAgICAgIHwgXCJCYWJ5bG9uU3Rha2luZ05ldHdvcmtcIlxuICAgICAgfCBcIkJhYnlsb25TdGFraW5nUGFyYW1zVmVyc2lvblwiXG4gICAgICB8IFwiQmFieWxvblN0YWtpbmdFeHBsaWNpdFBhcmFtc1wiXG4gICAgICB8IFwiQmFieWxvblN0YWtpbmdTdGFrZXJQa1wiXG4gICAgICB8IFwiQmFieWxvblN0YWtpbmdGaW5hbGl0eVByb3ZpZGVyUGtcIlxuICAgICAgfCBcIkJhYnlsb25TdGFraW5nTG9ja1RpbWVcIlxuICAgICAgfCBcIkJhYnlsb25TdGFraW5nVmFsdWVcIlxuICAgICAgfCBcIkJhYnlsb25TdGFraW5nQ2hhbmdlQWRkcmVzc1wiXG4gICAgICB8IFwiQmFieWxvblN0YWtpbmdGZWVcIlxuICAgICAgfCBcIkJhYnlsb25TdGFraW5nV2l0aGRyYXdhbEFkZHJlc3NcIlxuICAgICAgfCBcIkJhYnlsb25TdGFraW5nQmJuQWRkcmVzc1wiXG4gICAgICB8IFwiU29sYW5hSW5zdHJ1Y3Rpb25Db3VudExvd1wiXG4gICAgICB8IFwiU29sYW5hSW5zdHJ1Y3Rpb25Db3VudEhpZ2hcIlxuICAgICAgfCBcIlNvbGFuYU5vdEluSW5zdHJ1Y3Rpb25BbGxvd2xpc3RcIlxuICAgICAgfCBcIlNvbGFuYUluc3RydWN0aW9uTWlzbWF0Y2hcIlxuICAgICAgfCBcIldhc21Qb2xpY2llc0Rpc2FibGVkXCJcbiAgICAgIHwgXCJXYXNtUG9saWN5RGVuaWVkXCJcbiAgICAgIHwgXCJXYXNtUG9saWN5RmFpbGVkXCJcbiAgICAgIHwgXCJXZWJob29rUG9saWNpZXNEaXNhYmxlZFwiXG4gICAgICB8IFwiRGVuaWVkQnlXZWJob29rXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHN0cnVjdCBjb250YWluaW5nIGFsbCB0aGUgaW5mb3JtYXRpb24gYWJvdXQgYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIGEgcG9saWN5LiAqL1xuICAgIFBvbGljeUluZm86IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGFjY2Vzcy1jb250cm9sIGVudHJpZXMgZm9yIHRoZSBwb2xpY3kuICovXG4gICAgICBhY2w/OiB1bmtub3duW10gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIGxpc3Qgb2YgZW50aXRpZXMgKGtleXMsIHJvbGVzLCBldGMuKSB0aGUgcG9saWN5IGlzIGF0dGFjaGVkIHRvLiAqL1xuICAgICAgYXR0YWNoZWRfdG86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUG9saWN5QXR0YWNoZWRUb0lkXCJdW107XG4gICAgICBjcmVhdGVkOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICBlZGl0X3BvbGljeT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRWRpdFBvbGljeVwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVXNlci1kZWZpbmVkIG1ldGFkYXRhIGZvciB0aGUgbmFtZWQgcG9saWN5LiAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmFtZSBvZiB0aGUgcG9saWN5LiAqL1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgb3duZXI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBwb2xpY3kgaWQgKi9cbiAgICAgIHBvbGljeV9pZDogc3RyaW5nO1xuICAgICAgcG9saWN5X3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUG9saWN5VHlwZVwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHBvbGljeSBydWxlLiAqL1xuICAgICAgcnVsZXM6IHVua25vd25bXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwb2xpY3kgcnVsZSdzIHZlcnNpb24uXG4gICAgICAgKi9cbiAgICAgIHZlcnNpb246IG51bWJlcjtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSByZXF1ZXN0IGZvciBxdWVyeWluZyBXYXNtIHBvbGljeSBsb2dzLiAqL1xuICAgIFBvbGljeUxvZ3NSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBFbmQgdGltZSBpbiBzZWNvbmRzIHNpbmNlIHVuaXggZXBvY2guIElmIG9taXR0ZWQsIGRlZmF1bHRzIHRvICdub3cnLlxuICAgICAgICovXG4gICAgICBlbmRfdGltZT86IG51bWJlciB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBTdGFydCB0aW1lIGluIHNlY29uZHMgc2luY2UgdW5peCBlcG9jaC4gSWYgb21pdHRlZCwgZGVmYXVsdHMgdG8gMjQgaG91cnMgYWdvLlxuICAgICAgICovXG4gICAgICBzdGFydF90aW1lPzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB2ZXJzaW9uIG9mIHRoZSBwb2xpY3kgdG8gZ2V0IHRoZSBsb2dzIGZvci5cbiAgICAgICAqIElmIG9taXR0ZWQsIGFsbCBwb2xpY3kgbG9ncyBhcmUgcmV0cmlldmVkLlxuICAgICAgICovXG4gICAgICB2ZXJzaW9uPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBQb2xpY3lSZXN1bHRSZXNwb25zZSBpcyBhIHdyYXBwZXIgb24gUG9saWN5UmVzdWx0IHdpdGggdHdvIGltcG9ydGFudFxuICAgICAqIHByb3BlcnRpZXM6XG4gICAgICogKiBkZXJpdmVzIE9rVG9Mb2dSZXNwb25zZSwgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBpbiB0aGUgcm9ja2V0IGhhbmRsZXIuXG4gICAgICogKiBkZXJpdmVzIFRvU2NoZW1hIGFuZCBUb1Jlc3BvbnNlLCB3aXRoIHRoZSBgdmFsYCBmaWVsZCB3aXRoIHZhbHVlX3R5cGVcbiAgICAgKiBPYmplY3QsIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byBwcm92aWRlIGFsbCBvZiB0aGUgT3BlbkFQSSB0eXBlXG4gICAgICogZGVzY3JpcHRpb25zIG9mIGEgUG9saWN5UmVzdWx0LlxuICAgICAqXG4gICAgICogVGhlIFBvbGljeVJlc3VsdCBpbmNsdWRlcyBlbnVtcyBhbmQgb3RoZXIgc3RhbmRhcmQgdHlwZXMgKGUuZy5cbiAgICAgKiBzdGQ6OnRpbWU6OkludGVydmFsKSB3aGljaCBhcmUgbm9udHJpdmlhbCB0byByZXByZXNlbnQgaW4gT3BlbkFQSS4gU2luY2VcbiAgICAgKiB0aGlzIGVuZHBvaW50IGlzIGp1c3QgZm9yIHRlc3RpbmcsIHdlIGRvbid0IHJlYWxseSBjYXJlIGFib3V0IGhvdyBhY2N1cmF0ZVxuICAgICAqIHRoZSBzY2hlbWEgaXMsIGFuZCBjYW4gbGVhbiBvbiBzZXJkZV9qc29uIHdoZW4gZGVjb2RpbmcgdGhpcyByZXNwb25zZSB0byBhXG4gICAgICogUG9saWN5UmVzdWx0IGluIGEgY2xpZW50LiBOb3RlIHRoYXQgdGhlcmUgaXMgYSBidWcgaW4gdXRvaXBhIHdoZXJlIHRoZVxuICAgICAqIHZhbHVlX3R5cGUgYW5ub3RhdGlvbiB3aWxsIG5vdCB3b3JrIGZvciBhIHR1cGxlLXN0cnVjdCwgb25seSBhIHN0cnVjdCB3aXRoXG4gICAgICogZmllbGRzLlxuICAgICAqL1xuICAgIFBvbGljeVJlc3VsdFJlc3BvbnNlOiB7XG4gICAgICB2YWw6IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSBzdHJ1Y3QgY29udGFpbmluZyBhbGwgbm9uLXNlY3JldCBpbmZvcm1hdGlvbiBhYm91dCBwb2xpY3kgc2VjcmV0cy4gKi9cbiAgICBQb2xpY3lTZWNyZXRzSW5mbzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDb21tb25GaWVsZHNcIl0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXByZWNhdGVkXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5hbWVzIG9mIHRoZSBzZWNyZXRzLlxuICAgICAgICovXG4gICAgICBuYW1lczogc3RyaW5nW107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBwb2xpY3kgc2VjcmV0cy4gKi9cbiAgICAgIHNlY3JldHM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2VjcmV0SW5mb1wiXVtdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSB0eXBlIG9mIGEgW05hbWVkUG9saWN5XS5cbiAgICAgKlxuICAgICAqIFRoZSB0eXBlIG9mIGEgcG9saWN5IGlzIHNldCBhdCBjcmVhdGlvbiB0aW1lLCBhbmQgaXMgdXNlZCB0byBvZmZlciBndWFyYW50ZWVzXG4gICAgICogYWJvdXQgdGhlIGN1cnJlbnQgYW5kIGFsbCBmdXR1cmUgdmVyc2lvbnMgb2YgYSBbTmFtZWRQb2xpY3ldLlxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgUG9saWN5VHlwZTogXCJLZXlcIiB8IFwiUm9sZVwiIHwgXCJXYXNtXCI7XG4gICAgUHJlY29uZGl0aW9uRXJyb3JDb2RlOlxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlByZWNvbmRpdGlvbkVycm9yT3duQ29kZXNcIl1cbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQb2xpY3lFcnJvckNvZGVcIl07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgUHJlY29uZGl0aW9uRXJyb3JPd25Db2RlczpcbiAgICAgIHwgXCJGYWlsT25NZmFSZXF1aXJlZFwiXG4gICAgICB8IFwiS2V5UmVnaW9uTG9ja2VkXCJcbiAgICAgIHwgXCJLZXlSZWdpb25DaGFuZ2VkUmVjZW50bHlcIlxuICAgICAgfCBcIk1mYVJlZ2lvbkxvY2tlZFwiXG4gICAgICB8IFwiRXRoMlByb3Bvc2VyU2xvdFRvb0xvd1wiXG4gICAgICB8IFwiRXRoMkF0dGVzdGF0aW9uU291cmNlRXBvY2hUb29Mb3dcIlxuICAgICAgfCBcIkV0aDJBdHRlc3RhdGlvblRhcmdldEVwb2NoVG9vTG93XCJcbiAgICAgIHwgXCJFdGgyQ29uY3VycmVudEJsb2NrU2lnbmluZ1wiXG4gICAgICB8IFwiRXRoMkNvbmN1cnJlbnRBdHRlc3RhdGlvblNpZ25pbmdcIlxuICAgICAgfCBcIkV0aDJNdWx0aURlcG9zaXRUb05vbkdlbmVyYXRlZEtleVwiXG4gICAgICB8IFwiRXRoMk11bHRpRGVwb3NpdFVua25vd25Jbml0aWFsRGVwb3NpdFwiXG4gICAgICB8IFwiRXRoMk11bHRpRGVwb3NpdFdpdGhkcmF3YWxBZGRyZXNzTWlzbWF0Y2hcIlxuICAgICAgfCBcIkNvbmN1cnJlbnRTaWduaW5nV2hlblRpbWVMaW1pdFBvbGljeUlzRGVmaW5lZFwiXG4gICAgICB8IFwiQmFieWxvbkVvdHNDb25jdXJyZW50U2lnbmluZ1wiXG4gICAgICB8IFwiVGVuZGVybWludFN0YXRlRXJyb3JcIlxuICAgICAgfCBcIlRlbmRlcm1pbnRDb25jdXJyZW50U2lnbmluZ1wiXG4gICAgICB8IFwiTWZhQXBwcm92YWxzTm90WWV0VmFsaWRcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIENvbnRhaW5zIG91dHB1dHMgb2YgcHJldmlvdXMgdHJhbnNhY3Rpb25zLiAqL1xuICAgIFByZXZPdXRwdXRzOiBPbmVPZjxcbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBgT25lYCB2YXJpYW50IGFsbG93cyBwcm92aXNpb24gb2YgdGhlIHNpbmdsZSBwcmV2aW91cyBvdXRwdXQgbmVlZGVkLiBJdCdzIHVzZWZ1bCxcbiAgICAgICAgICAgKiBmb3IgZXhhbXBsZSwgd2hlbiBtb2RpZmllciBgU0lHSEFTSF9BTllPTkVDQU5QQVlgIGlzIHByb3ZpZGVkLCBvbmx5IHByZXZpb3VzIG91dHB1dFxuICAgICAgICAgICAqIG9mIHRoZSBjdXJyZW50IGlucHV0IGlzIG5lZWRlZC4gVGhlIGZpcnN0IGBpbmRleGAgYXJndW1lbnQgaXMgdGhlIGlucHV0IGluZGV4XG4gICAgICAgICAgICogdGhpcyBvdXRwdXQgaXMgcmVmZXJyaW5nIHRvLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIE9uZToge1xuICAgICAgICAgICAgaW5kZXg6IG51bWJlcjtcbiAgICAgICAgICAgIHR4X291dDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCdGNUeE91dFwiXTtcbiAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFdoZW4gYFNJR0hBU0hfQU5ZT05FQ0FOUEFZYCBpcyBub3QgcHJvdmlkZWQsIG9yIHdoZW4gdGhlIGNhbGxlciBpcyBnaXZpbmcgYWxsXG4gICAgICAgICAgICogcHJldmlvdXMgb3V0cHV0cyBzbyB0aGUgc2FtZSB2YXJpYWJsZSBjYW4gYmUgdXNlZCBmb3IgbXVsdGlwbGUgaW5wdXRzLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIEFsbDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCdGNUeE91dFwiXVtdO1xuICAgICAgICB9LFxuICAgICAgXVxuICAgID47XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHJlcXVlc3QgdG8gc2lnbiBhIFBTQlQgKi9cbiAgICBQc2J0U2lnblJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFJlcXVlc3QgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcmVzcG9uc2UsIGV4cGxhaW5pbmdcbiAgICAgICAqIHRoZSBvdXRjb21lIChpLmUuLCBwZXJtaXR0ZWQgdnMuIGRlbmllZCB2cy4gTUZBIHJlcXVpcmVkKSBvZiB0aGUgc2lnbiByZXF1ZXN0LlxuICAgICAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGV4cGxhaW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgTUZBIGlzIHJlcXVpcmVkLCBmYWlsIHRoZSByZXF1ZXN0IGluc3RlYWQgb2YgcmV0dXJuaW5nIDIwMiBhbmQgY3JlYXRpbmdcbiAgICAgICAqIHBlbmRpbmcgTUZBIHJlcXVlc3QuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBmYWlsX29uX21mYT86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBtZXRhZGF0YS4gUGFzc2luZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFzIG1ldGFkYXRhIGNhbiBiZSB1c2VkIHRvIG1ha2UgcmV2aWV3aW5nXG4gICAgICAgKiBvZiBwZW5kaW5nIE1GQSByZXF1ZXN0cyBhbmQvb3IgaGlzdG9yaWNhbCBrZXkgdHJhbnNhY3Rpb25zIG1vcmUgdHJhbnNwYXJlbnQuIEl0IGNhbiBhbHNvIGJlIHVzZWQgZS5nLiwgdG8gY2FycnkgYWRkaXRpb25hbCBkYXRhIHRvIFdlYkhvb2sgcG9saWNpZXMuXG4gICAgICAgKi9cbiAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBoZXgtc2VyaWFsaXplZCBQU0JUICh2ZXJzaW9uIDApLCB3aXRoIG9yIHdpdGhvdXQgbGVhZGluZyAweCBwcmVmaXguXG4gICAgICAgKiBUaGlzIFBTQlQgbXVzdCBjb250YWluIHRoZSB0cmFuc2FjdGlvbiBpbnB1dHMgYW5kIG91dHB1dHMsIHBsdXMgYWxsXG4gICAgICAgKiBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gc2lnbiAoZS5nLiwgdGFwcm9vdCBwYXRoIGFuZCBsZWFmIGluZm9ybWF0aW9uKS5cbiAgICAgICAqL1xuICAgICAgcHNidDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gV2hlbiB0cnVlLCB1bmNvbmRpdGlvbmFsbHkgc2lnbiBldmVyeSBpbnB1dCB0byB0aGUgUFNCVCBjb250cm9sbGVkIGJ5IGEgc2NyaXB0XG4gICAgICAgKiBzcGVuZC4gT3RoZXJ3aXNlIChmYWxzZSwgdGhlIGRlZmF1bHQpLCB0aGlzIGVuZHBvaW50IHVzZXMgYSBoZXVyaXN0aWMgdG8gZGVjaWRlXG4gICAgICAgKiB3aGV0aGVyIHRoZSBzY3JpcHQgY29udHJvbGxpbmcgYSBnaXZlbiBVVFhPIHJlcXVpcmVzIGEgc2lnbmF0dXJlIGZyb20gdGhpcyBrZXkuXG4gICAgICAgKi9cbiAgICAgIHNpZ25fYWxsX3NjcmlwdHM/OiBib29sZWFuO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0byBhIFBTQlQgc2lnbmluZyByZXF1ZXN0ICovXG4gICAgUHNidFNpZ25SZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY3kgZXZhbHVhdGlvbiB0cmVlLiAqL1xuICAgICAgcG9saWN5X2V2YWxfdHJlZT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBQU0JUIGluIHN0YW5kYXJkIGhleCBzZXJpYWxpemF0aW9uLCB3aXRob3V0IGxlYWRpbmcgXCIweFwiLlxuICAgICAgICogQGV4YW1wbGUgNzA3MzYyNzRmZjAxMDA1ZS4uLlxuICAgICAgICovXG4gICAgICBwc2J0OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyB0eXBlIHJlcHJlc2VudHMgYSB3aXJlLWVuY29kYWJsZSBmb3JtIG9mIHRoZSBQdWJsaWNLZXlDcmVkZW50aWFsIGludGVyZmFjZVxuICAgICAqIENsaWVudHMgbWF5IG5lZWQgdG8gbWFudWFsbHkgZW5jb2RlIGludG8gdGhpcyBmb3JtYXQgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgc2VydmVyXG4gICAgICpcbiAgICAgKiBUaGUgUHVibGljS2V5Q3JlZGVudGlhbCBpbnRlcmZhY2UgaW5oZXJpdHMgZnJvbSBDcmVkZW50aWFsXG4gICAgICogW0NSRURFTlRJQUwtTUFOQUdFTUVOVC0xXSwgYW5kIGNvbnRhaW5zIHRoZSBhdHRyaWJ1dGVzIHRoYXQgYXJlIHJldHVybmVkIHRvXG4gICAgICogdGhlIGNhbGxlciB3aGVuIGEgbmV3IGNyZWRlbnRpYWwgaXMgY3JlYXRlZCwgb3IgYSBuZXcgYXNzZXJ0aW9uIGlzXG4gICAgICogcmVxdWVzdGVkLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2lmYWNlLXBrY3JlZGVudGlhbFxuICAgICAqL1xuICAgIFB1YmxpY0tleUNyZWRlbnRpYWw6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgaW50ZXJuYWwgc2xvdCBjb250YWlucyB0aGUgcmVzdWx0cyBvZiBwcm9jZXNzaW5nIGNsaWVudCBleHRlbnNpb25zXG4gICAgICAgKiByZXF1ZXN0ZWQgYnkgdGhlIFJlbHlpbmcgUGFydHkgdXBvbiB0aGUgUmVseWluZyBQYXJ0eSdzIGludm9jYXRpb24gb2ZcbiAgICAgICAqIGVpdGhlciBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKCkgb3IgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldCgpLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbC1jbGllbnRleHRlbnNpb25zcmVzdWx0cy1zbG90XG4gICAgICAgKlxuICAgICAgICogSU1QTEVNRU5UQVRJT04gTk9URTogVGhlIHR5cGUgZm9yIHRoaXMgZmllbGQgY29tZXMgZnJvbSB0aGUgdHlwZSBvZiBnZXRDbGllbnRFeHRlbnNpb25SZXN1bHRzKCkgd2hpY2ggYXMgdGhlIGZvbGxvd2luZyBkb2M6XG4gICAgICAgKlxuICAgICAgICogVGhpcyBvcGVyYXRpb24gcmV0dXJucyB0aGUgdmFsdWUgb2YgW1tjbGllbnRFeHRlbnNpb25zUmVzdWx0c11dLCB3aGljaCBpcyBhIG1hcCBjb250YWluaW5nIGV4dGVuc2lvbiBpZGVudGlmaWVyIOKGkiBjbGllbnQgZXh0ZW5zaW9uIG91dHB1dCBlbnRyaWVzIHByb2R1Y2VkIGJ5IHRoZSBleHRlbnNpb27igJlzIGNsaWVudCBleHRlbnNpb24gcHJvY2Vzc2luZy5cbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNyZWYtZm9yLWRvbS1wdWJsaWNrZXljcmVkZW50aWFsLWdldGNsaWVudGV4dGVuc2lvbnJlc3VsdHNcbiAgICAgICAqL1xuICAgICAgY2xpZW50RXh0ZW5zaW9uUmVzdWx0cz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgaW50ZXJuYWwgc2xvdCBjb250YWlucyB0aGUgY3JlZGVudGlhbCBJRCwgY2hvc2VuIGJ5IHRoZVxuICAgICAgICogYXV0aGVudGljYXRvci4gVGhlIGNyZWRlbnRpYWwgSUQgaXMgdXNlZCB0byBsb29rIHVwIGNyZWRlbnRpYWxzIGZvciB1c2UsXG4gICAgICAgKiBhbmQgaXMgdGhlcmVmb3JlIGV4cGVjdGVkIHRvIGJlIGdsb2JhbGx5IHVuaXF1ZSB3aXRoIGhpZ2ggcHJvYmFiaWxpdHlcbiAgICAgICAqIGFjcm9zcyBhbGwgY3JlZGVudGlhbHMgb2YgdGhlIHNhbWUgdHlwZSwgYWNyb3NzIGFsbCBhdXRoZW50aWNhdG9ycy5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWwtaWRlbnRpZmllci1zbG90XG4gICAgICAgKi9cbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEF1dGhlbnRpY2F0b3JzIHJlc3BvbmQgdG8gUmVseWluZyBQYXJ0eSByZXF1ZXN0cyBieSByZXR1cm5pbmcgYW4gb2JqZWN0IGRlcml2ZWQgZnJvbSB0aGUgQXV0aGVudGljYXRvclJlc3BvbnNlIGludGVyZmFjZSAqL1xuICAgICAgcmVzcG9uc2U6XG4gICAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZVwiXVxuICAgICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIERlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyBwdWJsaWMga2V5IGNyZWRlbnRpYWxcbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkaWN0ZGVmLXB1YmxpY2tleWNyZWRlbnRpYWxjcmVhdGlvbm9wdGlvbnNcbiAgICAgKi9cbiAgICBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOiB7XG4gICAgICBhdHRlc3RhdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZVwiXTtcbiAgICAgIGF1dGhlbnRpY2F0b3JTZWxlY3Rpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF1dGhlbnRpY2F0b3JTZWxlY3Rpb25Dcml0ZXJpYVwiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1lbWJlciBjb250YWlucyBhIGNoYWxsZW5nZSBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciBnZW5lcmF0aW5nIHRoZVxuICAgICAgICogbmV3bHkgY3JlYXRlZCBjcmVkZW50aWFs4oCZcyBhdHRlc3RhdGlvbiBvYmplY3QuIFNlZSB0aGUgwqfigK8xMy40LjNcbiAgICAgICAqIENyeXB0b2dyYXBoaWMgQ2hhbGxlbmdlcyBzZWN1cml0eSBjb25zaWRlcmF0aW9uLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbGNyZWF0aW9ub3B0aW9ucy1jaGFsbGVuZ2VcbiAgICAgICAqL1xuICAgICAgY2hhbGxlbmdlOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1lbWJlciBpcyBpbnRlbmRlZCBmb3IgdXNlIGJ5IFJlbHlpbmcgUGFydGllcyB0aGF0IHdpc2ggdG8gbGltaXRcbiAgICAgICAqIHRoZSBjcmVhdGlvbiBvZiBtdWx0aXBsZSBjcmVkZW50aWFscyBmb3IgdGhlIHNhbWUgYWNjb3VudCBvbiBhIHNpbmdsZVxuICAgICAgICogYXV0aGVudGljYXRvci4gVGhlIGNsaWVudCBpcyByZXF1ZXN0ZWQgdG8gcmV0dXJuIGFuIGVycm9yIGlmIHRoZSBuZXdcbiAgICAgICAqIGNyZWRlbnRpYWwgd291bGQgYmUgY3JlYXRlZCBvbiBhbiBhdXRoZW50aWNhdG9yIHRoYXQgYWxzbyBjb250YWlucyBvbmVcbiAgICAgICAqIG9mIHRoZSBjcmVkZW50aWFscyBlbnVtZXJhdGVkIGluIHRoaXMgcGFyYW1ldGVyLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbGNyZWF0aW9ub3B0aW9ucy1leGNsdWRlY3JlZGVudGlhbHNcbiAgICAgICAqL1xuICAgICAgZXhjbHVkZUNyZWRlbnRpYWxzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvclwiXVtdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZW1iZXIgY29udGFpbnMgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIHJlcXVlc3RpbmcgYWRkaXRpb25hbFxuICAgICAgICogcHJvY2Vzc2luZyBieSB0aGUgY2xpZW50IGFuZCBhdXRoZW50aWNhdG9yLiBGb3IgZXhhbXBsZSwgdGhlIGNhbGxlciBtYXlcbiAgICAgICAqIHJlcXVlc3QgdGhhdCBvbmx5IGF1dGhlbnRpY2F0b3JzIHdpdGggY2VydGFpbiBjYXBhYmlsaXRpZXMgYmUgdXNlZCB0b1xuICAgICAgICogY3JlYXRlIHRoZSBjcmVkZW50aWFsLCBvciB0aGF0IHBhcnRpY3VsYXIgaW5mb3JtYXRpb24gYmUgcmV0dXJuZWQgaW4gdGhlXG4gICAgICAgKiBhdHRlc3RhdGlvbiBvYmplY3QuIFNvbWUgZXh0ZW5zaW9ucyBhcmUgZGVmaW5lZCBpbiDCp+KArzkgV2ViQXV0aG5cbiAgICAgICAqIEV4dGVuc2lvbnM7IGNvbnN1bHQgdGhlIElBTkEgXCJXZWJBdXRobiBFeHRlbnNpb24gSWRlbnRpZmllcnNcIiByZWdpc3RyeVxuICAgICAgICogW0lBTkEtV2ViQXV0aG4tUmVnaXN0cmllc10gZXN0YWJsaXNoZWQgYnkgW1JGQzg4MDldIGZvciBhbiB1cC10by1kYXRlXG4gICAgICAgKiBsaXN0IG9mIHJlZ2lzdGVyZWQgV2ViQXV0aG4gRXh0ZW5zaW9ucy5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxjcmVhdGlvbm9wdGlvbnMtZXh0ZW5zaW9uc1xuICAgICAgICovXG4gICAgICBleHRlbnNpb25zPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZW1iZXIgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRlc2lyZWQgcHJvcGVydGllcyBvZiB0aGVcbiAgICAgICAqIGNyZWRlbnRpYWwgdG8gYmUgY3JlYXRlZC4gVGhlIHNlcXVlbmNlIGlzIG9yZGVyZWQgZnJvbSBtb3N0IHByZWZlcnJlZCB0b1xuICAgICAgICogbGVhc3QgcHJlZmVycmVkLiBUaGUgY2xpZW50IG1ha2VzIGEgYmVzdC1lZmZvcnQgdG8gY3JlYXRlIHRoZSBtb3N0XG4gICAgICAgKiBwcmVmZXJyZWQgY3JlZGVudGlhbCB0aGF0IGl0IGNhbi5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxjcmVhdGlvbm9wdGlvbnMtcHVia2V5Y3JlZHBhcmFtc1xuICAgICAgICovXG4gICAgICBwdWJLZXlDcmVkUGFyYW1zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxQYXJhbWV0ZXJzXCJdW107XG4gICAgICBycDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsUnBFbnRpdHlcIl07XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1lbWJlciBzcGVjaWZpZXMgYSB0aW1lLCBpbiBtaWxsaXNlY29uZHMsIHRoYXQgdGhlIGNhbGxlciBpc1xuICAgICAgICogd2lsbGluZyB0byB3YWl0IGZvciB0aGUgY2FsbCB0byBjb21wbGV0ZS4gVGhpcyBpcyB0cmVhdGVkIGFzIGEgaGludCwgYW5kXG4gICAgICAgKiBNQVkgYmUgb3ZlcnJpZGRlbiBieSB0aGUgY2xpZW50LlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbGNyZWF0aW9ub3B0aW9ucy10aW1lb3V0XG4gICAgICAgKi9cbiAgICAgIHRpbWVvdXQ/OiBudW1iZXIgfCBudWxsO1xuICAgICAgdXNlcjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsVXNlckVudGl0eVwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGRpY3Rpb25hcnkgY29udGFpbnMgdGhlIGF0dHJpYnV0ZXMgdGhhdCBhcmUgc3BlY2lmaWVkIGJ5IGEgY2FsbGVyIHdoZW5cbiAgICAgKiByZWZlcnJpbmcgdG8gYSBwdWJsaWMga2V5IGNyZWRlbnRpYWwgYXMgYW4gaW5wdXQgcGFyYW1ldGVyIHRvIHRoZSBjcmVhdGUoKVxuICAgICAqIG9yIGdldCgpIG1ldGhvZHMuIEl0IG1pcnJvcnMgdGhlIGZpZWxkcyBvZiB0aGUgUHVibGljS2V5Q3JlZGVudGlhbCBvYmplY3RcbiAgICAgKiByZXR1cm5lZCBieSB0aGUgbGF0dGVyIG1ldGhvZHMuXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZGljdGlvbmFyeS1jcmVkZW50aWFsLWRlc2NyaXB0b3JcbiAgICAgKi9cbiAgICBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvcjoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZW1iZXIgY29udGFpbnMgdGhlIGNyZWRlbnRpYWwgSUQgb2YgdGhlIHB1YmxpYyBrZXkgY3JlZGVudGlhbCB0aGUgY2FsbGVyIGlzIHJlZmVycmluZyB0by5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxkZXNjcmlwdG9yLWlkXG4gICAgICAgKi9cbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIE9QVElPTkFMIG1lbWJlciBjb250YWlucyBhIGhpbnQgYXMgdG8gaG93IHRoZSBjbGllbnQgbWlnaHRcbiAgICAgICAqIGNvbW11bmljYXRlIHdpdGggdGhlIG1hbmFnaW5nIGF1dGhlbnRpY2F0b3Igb2YgdGhlIHB1YmxpYyBrZXkgY3JlZGVudGlhbFxuICAgICAgICogdGhlIGNhbGxlciBpcyByZWZlcnJpbmcgdG8uIFRoZSB2YWx1ZXMgU0hPVUxEIGJlIG1lbWJlcnMgb2ZcbiAgICAgICAqIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQgYnV0IGNsaWVudCBwbGF0Zm9ybXMgTVVTVCBpZ25vcmUgdW5rbm93biB2YWx1ZXMuXG4gICAgICAgKlxuICAgICAgICogVGhlIGdldFRyYW5zcG9ydHMoKSBvcGVyYXRpb24gY2FuIHByb3ZpZGUgc3VpdGFibGUgdmFsdWVzIGZvciB0aGlzXG4gICAgICAgKiBtZW1iZXIuIFdoZW4gcmVnaXN0ZXJpbmcgYSBuZXcgY3JlZGVudGlhbCwgdGhlIFJlbHlpbmcgUGFydHkgU0hPVUxEXG4gICAgICAgKiBzdG9yZSB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbSBnZXRUcmFuc3BvcnRzKCkuIFdoZW4gY3JlYXRpbmcgYVxuICAgICAgICogUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3IgZm9yIHRoYXQgY3JlZGVudGlhbCwgdGhlIFJlbHlpbmcgUGFydHlcbiAgICAgICAqIFNIT1VMRCByZXRyaWV2ZSB0aGF0IHN0b3JlZCB2YWx1ZSBhbmQgc2V0IGl0IGFzIHRoZSB2YWx1ZSBvZiB0aGVcbiAgICAgICAqIHRyYW5zcG9ydHMgbWVtYmVyLlxuICAgICAgICovXG4gICAgICB0cmFuc3BvcnRzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBdXRoZW50aWNhdG9yVHJhbnNwb3J0XCJdW10gfCBudWxsO1xuICAgICAgdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsVHlwZVwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGRpY3Rpb25hcnkgaXMgdXNlZCB0byBzdXBwbHkgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIHdoZW4gY3JlYXRpbmcgYSBuZXdcbiAgICAgKiBjcmVkZW50aWFsLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RpY3Rpb25hcnktY3JlZGVudGlhbC1wYXJhbXNcbiAgICAgKi9cbiAgICBQdWJsaWNLZXlDcmVkZW50aWFsUGFyYW1ldGVyczoge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZW1iZXIgc3BlY2lmaWVzIHRoZSBjcnlwdG9ncmFwaGljIHNpZ25hdHVyZSBhbGdvcml0aG0gd2l0aCB3aGljaFxuICAgICAgICogdGhlIG5ld2x5IGdlbmVyYXRlZCBjcmVkZW50aWFsIHdpbGwgYmUgdXNlZCwgYW5kIHRodXMgYWxzbyB0aGUgdHlwZSBvZlxuICAgICAgICogYXN5bW1ldHJpYyBrZXkgcGFpciB0byBiZSBnZW5lcmF0ZWQsIGUuZy4sIFJTQSBvciBFbGxpcHRpYyBDdXJ2ZS5cbiAgICAgICAqL1xuICAgICAgYWxnOiBudW1iZXI7XG4gICAgICB0eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxUeXBlXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSBgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zYCBkaWN0aW9uYXJ5IHN1cHBsaWVzIGdldCgpIHdpdGggdGhlXG4gICAgICogZGF0YSBpdCBuZWVkcyB0byBnZW5lcmF0ZSBhbiBhc3NlcnRpb24uIEl0cyBjaGFsbGVuZ2UgbWVtYmVyIE1VU1QgYmVcbiAgICAgKiBwcmVzZW50LCB3aGlsZSBpdHMgb3RoZXIgbWVtYmVycyBhcmUgT1BUSU9OQUwuXG4gICAgICpcbiAgICAgKiBUaGlzIHN0cnVjdCBpcyBhbHNvIHVzZWQgYXMgcGFydCBvZiB0aGUgdmVyaWZpY2F0aW9uIHByb2NlZHVyZSBmb3IgYXNzZXJ0aW9uc1xuICAgICAqL1xuICAgIFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBPUFRJT05BTCBtZW1iZXIgY29udGFpbnMgYSBsaXN0IG9mIFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yXG4gICAgICAgKiBvYmplY3RzIHJlcHJlc2VudGluZyBwdWJsaWMga2V5IGNyZWRlbnRpYWxzIGFjY2VwdGFibGUgdG8gdGhlIGNhbGxlciwgaW5cbiAgICAgICAqIGRlc2NlbmRpbmcgb3JkZXIgb2YgdGhlIGNhbGxlcuKAmXMgcHJlZmVyZW5jZSAodGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3RcbiAgICAgICAqIGlzIHRoZSBtb3N0IHByZWZlcnJlZCBjcmVkZW50aWFsLCBhbmQgc28gb24gZG93biB0aGUgbGlzdCkuXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFscmVxdWVzdG9wdGlvbnMtYWxsb3djcmVkZW50aWFsc1xuICAgICAgICovXG4gICAgICBhbGxvd0NyZWRlbnRpYWxzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvclwiXVtdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZW1iZXIgcmVwcmVzZW50cyBhIGNoYWxsZW5nZSB0aGF0IHRoZSBzZWxlY3RlZCBhdXRoZW50aWNhdG9yXG4gICAgICAgKiBzaWducywgYWxvbmcgd2l0aCBvdGhlciBkYXRhLCB3aGVuIHByb2R1Y2luZyBhbiBhdXRoZW50aWNhdGlvblxuICAgICAgICogYXNzZXJ0aW9uLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbHJlcXVlc3RvcHRpb25zLWNoYWxsZW5nZVxuICAgICAgICovXG4gICAgICBjaGFsbGVuZ2U6IHN0cmluZztcbiAgICAgIGV4dGVuc2lvbnM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIE9QVElPTkFMIG1lbWJlciBzcGVjaWZpZXMgdGhlIHJlbHlpbmcgcGFydHkgaWRlbnRpZmllciBjbGFpbWVkIGJ5XG4gICAgICAgKiB0aGUgY2FsbGVyLiBJZiBvbWl0dGVkLCBpdHMgdmFsdWUgd2lsbCBiZSB0aGUgQ3JlZGVudGlhbHNDb250YWluZXJcbiAgICAgICAqIG9iamVjdOKAmXMgcmVsZXZhbnQgc2V0dGluZ3Mgb2JqZWN0J3Mgb3JpZ2luJ3MgZWZmZWN0aXZlIGRvbWFpbi5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxyZXF1ZXN0b3B0aW9ucy1ycGlkXG4gICAgICAgKi9cbiAgICAgIHJwSWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBPUFRJT05BTCBtZW1iZXIgc3BlY2lmaWVzIGEgdGltZSwgaW4gbWlsbGlzZWNvbmRzLCB0aGF0IHRoZSBjYWxsZXJcbiAgICAgICAqIGlzIHdpbGxpbmcgdG8gd2FpdCBmb3IgdGhlIGNhbGwgdG8gY29tcGxldGUuIFRoZSB2YWx1ZSBpcyB0cmVhdGVkIGFzIGFcbiAgICAgICAqIGhpbnQsIGFuZCBNQVkgYmUgb3ZlcnJpZGRlbiBieSB0aGUgY2xpZW50LlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbHJlcXVlc3RvcHRpb25zLXRpbWVvdXRcbiAgICAgICAqL1xuICAgICAgdGltZW91dD86IG51bWJlciB8IG51bGw7XG4gICAgICB1c2VyVmVyaWZpY2F0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnRcIl07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFB1YmxpY0tleUNyZWRlbnRpYWxScEVudGl0eSBkaWN0aW9uYXJ5IGlzIHVzZWQgdG8gc3VwcGx5IGFkZGl0aW9uYWxcbiAgICAgKiBSZWx5aW5nIFBhcnR5IGF0dHJpYnV0ZXMgd2hlbiBjcmVhdGluZyBhIG5ldyBjcmVkZW50aWFsLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RpY3Rpb25hcnktcnAtY3JlZGVudGlhbC1wYXJhbXNcbiAgICAgKi9cbiAgICBQdWJsaWNLZXlDcmVkZW50aWFsUnBFbnRpdHk6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBSZWx5aW5nIFBhcnR5IGVudGl0eSwgd2hpY2ggc2V0cyB0aGUgUlAgSUQuXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFscnBlbnRpdHktaWRcbiAgICAgICAqL1xuICAgICAgaWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBodW1hbi1wYWxhdGFibGUgbmFtZSBmb3IgdGhlIGVudGl0eS4gSXRzIGZ1bmN0aW9uIGRlcGVuZHMgb24gd2hhdCB0aGVcbiAgICAgICAqIFB1YmxpY0tleUNyZWRlbnRpYWxFbnRpdHkgcmVwcmVzZW50czogV2hlbiBpbmhlcml0ZWQgYnlcbiAgICAgICAqIFB1YmxpY0tleUNyZWRlbnRpYWxScEVudGl0eSBpdCBpcyBhIGh1bWFuLXBhbGF0YWJsZSBpZGVudGlmaWVyIGZvciB0aGVcbiAgICAgICAqIFJlbHlpbmcgUGFydHksIGludGVuZGVkIG9ubHkgZm9yIGRpc3BsYXkuIEZvciBleGFtcGxlLCBcIkFDTUVcbiAgICAgICAqIENvcnBvcmF0aW9uXCIsIFwiV29uZGVyZnVsIFdpZGdldHMsIEluYy5cIiBvciBcItCe0JDQniDQn9GA0LjQvNC10YDRgtC10YVcIi5cbiAgICAgICAqXG4gICAgICAgKiBSZWx5aW5nIFBhcnRpZXMgU0hPVUxEIHBlcmZvcm0gZW5mb3JjZW1lbnQsIGFzIHByZXNjcmliZWQgaW4gU2VjdGlvbiAyLjNcbiAgICAgICAqIG9mIFtSRkM4MjY2XSBmb3IgdGhlIE5pY2tuYW1lIFByb2ZpbGUgb2YgdGhlIFBSRUNJUyBGcmVlZm9ybUNsYXNzXG4gICAgICAgKiBbUkZDODI2NF0sIHdoZW4gc2V0dGluZyBuYW1lJ3MgdmFsdWUsIG9yIGRpc3BsYXlpbmcgdGhlIHZhbHVlIHRvIHRoZVxuICAgICAgICogdXNlci5cbiAgICAgICAqXG4gICAgICAgKiBUaGlzIHN0cmluZyBNQVkgY29udGFpbiBsYW5ndWFnZSBhbmQgZGlyZWN0aW9uIG1ldGFkYXRhLiBSZWx5aW5nIFBhcnRpZXNcbiAgICAgICAqIFNIT1VMRCBjb25zaWRlciBwcm92aWRpbmcgdGhpcyBpbmZvcm1hdGlvbi4gU2VlIMKn4oCvNi40LjIgTGFuZ3VhZ2UgYW5kXG4gICAgICAgKiBEaXJlY3Rpb24gRW5jb2RpbmcgYWJvdXQgaG93IHRoaXMgbWV0YWRhdGEgaXMgZW5jb2RlZC5cbiAgICAgICAqL1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZW51bWVyYXRpb24gZGVmaW5lcyB0aGUgdmFsaWQgY3JlZGVudGlhbCB0eXBlcy4gSXQgaXMgYW4gZXh0ZW5zaW9uXG4gICAgICogcG9pbnQ7IHZhbHVlcyBjYW4gYmUgYWRkZWQgdG8gaXQgaW4gdGhlIGZ1dHVyZSwgYXMgbW9yZSBjcmVkZW50aWFsIHR5cGVzIGFyZVxuICAgICAqIGRlZmluZWQuIFRoZSB2YWx1ZXMgb2YgdGhpcyBlbnVtZXJhdGlvbiBhcmUgdXNlZCBmb3IgdmVyc2lvbmluZyB0aGVcbiAgICAgKiBBdXRoZW50aWNhdGlvbiBBc3NlcnRpb24gYW5kIGF0dGVzdGF0aW9uIHN0cnVjdHVyZXMgYWNjb3JkaW5nIHRvIHRoZSB0eXBlIG9mXG4gICAgICogdGhlIGF1dGhlbnRpY2F0b3IuICBDdXJyZW50bHkgb25lIGNyZWRlbnRpYWwgdHlwZSBpcyBkZWZpbmVkLCBuYW1lbHlcbiAgICAgKiBcInB1YmxpYy1rZXlcIi5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNlbnVtZGVmLXB1YmxpY2tleWNyZWRlbnRpYWx0eXBlXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBQdWJsaWNLZXlDcmVkZW50aWFsVHlwZTogXCJwdWJsaWMta2V5XCI7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSBQdWJsaWNLZXlDcmVkZW50aWFsVXNlckVudGl0eSBkaWN0aW9uYXJ5IGlzIHVzZWQgdG8gc3VwcGx5IGFkZGl0aW9uYWxcbiAgICAgKiB1c2VyIGFjY291bnQgYXR0cmlidXRlcyB3aGVuIGNyZWF0aW5nIGEgbmV3IGNyZWRlbnRpYWwuXG4gICAgICovXG4gICAgUHVibGljS2V5Q3JlZGVudGlhbFVzZXJFbnRpdHk6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcGFsYXRhYmxlIG5hbWUgZm9yIHRoZSB1c2VyIGFjY291bnQsIGludGVuZGVkIG9ubHkgZm9yIGRpc3BsYXkuXG4gICAgICAgKiBGb3IgZXhhbXBsZSwgXCJBbGV4IE3DvGxsZXJcIiBvciBcIueUsOS4reWAq1wiLiBUaGUgUmVseWluZyBQYXJ0eSBTSE9VTEQgbGV0IHRoZVxuICAgICAgICogdXNlciBjaG9vc2UgdGhpcywgYW5kIFNIT1VMRCBOT1QgcmVzdHJpY3QgdGhlIGNob2ljZSBtb3JlIHRoYW5cbiAgICAgICAqIG5lY2Vzc2FyeS5cbiAgICAgICAqXG4gICAgICAgKiBSZWx5aW5nIFBhcnRpZXMgU0hPVUxEIHBlcmZvcm0gZW5mb3JjZW1lbnQsIGFzIHByZXNjcmliZWQgaW4gU2VjdGlvbiAyLjNcbiAgICAgICAqIG9mIFtSRkM4MjY2XSBmb3IgdGhlIE5pY2tuYW1lIFByb2ZpbGUgb2YgdGhlIFBSRUNJUyBGcmVlZm9ybUNsYXNzXG4gICAgICAgKiBbUkZDODI2NF0sIHdoZW4gc2V0dGluZyBkaXNwbGF5TmFtZSdzIHZhbHVlLCBvciBkaXNwbGF5aW5nIHRoZSB2YWx1ZSB0b1xuICAgICAgICogdGhlIHVzZXIuXG4gICAgICAgKlxuICAgICAgICogVGhpcyBzdHJpbmcgTUFZIGNvbnRhaW4gbGFuZ3VhZ2UgYW5kIGRpcmVjdGlvbiBtZXRhZGF0YS4gUmVseWluZyBQYXJ0aWVzXG4gICAgICAgKiBTSE9VTEQgY29uc2lkZXIgcHJvdmlkaW5nIHRoaXMgaW5mb3JtYXRpb24uIFNlZSDCp+KArzYuNC4yIExhbmd1YWdlIGFuZFxuICAgICAgICogRGlyZWN0aW9uIEVuY29kaW5nIGFib3V0IGhvdyB0aGlzIG1ldGFkYXRhIGlzIGVuY29kZWQuXG4gICAgICAgKlxuICAgICAgICogQ2xpZW50cyBTSE9VTEQgcGVyZm9ybSBlbmZvcmNlbWVudCwgYXMgcHJlc2NyaWJlZCBpbiBTZWN0aW9uIDIuMyBvZlxuICAgICAgICogW1JGQzgyNjZdIGZvciB0aGUgTmlja25hbWUgUHJvZmlsZSBvZiB0aGUgUFJFQ0lTIEZyZWVmb3JtQ2xhc3NcbiAgICAgICAqIFtSRkM4MjY0XSwgb24gZGlzcGxheU5hbWUncyB2YWx1ZSBwcmlvciB0byBkaXNwbGF5aW5nIHRoZSB2YWx1ZSB0byB0aGVcbiAgICAgICAqIHVzZXIgb3IgaW5jbHVkaW5nIHRoZSB2YWx1ZSBhcyBhIHBhcmFtZXRlciBvZiB0aGVcbiAgICAgICAqIGF1dGhlbnRpY2F0b3JNYWtlQ3JlZGVudGlhbCBvcGVyYXRpb24uXG4gICAgICAgKlxuICAgICAgICogV2hlbiBjbGllbnRzLCBjbGllbnQgcGxhdGZvcm1zLCBvciBhdXRoZW50aWNhdG9ycyBkaXNwbGF5IGFcbiAgICAgICAqIGRpc3BsYXlOYW1lJ3MgdmFsdWUsIHRoZXkgc2hvdWxkIGFsd2F5cyB1c2UgVUkgZWxlbWVudHMgdG8gcHJvdmlkZSBhXG4gICAgICAgKiBjbGVhciBib3VuZGFyeSBhcm91bmQgdGhlIGRpc3BsYXllZCB2YWx1ZSwgYW5kIG5vdCBhbGxvdyBvdmVyZmxvdyBpbnRvXG4gICAgICAgKiBvdGhlciBlbGVtZW50cyBbY3NzLW92ZXJmbG93LTNdLlxuICAgICAgICpcbiAgICAgICAqIEF1dGhlbnRpY2F0b3JzIE1VU1QgYWNjZXB0IGFuZCBzdG9yZSBhIDY0LWJ5dGUgbWluaW11bSBsZW5ndGggZm9yIGFcbiAgICAgICAqIGRpc3BsYXlOYW1lIG1lbWJlcuKAmXMgdmFsdWUuIEF1dGhlbnRpY2F0b3JzIE1BWSB0cnVuY2F0ZSBhIGRpc3BsYXlOYW1lXG4gICAgICAgKiBtZW1iZXLigJlzIHZhbHVlIHNvIHRoYXQgaXQgZml0cyB3aXRoaW4gNjQgYnl0ZXMuIFNlZSDCp+KArzYuNC4xIFN0cmluZ1xuICAgICAgICogVHJ1bmNhdGlvbiBhYm91dCB0cnVuY2F0aW9uIGFuZCBvdGhlciBjb25zaWRlcmF0aW9ucy5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWx1c2VyZW50aXR5LWRpc3BsYXluYW1lXG4gICAgICAgKi9cbiAgICAgIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdXNlciBoYW5kbGUgb2YgdGhlIHVzZXIgYWNjb3VudCBlbnRpdHkuIEEgdXNlciBoYW5kbGUgaXMgYW4gb3BhcXVlXG4gICAgICAgKiBieXRlIHNlcXVlbmNlIHdpdGggYSBtYXhpbXVtIHNpemUgb2YgNjQgYnl0ZXMsIGFuZCBpcyBub3QgbWVhbnQgdG8gYmVcbiAgICAgICAqIGRpc3BsYXllZCB0byB0aGUgdXNlci5cbiAgICAgICAqXG4gICAgICAgKiBUbyBlbnN1cmUgc2VjdXJlIG9wZXJhdGlvbiwgYXV0aGVudGljYXRpb24gYW5kIGF1dGhvcml6YXRpb24gZGVjaXNpb25zXG4gICAgICAgKiBNVVNUIGJlIG1hZGUgb24gdGhlIGJhc2lzIG9mIHRoaXMgaWQgbWVtYmVyLCBub3QgdGhlIGRpc3BsYXlOYW1lIG5vclxuICAgICAgICogbmFtZSBtZW1iZXJzLiBTZWUgU2VjdGlvbiA2LjEgb2YgW1JGQzgyNjZdLlxuICAgICAgICpcbiAgICAgICAqIFRoZSB1c2VyIGhhbmRsZSBNVVNUIE5PVCBjb250YWluIHBlcnNvbmFsbHkgaWRlbnRpZnlpbmcgaW5mb3JtYXRpb25cbiAgICAgICAqIGFib3V0IHRoZSB1c2VyLCBzdWNoIGFzIGEgdXNlcm5hbWUgb3IgZS1tYWlsIGFkZHJlc3M7IHNlZSDCp+KArzE0LjYuMSBVc2VyXG4gICAgICAgKiBIYW5kbGUgQ29udGVudHMgZm9yIGRldGFpbHMuIFRoZSB1c2VyIGhhbmRsZSBNVVNUIE5PVCBiZSBlbXB0eSwgdGhvdWdoXG4gICAgICAgKiBpdCBNQVkgYmUgbnVsbC5cbiAgICAgICAqXG4gICAgICAgKiBOb3RlOiB0aGUgdXNlciBoYW5kbGUgb3VnaHQgbm90IGJlIGEgY29uc3RhbnQgdmFsdWUgYWNyb3NzIGRpZmZlcmVudFxuICAgICAgICogYWNjb3VudHMsIGV2ZW4gZm9yIG5vbi1kaXNjb3ZlcmFibGUgY3JlZGVudGlhbHMsIGJlY2F1c2Ugc29tZVxuICAgICAgICogYXV0aGVudGljYXRvcnMgYWx3YXlzIGNyZWF0ZSBkaXNjb3ZlcmFibGUgY3JlZGVudGlhbHMuIFRodXMgYSBjb25zdGFudFxuICAgICAgICogdXNlciBoYW5kbGUgd291bGQgcHJldmVudCBhIHVzZXIgZnJvbSB1c2luZyBzdWNoIGFuIGF1dGhlbnRpY2F0b3Igd2l0aFxuICAgICAgICogbW9yZSB0aGFuIG9uZSBhY2NvdW50IGF0IHRoZSBSZWx5aW5nIFBhcnR5LlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbHVzZXJlbnRpdHktaWRcbiAgICAgICAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFdoZW4gaW5oZXJpdGVkIGJ5IFB1YmxpY0tleUNyZWRlbnRpYWxVc2VyRW50aXR5LCBpdCBpcyBhIGh1bWFuLXBhbGF0YWJsZVxuICAgICAgICogaWRlbnRpZmllciBmb3IgYSB1c2VyIGFjY291bnQuIEl0IGlzIGludGVuZGVkIG9ubHkgZm9yIGRpc3BsYXksIGkuZS4sXG4gICAgICAgKiBhaWRpbmcgdGhlIHVzZXIgaW4gZGV0ZXJtaW5pbmcgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB1c2VyIGFjY291bnRzIHdpdGhcbiAgICAgICAqIHNpbWlsYXIgZGlzcGxheU5hbWVzLiBGb3IgZXhhbXBsZSwgXCJhbGV4bVwiLCBcImFsZXgubXVlbGxlckBleGFtcGxlLmNvbVwiXG4gICAgICAgKiBvciBcIisxNDI1NTU1MTIzNFwiLlxuICAgICAgICpcbiAgICAgICAqIFRoZSBSZWx5aW5nIFBhcnR5IE1BWSBsZXQgdGhlIHVzZXIgY2hvb3NlIHRoaXMgdmFsdWUuIFRoZSBSZWx5aW5nIFBhcnR5XG4gICAgICAgKiBTSE9VTEQgcGVyZm9ybSBlbmZvcmNlbWVudCwgYXMgcHJlc2NyaWJlZCBpbiBTZWN0aW9uIDMuNC4zIG9mIFtSRkM4MjY1XVxuICAgICAgICogZm9yIHRoZSBVc2VybmFtZUNhc2VQcmVzZXJ2ZWQgUHJvZmlsZSBvZiB0aGUgUFJFQ0lTIElkZW50aWZpZXJDbGFzc1xuICAgICAgICogW1JGQzgyNjRdLCB3aGVuIHNldHRpbmcgbmFtZSdzIHZhbHVlLCBvciBkaXNwbGF5aW5nIHRoZSB2YWx1ZSB0byB0aGVcbiAgICAgICAqIHVzZXIuXG4gICAgICAgKlxuICAgICAgICogVGhpcyBzdHJpbmcgTUFZIGNvbnRhaW4gbGFuZ3VhZ2UgYW5kIGRpcmVjdGlvbiBtZXRhZGF0YS4gUmVseWluZyBQYXJ0aWVzXG4gICAgICAgKiBTSE9VTEQgY29uc2lkZXIgcHJvdmlkaW5nIHRoaXMgaW5mb3JtYXRpb24uIFNlZSDCp+KArzYuNC4yIExhbmd1YWdlIGFuZFxuICAgICAgICogRGlyZWN0aW9uIEVuY29kaW5nIGFib3V0IGhvdyB0aGlzIG1ldGFkYXRhIGlzIGVuY29kZWQuXG4gICAgICAgKlxuICAgICAgICogQ2xpZW50cyBTSE9VTEQgcGVyZm9ybSBlbmZvcmNlbWVudCwgYXMgcHJlc2NyaWJlZCBpbiBTZWN0aW9uIDMuNC4zIG9mIFtSRkM4MjY1XSBmb3IgdGhlIFVzZXJuYW1lQ2FzZVByZXNlcnZlZCBQcm9maWxlIG9mIHRoZSBQUkVDSVMgSWRlbnRpZmllckNsYXNzIFtSRkM4MjY0XSwgb24gbmFtZSdzIHZhbHVlIHByaW9yIHRvIGRpc3BsYXlpbmcgdGhlIHZhbHVlIHRvIHRoZSB1c2VyIG9yIGluY2x1ZGluZyB0aGUgdmFsdWUgYXMgYSBwYXJhbWV0ZXIgb2YgdGhlIGF1dGhlbnRpY2F0b3JNYWtlQ3JlZGVudGlhbCBvcGVyYXRpb24uXG4gICAgICAgKi9cbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUHVibGljIGluZm9ybWF0aW9uIGFib3V0IGFuIG9yZ2FuaXphdGlvbi4gKi9cbiAgICBQdWJsaWNPcmdJbmZvOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEV4cGxpY2l0bHkgY29uZmlndXJlZCAoYWxsb3dsaXN0ZWQpIE9wZW5JRCBwcm92aWRlcnMgZm9yIGFuIG9yZyAqL1xuICAgICAgb2lkY19pc3N1ZXJzOiB7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gSW50ZW5kZWQgYXVkaWVuY2VzIChjbGllbnQgSURzKSAqL1xuICAgICAgICBhdWRpZW5jZXM6IHN0cmluZ1tdO1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIElzc3VlciBVUkwgKi9cbiAgICAgICAgaXNzdWVyOiBzdHJpbmc7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgaXNzdWVyIG5pY2tuYW1lICovXG4gICAgICAgIG5pY2tuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdXNlciByb2xlcyBhbGxvd2VkIHRvIHVzZSB0aGlzIElEUCAqL1xuICAgICAgICB1c2VyczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZW1iZXJSb2xlXCJdW107XG4gICAgICB9W107XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcmcgaWRlbnRpZmllclxuICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICovXG4gICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hldGhlciBsb2dnaW5nIGluIHdpdGgganVzdCBhIHBhc3NrZXkgaXMgYWxsb3dlZCAqL1xuICAgICAgcGFzc2tleV9sb2dpbl9lbmFibGVkOiBib29sZWFuO1xuICAgIH07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgUHVycG9zZTpcbiAgICAgIHwgXCJvdHBcIlxuICAgICAgfCBcIm1mYV9yZXNldFwiXG4gICAgICB8IFwib3RwX21mYVwiXG4gICAgICB8IFwiYWxpZW5fcGFzc3dvcmRfcmVzZXRcIlxuICAgICAgfCBcIm1lbWJlcl9wYXNzd29yZF9yZXNldFwiXG4gICAgICB8IFwiYWxpZW5faW52aXRlXCJcbiAgICAgIHwgXCJtZW1iZXJfaW52aXRlXCJcbiAgICAgIHwgXCJ3ZWxjb21lXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVxdWVzdCB0eXBlIGZvciBxdWVyeWluZyBtZXRyaWNzLiAqL1xuICAgIFF1ZXJ5TWV0cmljc1JlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIEVuZCB0aW1lIGluIHNlY29uZHMgc2luY2UgdW5peCBlcG9jaC4gSWYgb21pdHRlZCwgZGVmYXVsdHMgdG8gJ25vdycuXG4gICAgICAgKi9cbiAgICAgIGVuZF90aW1lPzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBncmFudWxhcml0eSwgaW4gc2Vjb25kcywgb2YgdGhlIHJldHVybmVkIGRhdGEgcG9pbnRzLlxuICAgICAgICpcbiAgICAgICAqIFRoaXMgdmFsdWUgaXMgYXV0b21hdGljYWxseSByb3VuZGVkIHVwIHRvIGEgbXVsdGlwbGUgb2YgMzYwMCAoaS5lLiwgMSBob3VyKS5cbiAgICAgICAqIElmIG9taXR0ZWQsIGRlZmF1bHRzIHRvIHRoZSBkdXJhdGlvbiBiZXR3ZWVuIGBlbmRfdGltZWAgYW5kIGBzdGFydF90aW1lYC5cbiAgICAgICAqIE11c3QgYmUgbm8gbGVzcyB0aGFuIDEgaG91ciAoMzYwMCBzZWNvbmRzKSBmb3IgXCJldmVudFwiIG1ldHJpY3MsIGFuZCAxIGRheVxuICAgICAgICogKDg2NDAwIHNlY29uZHMpIGZvciBcImNvdW50XCIgbWV0cmljcy4gQWxzbywgdGhpcyBwZXJpb2QgbXVzdCBub3RcbiAgICAgICAqIGRpdmlkZSB0aGUgYGVuZF90aW1lIC0gc3RhcnRfdGltZWAgcGVyaW9kIGludG8gbW9yZSB0aGFuIDEwMCBkYXRhIHBvaW50cy5cbiAgICAgICAqL1xuICAgICAgcGVyaW9kPzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFJldHVybiB0aGUgcmF3IGRhdGEgaW5zdGVhZCBvZiBjb21wdXRpbmcgdGhlIG1ldHJpYyB2YWx1ZXNcbiAgICAgICAqIChub3Qgc3VwcG9ydGVkIGJ5IGFsbCBtZXRyaWNzKS5cbiAgICAgICAqL1xuICAgICAgcmF3X2RhdGE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gU3RhcnQgdGltZSBpbiBzZWNvbmRzIHNpbmNlIHVuaXggZXBvY2guXG4gICAgICAgKi9cbiAgICAgIHN0YXJ0X3RpbWU6IG51bWJlcjtcbiAgICB9ICYge1xuICAgICAgbWV0cmljX25hbWU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWV0cmljTmFtZVwiXTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG1ldHJpYyBkYXRhIHBvaW50cy4gKi9cbiAgICBRdWVyeU1ldHJpY3NSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBZHZpc29yeSBtZXNzYWdlcyAoZS5nLiwgaWYgbWF4IG51bWJlciBvZiByZXN1bHRzIGlzIHJlYWNoZWQpLiAqL1xuICAgICAgbWVzc2FnZXM/OiBzdHJpbmdbXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwZXJpb2QgZm9yIHdoaWNoIHRoZSBzdGF0aXN0aWMgaXMgY29tcHV0ZWQsIGlmIGFueSAobm90IGFsbCBtZXRyaWNzIHN1cHBvcnQgc3BsaXR0aW5nIHRoZSByZXF1ZXN0ZWQgdGltZSByYW5nZSBpbnRvIGJpbnMpLlxuICAgICAgICogSWYgc2V0LCBlcXVhbHMgdG8gdGhlIHZhbHVlIGZyb20gdGhlIHJlcXVlc3Qgcm91bmRlZCB1cCB0byB0aGUgY2xvc2VzdCBtdWx0aXBsZSBvZiA2MC5cbiAgICAgICAqL1xuICAgICAgcGVyaW9kPzogbnVtYmVyO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBTb21lIG1ldHJpY3MgY2FuIG9wdGlvbmFsbHkgcmV0dXJuIHRoZSByYXcgZGF0YSwgd2hlbiByZXF1ZXN0ZWQuICovXG4gICAgICByYXdfZGF0YToge1xuICAgICAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gICAgICB9W107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIENvbXB1dGVkIGRhdGEgcG9pbnRzLiAqL1xuICAgICAgcmVzdWx0czoge1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBkYXRhIHBvaW50cywgb25lIGZvciBlYWNoIHRpbWUgcGVyaW9kICh0aW1lIHBlcmlvZHMgZm9yIHdoaWNoIHRoZSB2YWx1ZSBpcyAwIGFyZSBvbWl0dGVkKS4gKi9cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIFtrZXk6IHN0cmluZ106IG51bWJlcjtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbWV0cmljIGRpbWVuc2lvbnMuICovXG4gICAgICAgIGRpbWVuc2lvbnM6IHtcbiAgICAgICAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9W107XG4gICAgICBzdGF0PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPcmdNZXRyaWNTdGF0XCJdIHwgbnVsbDtcbiAgICB9O1xuICAgIFJhdGNoZXRDb25maWc6IHtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBsaWZldGltZSAoaW4gc2Vjb25kcykgb2YgYXV0aCB0b2tlbnMgZm9yIHRoaXMgc2Vzc2lvbi5cbiAgICAgICAqIEF1dGggdG9rZW5zIGNhbiBiZSByZWZyZXNoZWQgKHJlbmV3ZWQpIHVzaW5nIGEgdmFsaWQgKHVuZXhwaXJlZClcbiAgICAgICAqIHJlZnJlc2ggdG9rZW4sIGJ1dCBub3QgYmV5b25kIHRoZSBzZXNzaW9uIGxpZmV0aW1lLlxuICAgICAgICogQGRlZmF1bHQgMzAwXG4gICAgICAgKiBAZXhhbXBsZSAzNjAwXG4gICAgICAgKi9cbiAgICAgIGF1dGhfbGlmZXRpbWU/OiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgYW1vdW50IG9mIHRpbWUgKGluIHNlY29uZHMpIHRoYXQgYW4gYXV0aCB0b2tlbiBmb3IgdGhpcyBzZXNzaW9uIHJlbWFpbnNcbiAgICAgICAqIHZhbGlkIGFmdGVyIGl0IGhhcyBiZWVuIHJlZnJlc2hlZCBhbmQgYSBuZXcgYXV0aCB0b2tlbiBoYXMgYmVlbiBpc3N1ZWQuIFRoaXNcbiAgICAgICAqIGhlbHBzIHRvIGFkZHJlc3MgY29uY3VycmVuY3kgaGF6YXJkcywgZm9yIGV4YW1wbGUsIGlmIG9uZSB0aHJlYWQgbWFrZXMgcmVxdWVzdHNcbiAgICAgICAqIHdpdGggYXV0aCB0b2tlbiB3aGlsZSBhbm90aGVyIHJlZnJlc2hlcyBpdC5cbiAgICAgICAqIEBkZWZhdWx0IDMwXG4gICAgICAgKiBAZXhhbXBsZSAzMFxuICAgICAgICovXG4gICAgICBncmFjZV9saWZldGltZT86IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBsaWZldGltZSAoaW4gc2Vjb25kcykgb2YgcmVmcmVzaCB0b2tlbnMgZm9yIHRoaXMgc2Vzc2lvbi5cbiAgICAgICAqIElmIHRoaXMgdmFsdWUgaXMgc2hvcnRlciB0aGFuIHRoZSBzZXNzaW9uIGxpZmV0aW1lLCBpbmFjdGl2ZSBzZXNzaW9uc1xuICAgICAgICogd2lsbCBiZWNvbWUgaW52YWxpZCBvbmNlIHRoZSBhdXRoIGFuZCByZWZyZXNoIHRva2VucyBoYXZlIGJvdGggZXhwaXJlZC5cbiAgICAgICAqIEBkZWZhdWx0IDg2NDAwXG4gICAgICAgKiBAZXhhbXBsZSA0MzIwMFxuICAgICAgICovXG4gICAgICByZWZyZXNoX2xpZmV0aW1lPzogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGxpZmV0aW1lIChpbiBzZWNvbmRzKSBvZiB0aGUgc2Vzc2lvbi5cbiAgICAgICAqIFRoZSBzZXNzaW9uIGNhbm5vdCBiZSBleHRlbmRlZCBiZXlvbmQgaXRzIG9yaWdpbmFsIGxpZmV0aW1lLlxuICAgICAgICogQGRlZmF1bHQgMzE1MzYwMDBcbiAgICAgICAqIEBleGFtcGxlIDg2NDAwXG4gICAgICAgKi9cbiAgICAgIHNlc3Npb25fbGlmZXRpbWU/OiBudW1iZXI7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlY2VpcHQgdGhhdCBhbiBNRkEgcmVxdWVzdCB3YXMgYXBwcm92ZWQuICovXG4gICAgUmVjZWlwdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ29uZmlybWF0aW9uIGNvZGUgdGhlIHVzZXIgbmVlZHMgdG8gcHJlc2VudCB3aGVuIHJlc3VtaW5nIHRoZSBvcmlnaW5hbCByZXF1ZXN0LlxuICAgICAgICogQGV4YW1wbGUgYmExZDc1ZGQtZDk5OS00YzFiLTk0NGQtMjVjMjU0NDBjOGFmXG4gICAgICAgKi9cbiAgICAgIGNvbmZpcm1hdGlvbjogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIGxvZ2dlZC1pbiB1c2VyIHdob3NlIGFjdGlvbiBjcmVhdGVkIHRoaXMgYXBwcm92YWwuICovXG4gICAgICBmaW5hbF9hcHByb3Zlcjogc3RyaW5nO1xuICAgICAgdGltZXN0YW1wOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBSZWZyZXNoR3JhbnRUeXBlOiBcInJlZnJlc2hfdG9rZW5cIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEpTT04tUlBDIHJlcXVlc3Qgb2JqZWN0ICovXG4gICAgUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IElEICovXG4gICAgICBpZD86IHVua25vd247XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEpTT04tUlBDIHZlcnNpb24uICovXG4gICAgICBqc29ucnBjOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE5hbWUgb2YgdGhlIG1ldGhvZCB0byBiZSBpbnZva2VkLiAqL1xuICAgICAgbWV0aG9kOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFBhcmFtZXRlciB2YWx1ZXMgb2YgdGhlIHJlcXVlc3QuICovXG4gICAgICBwYXJhbXM/OiB1bmtub3duO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEFuIGV4dGVuZGVkIGZvcm0gb2YgYFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uc2AgdGhhdCBhbGxvd3MgY2xpZW50cyB0byBkZXJpdmUgdGhlIFdlYkF1dGhuIGNoYWxsZW5nZVxuICAgICAqIGZyb20gYSBzdHJ1Y3R1cmVkIHByZWltYWdlLlxuICAgICAqXG4gICAgICogVGhpcyBlbnN1cmVzIHRoYXQgdGhlIHdlYnVhdGhuIHNpZ25hdHVyZSBjYW4gb25seSBiZSB1c2VkIGZvciBhIHNwZWNpZmljIHB1cnBvc2VcbiAgICAgKi9cbiAgICBSZXF1ZXN0T3B0aW9uc1dpdGhIYXNoOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNoYWxsZW5nZVBpZWNlc1wiXSAmIHtcbiAgICAgIG9wdGlvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZW51bWVyYXRpb27igJlzIHZhbHVlcyBkZXNjcmliZSB0aGUgUmVseWluZyBQYXJ0eSdzIHJlcXVpcmVtZW50cyBmb3JcbiAgICAgKiBjbGllbnQtc2lkZSBkaXNjb3ZlcmFibGUgY3JlZGVudGlhbHMgKGZvcm1lcmx5IGtub3duIGFzIHJlc2lkZW50IGNyZWRlbnRpYWxzXG4gICAgICogb3IgcmVzaWRlbnQga2V5cyk6XG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZW51bWRlZi1yZXNpZGVudGtleXJlcXVpcmVtZW50XG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBSZXNpZGVudEtleVJlcXVpcmVtZW50OiBcImRpc2NvdXJhZ2VkXCIgfCBcInByZWZlcnJlZFwiIHwgXCJyZXF1aXJlZFwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gSlNPTi1SUEMgcmVzcG9uc2Ugb2JqZWN0ICovXG4gICAgUmVzcG9uc2U6IHtcbiAgICAgIGVycm9yPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvck9ialwiXSB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIElEIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgcmVxdWVzdCAqL1xuICAgICAgaWQ/OiB1bmtub3duO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBDb25zdGFudCBcIjIuMFwiICovXG4gICAgICBqc29ucnBjOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFJlc3VsdCwgaWYgc3VjY2VzcyAqL1xuICAgICAgcmVzdWx0PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIG1hcCBvZiBhY3Rpb25zIHRvIHNldHMgb2YgbWVtYmVyc2hpcCByb2xlcyAqL1xuICAgIFJlc3RyaWN0ZWRBY3Rpb25zTWFwOiB7XG4gICAgICBba2V5OiBzdHJpbmddOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1lbWJlclJvbGVcIl1bXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IG9mIHJvbGUgYWN0aW9ucyB0aGF0IGNhbiBiZSByZXN0cmljdGVkIHRvIGEgc2V0IG9mIG1lbWJlciByb2xlc1xuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgUm9sZUFjdGlvbjogXCJDcmVhdGVUb2tlblwiIHwgXCJHZXRLZXlcIjtcbiAgICBSb2xlQXR0ZXN0YXRpb25DbGFpbXM6IHtcbiAgICAgIGV4cDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgaWF0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICBxdWVyeTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSb2xlQXR0ZXN0YXRpb25RdWVyeVwiXTtcbiAgICAgIHJvbGVfaW5mbzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSb2xlSW5mb1wiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBrZXlzIGN1cnJlbnRseSBpbiB0aGlzIHJvbGUuICovXG4gICAgICByb2xlX2tleXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluUm9sZUluZm9cIl1bXSB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBJRHMgb2YgdGhlIHVzZXJzIHdobyBhcmUgY3VycmVudGx5IGluIHRoaXMgcm9sZS4gKi9cbiAgICAgIHJvbGVfdXNlcnM6IHN0cmluZ1tdO1xuICAgIH07XG4gICAgUm9sZUF0dGVzdGF0aW9uUXVlcnk6IHtcbiAgICAgIGtleV9maWx0ZXI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdIHwgbnVsbDtcbiAgICAgIHZlcmJvc2l0eT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUm9sZUF0dGVzdGF0aW9uVmVyYm9zaXR5XCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFNwZWNpZmllcyB3aGljaCByb2xlIHByb3BlcnRpZXMgdG8gaW5jbHVkZSBpbiBhbiBhdHRlc3RhdGlvblxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgUm9sZUF0dGVzdGF0aW9uVmVyYm9zaXR5OiBcIlN1bW1hcnlcIiB8IFwiV2l0aEtleXNcIiB8IFwiRnVsbFwiO1xuICAgIFJvbGVJbmZvOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbW1vbkZpZWxkc1wiXSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlIHJvbGUgaXMgZW5hYmxlZFxuICAgICAgICogQGV4YW1wbGUgdHJ1ZVxuICAgICAgICovXG4gICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEZXByZWNhdGVkLiBUaGUgQ3ViZVNpZ25lciBJRHMgb2YgYXQgbW9zdCAxMDAga2V5cyBhc3NvY2lhdGVkIHdpdGggdGhpcyByb2xlLiAqL1xuICAgICAga2V5cz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5Sb2xlSW5mb1wiXVtdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlIGN1cnJlbnQgdXNlciBpcyBhIG1lbWJlciBvZiB0aGUgcm9sZS4gVGhpcyBpcyBhbHdheXMgdHJ1ZSxcbiAgICAgICAqIGV4Y2VwdCBmb3Igb3duZXJzIHdobyBjYW4gc2VlIHJvbGVzIHRoZXkgYXJlIG5vdCBtZW1iZXJzIG9mLlxuICAgICAgICovXG4gICAgICBtZW1iZXI6IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIHJvbGUgKG11c3QgYmUgYWxwaGFudW1lcmljKVxuICAgICAgICogQGV4YW1wbGUgbXlfcm9sZVxuICAgICAgICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFBvbGljeSB0aGF0IGlzIGNoZWNrZWQgd2hlbmV2ZXIgYSBrZXkgaXMgYWNjZXNzZWQgZm9yIHNpZ25pbmcgdmlhIHRoaXMgcm9sZS5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiU291cmNlSXBBbGxvd2xpc3RcIjogW1xuICAgICAgICogICAgICAgXCIxMjMuNDU2Ljc4LjkvMTZcIlxuICAgICAgICogICAgIF1cbiAgICAgICAqICAgfSxcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiUmVxdWlyZU1mYVwiOiB7XG4gICAgICAgKiAgICAgICBcImNvdW50XCI6IDFcbiAgICAgICAqICAgICB9XG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W107XG4gICAgICByZXN0cmljdGVkX2FjdGlvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUmVzdHJpY3RlZEFjdGlvbnNNYXBcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIHJvbGVcbiAgICAgICAqIEBleGFtcGxlIFJvbGUjYmZlM2VjY2ItNzMxZS00MzBkLWIxZTUtYWMxMzYzZTZiMDZiXG4gICAgICAgKi9cbiAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRGVwcmVjYXRlZC4gVGhlIGxpc3Qgb2YgYXQgbW9zdCAxMDAgdXNlcnMgd2l0aCBhY2Nlc3MgdG8gdGhlIHJvbGUuICovXG4gICAgICB1c2Vycz86IHN0cmluZ1tdIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgcmV0dXJuZWQgd2hlbiByZXF1ZXN0aW5nIGEgcm9sZSBhdHRlc3RhdGlvbi4gKi9cbiAgICBSb2xlSW5mb0p3dDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIEpTT04gV2ViIFRva2VuIHdob3NlIGNsYWltcyBjb250YWluIHRoZSBgUm9sZUluZm9gIHN0cnVjdHVyZS4gKi9cbiAgICAgIGp3dDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgc2NvcGVzIGZvciBhY2Nlc3NpbmcgQ3ViZVNpZ25lciBBUElzICovXG4gICAgU2NvcGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXhwbGljaXRTY29wZVwiXSB8IHN0cmluZztcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgc2V0IG9mIHNjb3Blcy4gKi9cbiAgICBTY29wZVNldDogT25lT2Y8XG4gICAgICBbXG4gICAgICAgIFwiQWxsXCIsXG4gICAgICAgIHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBzY29wZXMgZXhjZXB0IHRoZXNlIChpbmNsdWRpbmcgdGhvc2UgdHJhbnNpdGl2ZWx5IGltcGxpZWQpLiAqL1xuICAgICAgICAgIEFsbEV4Y2VwdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTY29wZVwiXVtdO1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgb2YgdGhlc2Ugc2NvcGVzIChpbmNsdWRpbmcgdGhvc2UgdHJhbnNpdGl2ZWx5IGltcGxpZWQpLiAqL1xuICAgICAgICAgIEFsbE9mOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNjb3BlXCJdW107XG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgPjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIE1GQSBhcHByb3ZhbHMgcmVxdWlyZWQgZm9yIGEgZ2l2ZW4gb3BlcmF0aW9uXG4gICAgICogKGUuZy4gbG9naW4pLiBDYW4gYmUgdXNlZCB0byBwcm9kdWNlIGEgY29uY3JldGUgcG9saWN5IGZvciBhIGdpdmVuIHVzZXJcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIFNlY29uZEZhY3RvclJlcXVpcmVtZW50OiBcIm5vbmVcIiB8IFwiaWZfcmVnaXN0ZXJlZFwiIHwgXCJyZXF1aXJlZFwiO1xuICAgIC8qKlxuICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgKiBAZGVzY3JpcHRpb24gRHVyYXRpb24gbWVhc3VyZWQgaW4gc2Vjb25kc1xuICAgICAqIEEgd3JhcHBlciB0eXBlIGZvciBzZXJpYWxpemF0aW9uIHRoYXQgZW5jb2RlcyBhIGBEdXJhdGlvbmAgYXMgYSBgdTY0YCByZXByZXNlbnRpbmcgdGhlIG51bWJlciBvZiBzZWNvbmRzLlxuICAgICAqL1xuICAgIFNlY29uZHM6IG51bWJlcjtcbiAgICAvKipcbiAgICAgKiBTZWNyZXRBY3Rpb25cbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGFjY2Vzcy1jb250cm9sbGVkIGFjdGlvbnMgdGhhdCBjYW4gYmUgcGVyZm9ybWVkIG9uIGFuIGluZGl2aWR1YWwgcG9saWN5IHNlY3JldC5cbiAgICAgKiBAZXhhbXBsZSByZWFkOnNlY3JldFxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgU2VjcmV0QWN0aW9uOlxuICAgICAgfCBcInJlYWQ6KlwiXG4gICAgICB8IFwicmVhZDppbmZvXCJcbiAgICAgIHwgXCJyZWFkOnNlY3JldFwiXG4gICAgICB8IFwidXBkYXRlOipcIlxuICAgICAgfCBcInVwZGF0ZTpzZWNyZXRcIlxuICAgICAgfCBcInVwZGF0ZTphY2xcIlxuICAgICAgfCBcImRlbGV0ZVwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gYWJvdXQgYSBzcGVjaWZpYyBzZWNyZXQuICovXG4gICAgU2VjcmV0SW5mbzoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgYWNjZXNzLWNvbnRyb2wgZW50cmllcyBmb3IgdGhpcyBzZWNyZXQuICovXG4gICAgICBhY2w/OiB1bmtub3duW10gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmFtZSBvZiB0aGUgc2VjcmV0LiAqL1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdmFsdWUgb2YgYSBwb2xpY3kgc2VjcmV0LiAqL1xuICAgIFNlY3JldFZhbHVlOiBPbmVPZjxcbiAgICAgIFtcbiAgICAgICAgc3RyaW5nLFxuICAgICAgICB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBjbGllbnQncyBlcGhlbWVyYWwgcHVibGljIGtleSB1c2VkIHRvIGRlcml2ZSBhIHNoYXJlZCBrZXkuXG4gICAgICAgICAgICogVGhpcyBpcyBhIGJhc2U2NC1lbmNvZGVkLCBTRUMxLWVuY29kZWQgUDM4NCBwdWJsaWMga2V5LlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGNsaWVudF9wdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBlbmNyeXB0ZWQgc2VjcmV0IHZhbHVlLlxuICAgICAgICAgICAqIFRoaXMgaXMgYSBiYXNlNjQtZW5jb2RlZCBjaXBoZXJ0ZXh0LlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGVuY3J5cHRlZF92YWx1ZTogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBIHNhbHQgdmFsdWUgdXNlZCB0byBkZXJpdmUgYSBzaGFyZWQga2V5IGZvciBBRVMtR0NNLlxuICAgICAgICAgICAqIFRoaXMgaXMgYSBiYXNlNjQtZW5jb2RlZCBieXRlIHN0cmluZy5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBzYWx0OiBzdHJpbmc7XG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgPjtcbiAgICBTZXNzaW9uSW5mbzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZXNzaW9uTWV0YWRhdGFcIl0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGlvbiBkYXRlIChpbiBzZWNvbmRzIHNpbmNlIHVuaXggZXBvY2gpXG4gICAgICAgKi9cbiAgICAgIGNyZWF0ZWRfYXQ6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIEV4cGlyYXRpb24gZGF0ZSAoaW4gc2Vjb25kcyBzaW5jZSB1bml4IGVwb2NoKVxuICAgICAgICovXG4gICAgICBleHA6IG51bWJlcjtcbiAgICAgIGxhc3RfdXNlZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiV2hlcmVBbmRXaGVuXCJdIHwgbnVsbDtcbiAgICAgIGxpZmV0aW1lcz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUmF0Y2hldENvbmZpZ1wiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gZm9yIHRoZSBzZXNzaW9uXG4gICAgICAgKiBAZXhhbXBsZSBPSURDIGxvZ2luIHNlc3Npb25cbiAgICAgICAqL1xuICAgICAgcHVycG9zZTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTGlzdHMgdXNlciBwZXJtaXNzaW9uIGFuZCBhY2Nlc3MgZm9yIHRoZSBzZXNzaW9uXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwic2lnbjoqXCIsXG4gICAgICAgKiAgIFwibWFuYWdlOm1mYTp2b3RlOmNzXCJcbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgc2NvcGVzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTY29wZVwiXVtdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gU2Vzc2lvbiBJRC4gVW5pcXVlbHkgaWRlbnRpZmllcyB0aGUgc2Vzc2lvbiwgYnV0IGNhbm5vdCBiZSB1c2VkIGZvciBhdXRoLlxuICAgICAgICogQGV4YW1wbGUgNzdhYWQyMTAwYzM2MWY0OTc2MzVkZDAwNWM0ZDE1NzgxZTJlNWRmNGI5ZjQ1ZDhlNzRmMzc0MjVjYmMzMGI5ZVxuICAgICAgICovXG4gICAgICBzZXNzaW9uX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29sbGVjdGlvbiBvZiBhdHRyaWJ1dGVzIHJlbGF0ZWQgdG8gYSBTZXNzaW9uLlxuICAgICAqIFRoaXMgaXMgdGhlIGJhY2tlbmQgdmFyaWFudCBvZiBbYENsaWVudFNlc3Npb25NZXRhZGF0YWBdIGFuZCB3b3JrcyBpbiB0YW5kZW0gd2l0aCBpdHMgZnJvbnRlbmQgY291bnRlcnBhcnQuXG4gICAgICovXG4gICAgU2Vzc2lvbk1ldGFkYXRhOiB7XG4gICAgICBjbGllbnQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNsaWVudFByb2ZpbGVcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIHVzZXIgd2hvIGNyZWF0ZWQgdGhlIHNlc3Npb24uXG4gICAgICAgKiBAZXhhbXBsZSBVc2VyI2VmNDEzNmRkLWQyMmYtNDViYy1hNjVjLTEyYjRiYWE3MjlkNFxuICAgICAgICovXG4gICAgICBjcmVhdGVkX2J5Pzogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPUyBTdHJpbmcgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCBzZWUgb3NfaW5mbyBpbnN0ZWFkLiAqL1xuICAgICAgb3M/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgb3NfaW5mbz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT3NJbmZvXCJdO1xuICAgICAgc291cmNlX2lwPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTb3VyY2VJcFwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFVzZXIgYWdlbnQgdGhhdCBjcmVhdGVkIHRoZSBzZXNzaW9uLlxuICAgICAgICogQGV4YW1wbGUgTW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggeC55OyBydjo0Mi4wKSBHZWNrby8yMDEwMDEwMSBGaXJlZm94LzQyLjBcbiAgICAgICAqL1xuICAgICAgdXNlcl9hZ2VudD86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXNwb25zZSBmcm9tIGFueSBvcGVyYXRpb24gb3BlcmF0aW5nIG9uIG11bHRpcGxlIHNlc3Npb25zICovXG4gICAgU2Vzc2lvbnNSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbGlzdCBvZiBzZXNzaW9ucyAqL1xuICAgICAgc2Vzc2lvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vzc2lvbkluZm9cIl1bXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBIHJlcXVlc3QgZm9yIHNldHRpbmcgYW4gT3JnLWxldmVsIHBvbGljeSBzZWNyZXQuXG4gICAgICpcbiAgICAgKiBFaXRoZXIgYHZhbHVlYCBvciBgYWNsYCBtdXN0IGJlIHByb3ZpZGVkLlxuICAgICAqL1xuICAgIFNldFBvbGljeVNlY3JldFJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzZWNyZXQncyBhY2Nlc3MtY29udHJvbCBlbnRyaWVzLlxuICAgICAgICogQ2FuIGJlIGBOb25lYCBpZiB0aGUgcmVxdWVzdCBpcyBjcmVhdGluZyBhIHNlY3JldCB3aXRob3V0IEFDTCBvciB1cGRhdGluZyBhblxuICAgICAgICogZXhpc3Rpbmcgc2VjcmV0J3MgdmFsdWUuXG4gICAgICAgKi9cbiAgICAgIGFjbD86IHVua25vd25bXSB8IG51bGw7XG4gICAgICBpbXBvcnRfa2V5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJbXBvcnRLZXlcIl0gfCBudWxsO1xuICAgICAgdmFsdWU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlY3JldFZhbHVlXCJdIHwgbnVsbDtcbiAgICB9O1xuICAgIFNpZ25EaW1lbnNpb25zOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBzaWduIG9wZXJhdGlvbiAqL1xuICAgICAgb3BlcmF0aW9uOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBtZXRyaWNzIG11c3QgaW5jbHVkZSAnb3JnX2lkJyBhcyBhIGRpbWVuc2lvbi4gKi9cbiAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgIH07XG4gICAgU2lnblJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHBvbGljeSBldmFsdWF0aW9uIHRyZWUuICovXG4gICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICB9ICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaGV4LWVuY29kZWQgcmVzdWx0aW5nIHNpZ25hdHVyZS4gKi9cbiAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgU2lnbmF0dXJlVmVyc2lvbjogXCJlaXBfNzEyX3YzXCIgfCBcImVpcF83MTJfdjRcIiB8IFwicGVyc29uYWxfc2lnblwiO1xuICAgIFNpZ25lZE1lc3NhZ2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBhZGRyZXNzIG9mIHRoZSBzaWduZXIsIHdpdGggbGVhZGluZyAnMHgnXG4gICAgICAgKiBAZXhhbXBsZSAweDAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODlcbiAgICAgICAqL1xuICAgICAgYWRkcmVzczogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIHJlcXVlc3QgcmVjb3JkLiAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHNpZ25hdHVyZSwgaGV4IGVuY29kZWQsIHdpdGggbGVhZGluZyAnMHgnICovXG4gICAgICBzaWduYXR1cmU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgc2lnbmF0dXJlVmVyc2lvbjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTaWduYXR1cmVWZXJzaW9uXCJdO1xuICAgICAgc3RhdHVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1taVN0YXR1c1wiXTtcbiAgICB9O1xuICAgIFNpZ25lckVycm9yQ29kZTpcbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTaWduZXJFcnJvck93bkNvZGVzXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRWYWx1ZUNvZGVcIl1cbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCYWRSZXF1ZXN0RXJyb3JDb2RlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFkR2F0ZXdheUVycm9yQ29kZVwiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk5vdEZvdW5kRXJyb3JDb2RlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRm9yYmlkZGVuRXJyb3JDb2RlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVW5hdXRob3JpemVkRXJyb3JDb2RlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHJlY29uZGl0aW9uRXJyb3JDb2RlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVGltZW91dEVycm9yQ29kZVwiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbmZsaWN0RXJyb3JDb2RlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSW50ZXJuYWxFcnJvckNvZGVcIl07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgU2lnbmVyRXJyb3JPd25Db2RlczpcbiAgICAgIHwgXCJQcmVDb21wdXRlZFwiXG4gICAgICB8IFwiU3RhdHVzQ29kZVdpdGhNZXNzYWdlXCJcbiAgICAgIHwgXCJKcnBjRXJyb3JcIlxuICAgICAgfCBcIlVuaGFuZGxlZEVycm9yXCJcbiAgICAgIHwgXCJQcm94eVN0YXJ0RXJyb3JcIlxuICAgICAgfCBcIkVuY2xhdmVFcnJvclwiXG4gICAgICB8IFwiUG9saWN5RXJyb3JXaXRoRXZhbFRyZWVcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEFuc3dlciB0byBhIFNpZ24taW4gd2l0aCBFdGhlcmV1bSBjaGFsbGVuZ2UuICovXG4gICAgU2l3ZUNvbXBsZXRlUmVxdWVzdDoge1xuICAgICAgY2hhbGxlbmdlX2lkOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaGV4LWVuY29kZWQgRUlQLTE5MSBzaWduYXR1cmUgb2YgdGhlIG1lc3NhZ2UgcmV0dXJuZWQgYnkgdGhlIGNvcnJlc3BvbmRpbmcgUE9TVCAoJ2luaXQnKSBlbmRwb2ludCAqL1xuICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJldHVybmVkIHVwb24gYSBzdWNjZXNzZnVsIFNJV0UgYXV0aGVudGljYXRpb24uICovXG4gICAgU2l3ZUNvbXBsZXRlUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIE9JREMgdG9rZW4gY29ycmVzcG9uZGluZyB0byB0aGUgdXNlciB3aXRoIHRoZSByZXF1ZXN0ZWQgU0lXRSBpZGVudGl0eS4gKi9cbiAgICAgIGlkX3Rva2VuOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhbGl6ZSB0aGUgcmVxdWVzdCB0byBzaWduIGluIHdpdGggZXRoZXJldW0uIFRoZSByZXNwb25zZSB3aWxsXG4gICAgICogY29udGFpbiBhIFNJV0UgbWVzc2FnZSB0aGF0IHRoZSBjbGllbnQgaGFzIHRvIHNpZ24gYW5kIHN1Ym1pdCB2aWEgdGhlXG4gICAgICogY29ycmVzcG9uZGluZyBQQVRDSCBlbmRwb2ludCB3aXRoaW4gNSBtaW51dGVzLlxuICAgICAqL1xuICAgIFNpd2VJbml0UmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgRXRoZXJldW0gYWRkcmVzcyBwZXJmb3JtaW5nIHRoZSBzaWduaW5nIGNvbmZvcm1hbnQgdG8gY2FwaXRhbGl6YXRpb24gZW5jb2RlZCBjaGVja3N1bSBzcGVjaWZpZWQgaW4gRUlQLTU1LiAqL1xuICAgICAgYWRkcmVzczogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgUkZDIDM5ODYgYXV0aG9yaXR5IHRoYXQgaXMgcmVxdWVzdGluZyB0aGUgc2lnbmluZy4gKi9cbiAgICAgIGRvbWFpbjogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSVNPIDg2MDEgZGF0ZXRpbWUgc3RyaW5nIHRoYXQsIGlmIHByZXNlbnQsIGluZGljYXRlcyB3aGVuIHRoZSBzaWduZWQgYXV0aGVudGljYXRpb24gbWVzc2FnZSBpcyBubyBsb25nZXIgdmFsaWQuICovXG4gICAgICBleHBpcmF0aW9uX3RpbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSVNPIDg2MDEgZGF0ZXRpbWUgc3RyaW5nIHRoYXQsIGlmIHByZXNlbnQsIGluZGljYXRlcyB3aGVuIHRoZSBzaWduZWQgYXV0aGVudGljYXRpb24gbWVzc2FnZSB3aWxsIGJlY29tZSB2YWxpZC4gKi9cbiAgICAgIG5vdF9iZWZvcmU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIHN5c3RlbS1zcGVjaWZpYyBpZGVudGlmaWVyIHRoYXQgbWF5IGJlIHVzZWQgdG8gdW5pcXVlbHkgcmVmZXIgdG8gdGhlIHNpZ24taW4gcmVxdWVzdC4gKi9cbiAgICAgIHJlcXVlc3RfaWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIGxpc3Qgb2YgaW5mb3JtYXRpb24gb3IgcmVmZXJlbmNlcyB0byBpbmZvcm1hdGlvbiB0aGUgdXNlciB3aXNoZXMgdG8gaGF2ZSByZXNvbHZlZCBhcyBwYXJ0IG9mIGF1dGhlbnRpY2F0aW9uIGJ5IHRoZSByZWx5aW5nIHBhcnR5LiBUaGV5IGFyZSBleHByZXNzZWQgYXMgUkZDIDM5ODYgVVJJcyBzZXBhcmF0ZWQgYnkgXCJcXG4tIFwiIHdoZXJlIFxcbiBpcyB0aGUgYnl0ZSAweDBhLiAqL1xuICAgICAgcmVzb3VyY2VzPzogc3RyaW5nW107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcmVhZGFibGUgQVNDSUkgYXNzZXJ0aW9uIHRoYXQgdGhlIHVzZXIgd2lsbCBzaWduLCBhbmQgaXQgbXVzdCBub3QgY29udGFpbiAnXFxuJyAodGhlIGJ5dGUgMHgwYSkuICovXG4gICAgICBzdGF0ZW1lbnQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBSRkMgMzk4NiBVUkkgcmVmZXJyaW5nIHRvIHRoZSByZXNvdXJjZSB0aGF0IGlzIHRoZSBzdWJqZWN0IG9mIHRoZSBzaWduaW5nIChhcyBpbiB0aGUgc3ViamVjdCBvZiBhIGNsYWltKS4gKi9cbiAgICAgIHVyaTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEEgY2hhbGxlbmdlIHJldHVybmVkIGluIHJlc3BvbnNlIHRvIGEgU2lnbi1JbiB3aXRoIEV0aGVyZXVtIHJlcXVlc3QuXG4gICAgICpcbiAgICAgKiBDb250YWlucyBhIG1lc3NhZ2UgdGhhdCB0aGUgY2xpZW50IG11c3Qgc2lnbiBmb2xsb3dpbmcgRUlQLTE5MVxuICAgICAqIHdpdGggdGhlIHJlcXVlc3RlZCBrZXkgaW4gb3JkZXIgdG8gY29tcGxldGUgYXV0aGVudGljYXRpb24uXG4gICAgICpcbiAgICAgKiBUaGUgY2xpZW50IGhhcyB1bnRpbCB0aGUgbWVzc2FnZSBleHBpcmVzIChidXQgbm8gbW9yZSB0aGFuIDUgbWludXRlcykgdG8gY29tcGxldGUgdGhlIGNoYWxsZW5nZS5cbiAgICAgKi9cbiAgICBTaXdlSW5pdFJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgY2hhbGxlbmdlICh0byBpbmNsdWRlIGluIHRoZSByZXF1ZXN0IHdoZW4gY2FsbGluZyB0aGUgUEFUQ0ggKCdjb21wbGV0ZScpIGVuZHBvaW50KSAqL1xuICAgICAgY2hhbGxlbmdlX2lkOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBtZXNzYWdlIHRvIHNpZ24gZm9sbG93aW5nIHRoZSBFSVAtMTkxIHN0YW5kYXJkLiAqL1xuICAgICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIFNvbGFuYSBhZGRyZXNzIGFuZCB0aGUgY2x1c3RlciBpdCBpcyBvbi4gKi9cbiAgICBTb2xhbmFBZGRyZXNzSW5mbzoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFNvbGFuYSBhZGRyZXNzLlxuICAgICAgICogQGV4YW1wbGUgRVB3NExzTndDWUNZWGFjZTFCS3Z3TGNkN29lWnpSaVlHdUdFNXpmUHZvUHlcbiAgICAgICAqL1xuICAgICAgYWRkcmVzczogc3RyaW5nO1xuICAgICAgY2x1c3RlcjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTb2xhbmFDbHVzdGVyXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFN1cHBvcnRlZCBTb2xhbmEgY2x1c3RlcnMuXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBTb2xhbmFDbHVzdGVyOiBcIm1haW5uZXRcIiB8IFwiZGV2bmV0XCI7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFNvbGFuYSBzaWduaW5nIHJlcXVlc3RcbiAgICAgKiBAZXhhbXBsZSB7XG4gICAgICogICBcIm1lc3NhZ2VfYmFzZTY0XCI6IFwiQVFBQkE4T0tWekxFanN0c3RONHhYcjM5a0xLSFQ4ZDU4ZVFZMVFFczZNZVh3RUZCcnhUQWxVTFgxdHJvTGJXeHVBWFFxZ2JRb2ZHaTZ6OGZKaTdLQUFJZjdZTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUpLMHRuMzlrMjhzK1g4Nlc0N0V2YlJSS25ZQlZROFEvbDJtMUViZlQ3K3ZBUUlDQUFFTUFnQUFBR1FBQUFBQUFBQUFcIlxuICAgICAqIH1cbiAgICAgKi9cbiAgICBTb2xhbmFTaWduUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGJlIGluY2x1ZGVkIGluIHRoZSByZXNwb25zZSwgZXhwbGFpbmluZ1xuICAgICAgICogdGhlIG91dGNvbWUgKGkuZS4sIHBlcm1pdHRlZCB2cy4gZGVuaWVkIHZzLiBNRkEgcmVxdWlyZWQpIG9mIHRoZSBzaWduIHJlcXVlc3QuXG4gICAgICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZXhwbGFpbj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBNRkEgaXMgcmVxdWlyZWQsIGZhaWwgdGhlIHJlcXVlc3QgaW5zdGVhZCBvZiByZXR1cm5pbmcgMjAyIGFuZCBjcmVhdGluZ1xuICAgICAgICogcGVuZGluZyBNRkEgcmVxdWVzdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGZhaWxfb25fbWZhPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG1ldGFkYXRhLiBQYXNzaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYXMgbWV0YWRhdGEgY2FuIGJlIHVzZWQgdG8gbWFrZSByZXZpZXdpbmdcbiAgICAgICAqIG9mIHBlbmRpbmcgTUZBIHJlcXVlc3RzIGFuZC9vciBoaXN0b3JpY2FsIGtleSB0cmFuc2FjdGlvbnMgbW9yZSB0cmFuc3BhcmVudC4gSXQgY2FuIGFsc28gYmUgdXNlZCBlLmcuLCB0byBjYXJyeSBhZGRpdGlvbmFsIGRhdGEgdG8gV2ViSG9vayBwb2xpY2llcy5cbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFNvbGFuYSBiYXNlNjQtZW5jb2RlZCBzZXJpYWxpemVkIE1lc3NhZ2UgKi9cbiAgICAgIG1lc3NhZ2VfYmFzZTY0OiBzdHJpbmc7XG4gICAgfTtcbiAgICBTb2xhbmFUeENtcDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRoZSAncmVjZW50X2Jsb2NraGFzaCcgcHJvcGVydHkgb2YgdGhlIFNvbGFuYSB0cmFuc2FjdGlvbiBpcyBhbGxvd2VkIHRvIGJlIGRpZmZlcmVudC4gKi9cbiAgICAgIGlnbm9yZV9ibG9ja2hhc2g/OiBib29sZWFuO1xuICAgIH07XG4gICAgU291cmNlSXA6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIElQIGFkZHJlc3Mgb2YgdGhlIGNhbGxlci4gKi9cbiAgICAgIHNvdXJjZV9pcDogc3RyaW5nO1xuICAgIH07XG4gICAgU3Rha2VSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBleHBsYWluaW5nXG4gICAgICAgKiB0aGUgb3V0Y29tZSAoaS5lLiwgcGVybWl0dGVkIHZzLiBkZW5pZWQgdnMuIE1GQSByZXF1aXJlZCkgb2YgdGhlIHNpZ24gcmVxdWVzdC5cbiAgICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBleHBsYWluPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIE1GQSBpcyByZXF1aXJlZCwgZmFpbCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIHJldHVybmluZyAyMDIgYW5kIGNyZWF0aW5nXG4gICAgICAgKiBwZW5kaW5nIE1GQSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZmFpbF9vbl9tZmE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuIFBhc3NpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBtYWtlIHJldmlld2luZ1xuICAgICAgICogb2YgcGVuZGluZyBNRkEgcmVxdWVzdHMgYW5kL29yIGhpc3RvcmljYWwga2V5IHRyYW5zYWN0aW9ucyBtb3JlIHRyYW5zcGFyZW50LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGUuZy4sIHRvIGNhcnJ5IGFkZGl0aW9uYWwgZGF0YSB0byBXZWJIb29rIHBvbGljaWVzLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBjaGFpbiBvbiB3aGljaCB3ZSB3aWxsIGRlcG9zaXRcbiAgICAgICAqIEBleGFtcGxlIDVcbiAgICAgICAqL1xuICAgICAgY2hhaW5faWQ6IG51bWJlcjtcbiAgICAgIGRlcG9zaXRfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJEZXBvc2l0VHlwZVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHN0YWtpbmcgYW1vdW50IGluIEdXRUkuXG4gICAgICAgKiBJZiBub3Qgc3BlY2lmaWVkLCBkZWZhdWx0cyB0byAzMl8wMDBfMDAwXzAwMCAoMzIgRVRIKS5cbiAgICAgICAqIE11c3QgYmUgYmV0d2VlbiAxIEVUSCBhbmQgMzIgRVRILlxuICAgICAgICogTXVzdCBub3QgYmUgZGlmZmVyZW50IGZyb20gdGhlIGRlZmF1bHQgdmFsdWUgd2hlbiAnZGVwb3NpdF90eXBlJyBpcyBcIldyYXBwZXJcIi5cbiAgICAgICAqL1xuICAgICAgc3Rha2luZ19hbW91bnRfZ3dlaT86IG51bWJlcjtcbiAgICAgIHVuc2FmZV9jb25mPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVbnNhZmVDb25mXCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB2YWxpZGF0b3IgQkxTIHB1YmxpYyBrZXkgdG8gdXNlLCBvciBgTm9uZWAgdG8gZ2VuZXJhdGUgYSBmcmVzaCBvbmUuXG4gICAgICAgKiBAZXhhbXBsZSAweGE5OWE3NmVkNzc5NmY3YmUyMmQ1YjdlODVkZWViN2M1Njc3ZTg4ZTUxMWUwYjMzNzYxOGY4YzRlYjYxMzQ5YjRiZjJkMTUzZjY0OWY3YjUzMzU5ZmU4Yjk0YTM4ZTQ0Y1xuICAgICAgICovXG4gICAgICB2YWxpZGF0b3Jfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBldGhlcmV1bSBhZGRyZXNzIHRvIHdoaWNoIHdpdGhkcmF3biBmdW5kcyBnb1xuICAgICAgICogQGV4YW1wbGUgMHg4ZTM0ODQ2ODdlNjZjZGQyNmNmMDRjMzY0NzYzM2FiNGYzNTcwMTQ4XG4gICAgICAgKi9cbiAgICAgIHdpdGhkcmF3YWxfYWRkcjogc3RyaW5nO1xuICAgIH07XG4gICAgU3Rha2VSZXNwb25zZTogKHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWN5IGV2YWx1YXRpb24gdHJlZS4gKi9cbiAgICAgIHBvbGljeV9ldmFsX3RyZWU/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICBkZXBvc2l0X3R4OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkRlcG9zaXRUeG5cIl07XG4gICAgfSkgJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdmFsaWRhdG9yIGtleSBpZCAoXCJLZXkjLi4uXCIpXG4gICAgICAgKiBAZXhhbXBsZSBLZXkjZGIxNzMxZjgtMzY1OS00NWMwLTg4NWItZTExZTFmNWI3YmUyXG4gICAgICAgKi9cbiAgICAgIGNyZWF0ZWRfdmFsaWRhdG9yX2tleV9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgU3RhdHVzOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFVzZXJzIHdobyBhcmUgYWxsb3dlZCB0byBhcHByb3ZlLiBNdXN0IGJlIG5vbi1lbXB0eS4gKi9cbiAgICAgIGFsbG93ZWRfYXBwcm92ZXJzOiBzdHJpbmdbXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsb3dlZCBhcHByb3ZhbCB0eXBlcy4gV2hlbiBvbWl0dGVkLCBkZWZhdWx0cyB0byBhbnkuICovXG4gICAgICBhbGxvd2VkX21mYV90eXBlcz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhVHlwZVwiXVtdIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVXNlcnMgd2hvIGhhdmUgYWxyZWFkeSBhcHByb3ZlZCAqL1xuICAgICAgYXBwcm92ZWRfYnk6IHtcbiAgICAgICAgW2tleTogc3RyaW5nXToge1xuICAgICAgICAgIFtrZXk6IHN0cmluZ106IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXBwcm92YWxJbmZvXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIEhvdyBtYW55IHVzZXJzIG11c3QgYXBwcm92ZVxuICAgICAgICovXG4gICAgICBjb3VudDogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSG93IG1hbnkgYXV0aCBmYWN0b3JzIHRvIHJlcXVpcmUgcGVyIHVzZXJcbiAgICAgICAqL1xuICAgICAgbnVtX2F1dGhfZmFjdG9yczogbnVtYmVyO1xuICAgICAgcmVxdWVzdF9jb21wYXJlcj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSHR0cFJlcXVlc3RDbXBcIl07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXR1cyBvZiBhIHN1YnNjcmlwdGlvblxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgU3Vic2NyaXB0aW9uU3RhdHVzOiBcIkNvbmZpcm1lZFwiIHwgXCJQZW5kaW5nXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIFN1aSBhZGRyZXNzIGFuZCBpdHMgY2hhaW4uICovXG4gICAgU3VpQWRkcmVzc0luZm86IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBTdWkgYWRkcmVzcy5cbiAgICAgICAqIEBleGFtcGxlIDB4NGU4NzEyZTM4YjA5YjU0NjdjMTBmZGM0MGZhNzg2NWE2NTU2Mzk4M2VlYjc0YjI0NmRmOTgxZTYxYTY2Yjk4ZFxuICAgICAgICovXG4gICAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgICBjaGFpbjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTdWlDaGFpblwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTdXBwb3J0ZWQgU3VpIGNoYWlucy5cbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIFN1aUNoYWluOiBcIm1haW5uZXRcIiB8IFwiZGV2bmV0XCIgfCBcInRlc3RuZXRcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlcXVlc3QgdG8gc2lnbiBhIHNlcmlhbGl6ZWQgU1VJIHRyYW5zYWN0aW9uICovXG4gICAgU3VpU2lnblJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFJlcXVlc3QgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcmVzcG9uc2UsIGV4cGxhaW5pbmdcbiAgICAgICAqIHRoZSBvdXRjb21lIChpLmUuLCBwZXJtaXR0ZWQgdnMuIGRlbmllZCB2cy4gTUZBIHJlcXVpcmVkKSBvZiB0aGUgc2lnbiByZXF1ZXN0LlxuICAgICAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGV4cGxhaW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgTUZBIGlzIHJlcXVpcmVkLCBmYWlsIHRoZSByZXF1ZXN0IGluc3RlYWQgb2YgcmV0dXJuaW5nIDIwMiBhbmQgY3JlYXRpbmdcbiAgICAgICAqIHBlbmRpbmcgTUZBIHJlcXVlc3QuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBmYWlsX29uX21mYT86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBtZXRhZGF0YS4gUGFzc2luZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFzIG1ldGFkYXRhIGNhbiBiZSB1c2VkIHRvIG1ha2UgcmV2aWV3aW5nXG4gICAgICAgKiBvZiBwZW5kaW5nIE1GQSByZXF1ZXN0cyBhbmQvb3IgaGlzdG9yaWNhbCBrZXkgdHJhbnNhY3Rpb25zIG1vcmUgdHJhbnNwYXJlbnQuIEl0IGNhbiBhbHNvIGJlIHVzZWQgZS5nLiwgdG8gY2FycnkgYWRkaXRpb25hbCBkYXRhIHRvIFdlYkhvb2sgcG9saWNpZXMuXG4gICAgICAgKi9cbiAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQmFzZTY0LWVuY29kaW5nIG9mIGEgQkNTLXNlcmlhbGl6ZWQgU1VJIHRyYW5zYWN0aW9uLlxuICAgICAgICpcbiAgICAgICAqIFdoZW4gdXNpbmcgdGhlIFNVSSBUeXBlU2NyaXB0IFNESywgdGhlc2UgYnl0ZXNcbiAgICAgICAqIGFyZSByZXR1cm5lZCBieSB0aGUgYFRyYW5zYWN0aW9uLmJ1aWxkKClgIG1ldGhvZC5cbiAgICAgICAqL1xuICAgICAgdHg6IHN0cmluZztcbiAgICB9O1xuICAgIFRhcHJvb3RTaWduUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGJlIGluY2x1ZGVkIGluIHRoZSByZXNwb25zZSwgZXhwbGFpbmluZ1xuICAgICAgICogdGhlIG91dGNvbWUgKGkuZS4sIHBlcm1pdHRlZCB2cy4gZGVuaWVkIHZzLiBNRkEgcmVxdWlyZWQpIG9mIHRoZSBzaWduIHJlcXVlc3QuXG4gICAgICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZXhwbGFpbj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBNRkEgaXMgcmVxdWlyZWQsIGZhaWwgdGhlIHJlcXVlc3QgaW5zdGVhZCBvZiByZXR1cm5pbmcgMjAyIGFuZCBjcmVhdGluZ1xuICAgICAgICogcGVuZGluZyBNRkEgcmVxdWVzdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGZhaWxfb25fbWZhPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG1ldGFkYXRhLiBQYXNzaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYXMgbWV0YWRhdGEgY2FuIGJlIHVzZWQgdG8gbWFrZSByZXZpZXdpbmdcbiAgICAgICAqIG9mIHBlbmRpbmcgTUZBIHJlcXVlc3RzIGFuZC9vciBoaXN0b3JpY2FsIGtleSB0cmFuc2FjdGlvbnMgbW9yZSB0cmFuc3BhcmVudC4gSXQgY2FuIGFsc28gYmUgdXNlZCBlLmcuLCB0byBjYXJyeSBhZGRpdGlvbmFsIGRhdGEgdG8gV2ViSG9vayBwb2xpY2llcy5cbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICBzaWdfa2luZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUYXByb290U2lnbmF0dXJlS2luZFwiXTtcbiAgICAgIHR4OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJ0Y1R4XCJdO1xuICAgIH07XG4gICAgVGFwcm9vdFNpZ25hdHVyZUtpbmQ6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgYW5uZXgsIGFzIHBlciBCSVAzNDEgKi9cbiAgICAgIGFubmV4Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRyYW5zYWN0aW9uIGlucHV0IGluZGV4XG4gICAgICAgKiBAZXhhbXBsZSAwXG4gICAgICAgKi9cbiAgICAgIGlucHV0X2luZGV4OiBudW1iZXI7XG4gICAgICBsZWFmX2hhc2hfY29kZV9zZXBhcmF0b3I/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJ0Y0xlYWZIYXNoQ29kZVNlcGFyYXRvclwiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiB0aGlzIGZpZWxkIGlzIG5vdCBwcmVzZW50IG9yIG51bGwsIG5vIHR3ZWFrIGlzIGFwcGxpZWQuIElmIHRoZSBmaWVsZCBpcyBhblxuICAgICAgICogZW1wdHkgc3RyaW5nLCB0aGUga2V5IGlzIHR3ZWFrZWQgd2l0aCBhbiB1bnNwZW5kYWJsZSBzY3JpcHQgcGF0aCBwZXIgQklQMDM0MS5cbiAgICAgICAqIE90aGVyd2lzZSwgdGhpcyBmaWVsZCBtdXN0IGNvbnRhaW4gYSBiYXNlLTY0IHN0cmluZyBlbmNvZGluZyAzMiBieXRlcyB0aGF0XG4gICAgICAgKiByZXByZXNlbnQgdGhlIE1lcmtsZSByb290IHdpdGggd2hpY2ggdG8gdHdlYWsgdGhlIGtleSBiZWZvcmUgc2lnbmluZy5cbiAgICAgICAqIEBleGFtcGxlIEY0MUhBeTJxNUduOGxhRjJDdU1zWmJSQVFUbUQrNE9iM1ZVTVo3VEJHSzQ9XG4gICAgICAgKi9cbiAgICAgIG1lcmtsZV9yb290Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIHByZXZvdXRzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlByZXZPdXRwdXRzXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSGFzaCB0eXBlIG9mIGFuIGlucHV0J3Mgc2lnbmF0dXJlLCBlbmNvZGVkIGluIHRoZSBsYXN0IGJ5dGUgb2YgdGhlIHNpZ25hdHVyZS5cbiAgICAgICAqIFBvc3NpYmxlIHZhbHVlczpcbiAgICAgICAqIC0gU0lHSEFTSF9BTExcbiAgICAgICAqIC0gU0lHSEFTSF9BTEx8U0lHSEFTSF9BTllPTkVDQU5QQVlcbiAgICAgICAqIC0gU0lHSEFTSF9ERUZBVUxUXG4gICAgICAgKiAtIFNJR0hBU0hfTk9ORVxuICAgICAgICogLSBTSUdIQVNIX05PTkV8U0lHSEFTSF9BTllPTkVDQU5QQVlcbiAgICAgICAqIC0gU0lHSEFTSF9TSU5HTEVcbiAgICAgICAqIC0gU0lHSEFTSF9TSU5HTEV8U0lHSEFTSF9BTllPTkVDQU5QQVlcbiAgICAgICAqIEBleGFtcGxlIFNJR0hBU0hfQUxMXG4gICAgICAgKi9cbiAgICAgIHNpZ2hhc2hfdHlwZTogc3RyaW5nO1xuICAgIH07XG4gICAgVGVsZWdyYW1BdXRoUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdGVsZWdyYW0gYm90IElEICovXG4gICAgICBib3RfaWQ6IHN0cmluZztcbiAgICAgIGVudmlyb25tZW50OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRlbGVncmFtRW52aXJvbm1lbnRcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB0ZWxlZ3JhbSB3ZWJhcHAgZGF0YSAoZm91bmQgaW4gdGhlIGB0Z1dlYkFwcERhdGFgIHBhcmFtZXRlciBlbmNvZGVkIGluIHRoZSBoYXNoIHNlY3Rpb24gb2YgdGhlIFVSTCkgKi9cbiAgICAgIHRnX3dlYl9hcHBfZGF0YTogc3RyaW5nO1xuICAgIH07XG4gICAgVGVsZWdyYW1BdXRoUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIE9JREMgdG9rZW4gY29ycmVzcG9uZGluZyB0byB0aGlzIHRlbGVncmFtIHVzZXIgKi9cbiAgICAgIGlkX3Rva2VuOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGVsZWdyYW0gaGFzIHR3byBlbnZpcm9ubWVudHM6IHByb2R1Y3Rpb24gYW5kIHRlc3RcbiAgICAgKiBFYWNoIG9uZSBoYXMgYW4gYXNzb2NpYXRlZCBwdWJsaWMga2V5IGZvciB2ZXJpZnlpbmcgc2lnbmF0dXJlcyxcbiAgICAgKiBhbmQgd2UgYXNzaWduIGVhY2ggb25lIGEgdW5pcXVlIE9JREMgaXNzdWVyXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBUZWxlZ3JhbUVudmlyb25tZW50OiBcInByb2R1Y3Rpb25cIiB8IFwidGVzdFwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlcXVlc3QgZm9yIHVzaW5nIHRoZSBUZW5kZXJtaW50IHNpZ24gZW5kcG9pbnQuICovXG4gICAgVGVuZGVybWludFNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBleHBsYWluaW5nXG4gICAgICAgKiB0aGUgb3V0Y29tZSAoaS5lLiwgcGVybWl0dGVkIHZzLiBkZW5pZWQgdnMuIE1GQSByZXF1aXJlZCkgb2YgdGhlIHNpZ24gcmVxdWVzdC5cbiAgICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBleHBsYWluPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIE1GQSBpcyByZXF1aXJlZCwgZmFpbCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIHJldHVybmluZyAyMDIgYW5kIGNyZWF0aW5nXG4gICAgICAgKiBwZW5kaW5nIE1GQSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZmFpbF9vbl9tZmE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuIFBhc3NpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBtYWtlIHJldmlld2luZ1xuICAgICAgICogb2YgcGVuZGluZyBNRkEgcmVxdWVzdHMgYW5kL29yIGhpc3RvcmljYWwga2V5IHRyYW5zYWN0aW9ucyBtb3JlIHRyYW5zcGFyZW50LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGUuZy4sIHRvIGNhcnJ5IGFkZGl0aW9uYWwgZGF0YSB0byBXZWJIb29rIHBvbGljaWVzLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGJ5dGVzIG9mIHRoZSBwcm90b2J1Zi1lbmNvZGVkIG1lc3NhZ2UgdG8gc2lnbiBhcyBhIEJBU0U2NCBzdHJpbmcuICovXG4gICAgICBtZXNzYWdlX2Jhc2U2NDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIG9iamVjdCBmb3IgYSB0aHJvdHRsZSB3aGljaCBsaW1pdHMgdGhlIG51bWJlciBvZiBlbnRpdGllcyB3aXRoaW4gYSBnaXZlbiB0aW1lIHdpbmRvdyAqL1xuICAgIFRocm90dGxlQ29uZmlnOiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbnVtYmVyIG9mIGVudGl0aWVzIGFsbG93ZWQgd2l0aGluIHRoZSB3aW5kb3dcbiAgICAgICAqL1xuICAgICAgdGhyZXNob2xkOiBudW1iZXI7XG4gICAgICB3aW5kb3c6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kc1wiXTtcbiAgICB9O1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIFRpbWVvdXRFcnJvckNvZGU6IFwiUG9saWN5RW5naW5lVGltZW91dFwiIHwgXCJXYXNtUG9saWN5RXhlY3V0aW9uVGltZW91dFwiO1xuICAgIFRva2VuUmVxdWVzdDoge1xuICAgICAgZ3JhbnRfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSZWZyZXNoR3JhbnRUeXBlXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVmcmVzaCB0b2tlbiBpc3N1ZWQgdG8gdGhlIGNsaWVudC4gKi9cbiAgICAgIHJlZnJlc2hfdG9rZW46IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBPQXV0aDIgc3RhbmRhcmQgVG9rZW4gUmVzcG9uc2UuXG4gICAgICpcbiAgICAgKiBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzY3NDkjc2VjdGlvbi00LjIuMlxuICAgICAqL1xuICAgIFRva2VuUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGFjY2VzcyB0b2tlbiBpc3N1ZWQgYnkgdGhlIGF1dGhvcml6YXRpb24gc2VydmVyLiAqL1xuICAgICAgYWNjZXNzX3Rva2VuOiBzdHJpbmc7XG4gICAgICBleHBpcmVzX2luOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlY29uZHNcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFuIE9JREMgdG9rZW4gaXNzdWVkIGJ5IEN1YmlzdCwgY29udGFpbmluZyB1c2VyIGluZm9ybWF0aW9uICovXG4gICAgICBpZF90b2tlbj86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZWZyZXNoIHRva2VuIGlzc3VlZCBieSB0aGUgYXV0aG9yaXphdGlvbiBzZXJ2ZXIuICovXG4gICAgICByZWZyZXNoX3Rva2VuPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHR5cGUgb2YgdGhlIHRva2VuIGlzc3VlZC4gVmFsdWUgaXMgY2FzZSBpbnNlbnNpdGl2ZS4gKi9cbiAgICAgIHRva2VuX3R5cGU6IHN0cmluZztcbiAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgfSAmIFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICBUb3RwQXBwcm92ZVJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVE9UUCB2ZXJpZmljYXRpb24gY29kZSAqL1xuICAgICAgY29kZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBTZW50IGZyb20gdGhlIGNsaWVudCB0byB0aGUgc2VydmVyIHRvIGFuc3dlciBhIFRPVFAgY2hhbGxlbmdlICovXG4gICAgVG90cENoYWxsZW5nZUFuc3dlcjoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgY3VycmVudCBUT1RQIGNvZGUgKi9cbiAgICAgIGNvZGU6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBjaGFsbGVuZ2UgdGhhdCB3YXMgcmV0dXJuZWQgZnJvbSB0aGUgUE9TVCBlbmRwb2ludCAqL1xuICAgICAgdG90cF9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgVG90cEluZm86IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgVE9UUCBjaGFsbGVuZ2UuXG4gICAgICAgKiBAZXhhbXBsZSBUb3RwQ2hhbGxlbmdlIzc4OTJlYmJhLTU2M2UtNDg1Yi1iYjdkLWUyNjI2NzM2MzI4NlxuICAgICAgICovXG4gICAgICB0b3RwX2lkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBTdGFuZGFyZCBUT1RQIHVybCB3aGljaCBpbmNsdWRlcyBldmVyeXRoaW5nIG5lZWRlZCB0byBpbml0aWFsaXplIFRPVFAuXG4gICAgICAgKiBAZXhhbXBsZSBvdHBhdXRoOi8vdG90cC9DdWJpc3Q6YWxpY2UtJTQwZXhhbXBsZS5jb20/c2VjcmV0PURBSEY3S0NPVFFXU09NSzRYRkVNTkhYTzRKNDMzT0Q3Jmlzc3Vlcj1DdWJpc3RcbiAgICAgICAqL1xuICAgICAgdG90cF91cmw6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVxdWVzdCB0byByZXNldCBUT1RQLiAqL1xuICAgIFRvdHBSZXNldFJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG5hbWUgb2YgdGhlIGlzc3VlcjsgZGVmYXVsdHMgdG8gXCJDdWJpc3RcIi4gKi9cbiAgICAgIGlzc3Vlcj86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICBUcmFuc2FjdGlvbjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUeXBlZFRyYW5zYWN0aW9uXCJdO1xuICAgIFRyYW5zYWN0aW9uQW5kU3RhdHVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlR5cGVkVHJhbnNhY3Rpb25cIl0gJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBoYXNoIG9mIHRoZSB0cmFuc2FjdGlvbiB0aGF0IHdhcyBzaWduZWQgKi9cbiAgICAgIGhhc2g/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIHJlcXVlc3QgcmVjb3JkLiAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG5vbmNlIChjb21wdXRlZCByaWdodCBiZWZvcmUgc2lnbmluZykgKi9cbiAgICAgIG5vbmNlPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHNpZ25hdHVyZSAqL1xuICAgICAgc2lnbmVkUmF3VHJhbnNhY3Rpb24/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgc3RhdHVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1taVN0YXR1c1wiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTdXBwb3J0ZWQgcXVlcmllc1xuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgVHNRdWVyeU5hbWU6XG4gICAgICB8IFwiQWN0aXZlS2V5c1wiXG4gICAgICB8IFwiQWN0aXZlVXNlcnNcIlxuICAgICAgfCBcIlVuaXF1ZVNpZ25JbnNcIlxuICAgICAgfCBcIlVzZXJDb3VudFwiXG4gICAgICB8IFwiTGF0ZXN0VXNlckNvdW50XCJcbiAgICAgIHwgXCJLZXlDb3VudFwiXG4gICAgICB8IFwiTGF0ZXN0S2V5Q291bnRcIlxuICAgICAgfCBcIkJpbGxpbmdFdmVudHNcIlxuICAgICAgfCBcIk9pZGNMb2dpbnNcIlxuICAgICAgfCBcIlNpZ25FdmVudHNcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIGFib3V0IGEgc2lnbmVkIHRyYW5zYWN0aW9uICovXG4gICAgVHhTaWduYXR1cmU6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gS2VjY2FrIDI1NiBIYXNoIG9mIHRoZSBSTFAgZW5jb2Rpbmcgb2YgdGhlIHRyYW5zYWN0aW9uICovXG4gICAgICBoYXNoOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBub25jZSAoZWl0aGVyIHByb3ZpZGVkIGV4cGxpY2l0bHkgb3IgY29tcHV0ZWQgcmlnaHQgYmVmb3JlIHNpZ25pbmcpICovXG4gICAgICBub25jZTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHNpZ25lZCByYXcgdHJhbnNhY3Rpb25cbiAgICAgICAqIEBleGFtcGxlIDB4ZGIzM2IwM2MyYjgxMDNlMmE4YzM2MWQzYjRmNWFiYzY3Zjk2YzY5MjFkZjZlMTUxZDUzMDg3YTVlMTJiMWU0ZlxuICAgICAgICovXG4gICAgICBzaWduZWRfdHg6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSBzdHJ1Y3QgcmVwcmVzZW50aW5nIHRoZSBwZW5kaW5nIG1lc3NhZ2Ugc3RhdHVzICovXG4gICAgVHhTdGF0dXM6XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBzdGF0dXM6IFwiUGVuZGluZ1wiO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIGFib3V0IGEgc2lnbmVkIHRyYW5zYWN0aW9uICovXG4gICAgICAgICAgc2lnOiB7XG4gICAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEtlY2NhayAyNTYgSGFzaCBvZiB0aGUgUkxQIGVuY29kaW5nIG9mIHRoZSB0cmFuc2FjdGlvbiAqL1xuICAgICAgICAgICAgaGFzaDogc3RyaW5nO1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbm9uY2UgKGVpdGhlciBwcm92aWRlZCBleHBsaWNpdGx5IG9yIGNvbXB1dGVkIHJpZ2h0IGJlZm9yZSBzaWduaW5nKSAqL1xuICAgICAgICAgICAgbm9uY2U6IHN0cmluZztcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzaWduZWQgcmF3IHRyYW5zYWN0aW9uXG4gICAgICAgICAgICAgKiBAZXhhbXBsZSAweGRiMzNiMDNjMmI4MTAzZTJhOGMzNjFkM2I0ZjVhYmM2N2Y5NmM2OTIxZGY2ZTE1MWQ1MzA4N2E1ZTEyYjFlNGZcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2lnbmVkX3R4OiBzdHJpbmc7XG4gICAgICAgICAgfTtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBzdGF0dXM6IFwiU2lnbmVkXCI7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIHJlYXNvbjogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIHN0YXR1czogXCJSZWplY3RlZFwiO1xuICAgICAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXByZXNlbnRzIHRoZSBbRUlQLTcxMl0oaHR0cHM6Ly9laXBzLmV0aGVyZXVtLm9yZy9FSVBTL2VpcC03MTIpIHR5cGVkIGRhdGEgb2JqZWN0LlxuICAgICAqXG4gICAgICogVHlwZWQgZGF0YSBpcyBhIEpTT04gb2JqZWN0IGNvbnRhaW5pbmcgdHlwZSBpbmZvcm1hdGlvbiwgZG9tYWluIHNlcGFyYXRvciBwYXJhbWV0ZXJzIGFuZCB0aGVcbiAgICAgKiBtZXNzYWdlIG9iamVjdC5cbiAgICAgKi9cbiAgICBUeXBlZERhdGE6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgdGhlIFtFSVAtNzEyXShodHRwczovL2VpcHMuZXRoZXJldW0ub3JnL0VJUFMvZWlwLTcxMikgRUlQNzEyRG9tYWluIG9iamVjdC5cbiAgICAgICAqXG4gICAgICAgKiBFSVA3MTJEb21haW4gaXMgYSBKU09OIG9iamVjdCB3aXRoIG9uZSBvciBtb3JlIG9mIHRoZSBiZWxvdyBmaWVsZHMuIFByb3RvY29sIGRlc2lnbmVycyBvbmx5IG5lZWQgdG8gaW5jbHVkZSB0aGUgZmllbGRzIHRoYXQgbWFrZSBzZW5zZSBmb3IgdGhlaXIgc2lnbmluZyBkb21haW4uXG4gICAgICAgKi9cbiAgICAgIGRvbWFpbjoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBFSVAtMTU1IGNoYWluIGlkLiBUaGUgdXNlci1hZ2VudCBzaG91bGQgcmVmdXNlIHNpZ25pbmcgaWYgaXQgZG9lcyBub3QgbWF0Y2ggdGhlXG4gICAgICAgICAqIGN1cnJlbnRseSBhY3RpdmUgY2hhaW4uXG4gICAgICAgICAqIEBleGFtcGxlIDB4MVxuICAgICAgICAgKi9cbiAgICAgICAgY2hhaW5JZD86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHVzZXIgcmVhZGFibGUgbmFtZSBvZiBzaWduaW5nIGRvbWFpbiwgaS5lLiwgdGhlIG5hbWUgb2YgdGhlIERBcHAgb3IgdGhlIHByb3RvY29sLlxuICAgICAgICAgKiBAZXhhbXBsZSBFdGhlciBNYWlsXG4gICAgICAgICAqL1xuICAgICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIGRpc2FtYmlndWF0aW5nIHNhbHQgZm9yIHRoZSBwcm90b2NvbC4gVGhpcyBjYW4gYmUgdXNlZCBhcyBhIGRvbWFpbiBzZXBhcmF0b3Igb2YgbGFzdCByZXNvcnQuIENhbiBiZSBlaXRoZXIgYSBoZXgtZW5jb2RlZCBzdHJpbmcgb3IgYnl0ZSBhcnJheSAqL1xuICAgICAgICBzYWx0Pzogc3RyaW5nIHwgbnVtYmVyW107XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGFkZHJlc3Mgb2YgdGhlIGNvbnRyYWN0IHRoYXQgd2lsbCB2ZXJpZnkgdGhlIHNpZ25hdHVyZS5cbiAgICAgICAgICogQGV4YW1wbGUgMHhDY0NDY2NjY0NDQ0NjQ0NDQ0NDY0NjQ2NjQ2NDQ0NjQ2NjY2NjY2NDXG4gICAgICAgICAqL1xuICAgICAgICB2ZXJpZnlpbmdDb250cmFjdD86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGN1cnJlbnQgbWFqb3IgdmVyc2lvbiBvZiB0aGUgc2lnbmluZyBkb21haW4uIFNpZ25hdHVyZXMgZnJvbSBkaWZmZXJlbnQgdmVyc2lvbnMgYXJlIG5vdFxuICAgICAgICAgKiBjb21wYXRpYmxlLlxuICAgICAgICAgKiBAZXhhbXBsZSAxXG4gICAgICAgICAqL1xuICAgICAgICB2ZXJzaW9uPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBtZXNzYWdlIHRvIGJlIHNpZ25lZC4gKi9cbiAgICAgIG1lc3NhZ2U6IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbiAgICAgIH07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB0eXBlIG9mIHRoZSBtZXNzYWdlLiAqL1xuICAgICAgcHJpbWFyeVR5cGU6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGN1c3RvbSB0eXBlcyB1c2VkIGJ5IHRoaXMgbWVzc2FnZS4gKi9cbiAgICAgIHR5cGVzOiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IHtcbiAgICAgICAgICAvKiogQGV4YW1wbGUgbmFtZSAqL1xuICAgICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgICAvKiogQGV4YW1wbGUgdHlwZSAqL1xuICAgICAgICAgIHR5cGU6IHN0cmluZztcbiAgICAgICAgfVtdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRUlQLTI3MTggdHlwZWQgdHJhbnNhY3Rpb24sIGluY2x1ZGluZyBFSVAtMTU1OSB0cmFuc2FjdGlvbnMgKGB7IFwidHlwZVwiOiBcIjB4MDJcIiAuLi4gfWApLCBhbmQgbGVnYWN5IHRyYW5zYWN0aW9ucyAoYHsgXCJ0eXBlXCI6IFwiMHgwMFwiIC4uLiB9YCkuIEFsbCB2YWx1ZXMgaW4gdGhlIHRyYW5zYWN0aW9uIGFyZSBleHBlY3RlZCB0byBiZSAoMHgtcHJlZml4ZWQgb3Igbm90KSBoZXggc3RyaW5ncyBvciBieXRlIGFycmF5cy4gKi9cbiAgICBUeXBlZFRyYW5zYWN0aW9uOiBPbmVPZjxcbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIC8qKiBAZXhhbXBsZSAweDAxICovXG4gICAgICAgICAgZGF0YT86IHN0cmluZztcbiAgICAgICAgICAvKiogQGV4YW1wbGUgMHg0Y2YxOGE4YTZhMWZmZTc3ZmVjNjAwZGEyYjkwZWMzNWJhMDUwYjA3ICovXG4gICAgICAgICAgZnJvbT86IHN0cmluZztcbiAgICAgICAgICAvKiogQGV4YW1wbGUgMHgxICovXG4gICAgICAgICAgZ2FzPzogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZXhhbXBsZSAweDEgKi9cbiAgICAgICAgICBnYXNQcmljZT86IHN0cmluZztcbiAgICAgICAgICAvKiogQGV4YW1wbGUgMHgxICovXG4gICAgICAgICAgbm9uY2U/OiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBleGFtcGxlIDB4MDY4YmQ1Mjk0MjZmNGYyN2UyNDhiYWYzNmU0NTU4ZTQ0MDczOGZiYiAqL1xuICAgICAgICAgIHRvPzogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZXhhbXBsZSAweDAwICovXG4gICAgICAgICAgdHlwZTogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZXhhbXBsZSAweDEgKi9cbiAgICAgICAgICB2YWx1ZT86IHN0cmluZztcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICAgKiAgIHtcbiAgICAgICAgICAgKiAgICAgXCJhZGRyZXNzXCI6IFwiMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgICogICAgIFwic3RvcmFnZUtleXNcIjogW1xuICAgICAgICAgICAqICAgICAgIFwiMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwXCJcbiAgICAgICAgICAgKiAgICAgXVxuICAgICAgICAgICAqICAgfVxuICAgICAgICAgICAqIF1cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBhY2Nlc3NMaXN0Pzoge1xuICAgICAgICAgICAgLyoqIEBleGFtcGxlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCAqL1xuICAgICAgICAgICAgYWRkcmVzcz86IHN0cmluZztcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgICAgICogICBcIjB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFwiXG4gICAgICAgICAgICAgKiBdXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHN0b3JhZ2VLZXlzPzogc3RyaW5nW107XG4gICAgICAgICAgfVtdO1xuICAgICAgICAgIC8qKiBAZXhhbXBsZSAweDAxICovXG4gICAgICAgICAgZGF0YT86IHN0cmluZztcbiAgICAgICAgICAvKiogQGV4YW1wbGUgMHg0Y2YxOGE4YTdhMWZmZTc3ZmVjNjAwZGEyYjkwZWMzNWJhMDUwYjA3ICovXG4gICAgICAgICAgZnJvbT86IHN0cmluZztcbiAgICAgICAgICAvKiogQGV4YW1wbGUgMHg2MWE4MCAqL1xuICAgICAgICAgIGdhcz86IHN0cmluZztcbiAgICAgICAgICAvKiogQGV4YW1wbGUgMHg5NTAyZjkwMCAqL1xuICAgICAgICAgIG1heEZlZVBlckdhcz86IHN0cmluZztcbiAgICAgICAgICAvKiogQGV4YW1wbGUgMHg5NTAyZjkwMCAqL1xuICAgICAgICAgIG1heFByaW9yaXR5RmVlUGVyR2FzPzogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZXhhbXBsZSAweGIgKi9cbiAgICAgICAgICBub25jZT86IHN0cmluZztcbiAgICAgICAgICAvKiogQGV4YW1wbGUgMHgwNjhiZDUzOTQyNmY0ZjI3ZTI0OGJhZjM2ZTQ1NThlNDQwNzM4ZmJiICovXG4gICAgICAgICAgdG8/OiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBleGFtcGxlIDB4MDIgKi9cbiAgICAgICAgICB0eXBlOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBleGFtcGxlIDB4MSAqL1xuICAgICAgICAgIHZhbHVlPzogc3RyaW5nO1xuICAgICAgICB9LFxuICAgICAgXVxuICAgID47XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgVW5hdXRob3JpemVkRXJyb3JDb2RlOlxuICAgICAgfCBcIkF1dGhvcml6YXRpb25IZWFkZXJNaXNzaW5nXCJcbiAgICAgIHwgXCJFbmRwb2ludFJlcXVpcmVzVXNlclNlc3Npb25cIlxuICAgICAgfCBcIlJlZnJlc2hUb2tlbk1pc3NpbmdcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbnMgdGhhdCBzaG91bGQgYmUgc2V0IG9ubHkgZm9yIGxvY2FsIGRldm5ldCB0ZXN0aW5nLiAqL1xuICAgIFVuc2FmZUNvbmY6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBoZXgtZW5jb2RlZCBhZGRyZXNzIG9mIHRoZSBkZXBvc2l0IGNvbnRyYWN0LiBJZiBvbWl0dGVkLCBpbmZlcnJlZCBmcm9tIGBjaGFpbl9pZGBcbiAgICAgICAqIEBleGFtcGxlIDB4ZmY1MGVkM2QwZWMwM2FjMDFkNGM3OWFhZDc0OTI4YmZmNDhhN2IyYlxuICAgICAgICovXG4gICAgICBkZXBvc2l0X2NvbnRyYWN0X2FkZHI/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGhleC1lbmNvZGVkIDQtYnl0ZSBmb3JrIHZlcnNpb25cbiAgICAgICAqIEBleGFtcGxlIDB4MDAwMDEwMjBcbiAgICAgICAqL1xuICAgICAgZ2VuZXNpc19mb3JrX3ZlcnNpb24/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgVW5zdGFrZVJlcXVlc3Q6IHtcbiAgICAgIGVwb2NoPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaFwiXSB8IG51bGw7XG4gICAgICBmb3JrOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkZvcmtcIl07XG4gICAgICBnZW5lc2lzX2RhdGE6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiR2VuZXNpc0RhdGFcIl07XG4gICAgICBuZXR3b3JrOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk5ldHdvcmtcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0b3IgaW5kZXggKGB1aW50NjRgKSB0byBleGl0LiBZb3UgY2FuIGdldCB0aGUgdmFsaWRhdG9yIGluZGV4IGZyb20gdGhlIEJlYWNvbiBub2RlJ3NcbiAgICAgICAqIGAvZXRoL3YxL2JlYWNvbi9zdGF0ZXMvaGVhZC92YWxpZGF0b3JzL3twdWJrZXl9YCBlbmQtcG9pbnQuIFRoaXMgZW5kIHBvaW50IHJldHVybnMgYW5cbiAgICAgICAqIG9iamVjdCB0aGF0IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSB2YWxpZGF0b3IgKHdob3NlIHB1YmxpYyBrZXkgaXMgYHtwdWJrZXl9YCksXG4gICAgICAgKiBpbmNsdWRpbmcgdGhlIHZhbGlkYXRvciBpbmRleC4gVGhlIHNjaGVtYSBvZiB0aGlzIGVuZC1wb2ludCBpcyBkZWZpbmVkXG4gICAgICAgKiBbaGVyZV0oaHR0cHM6Ly9ldGhlcmV1bS5naXRodWIuaW8vYmVhY29uLUFQSXMvIy9CZWFjb24vZ2V0U3RhdGVWYWxpZGF0b3IpLlxuICAgICAgICogQGV4YW1wbGUgMzEzMzdcbiAgICAgICAqL1xuICAgICAgdmFsaWRhdG9yX2luZGV4OiBzdHJpbmc7XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFJlcXVlc3QgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcmVzcG9uc2UsIGV4cGxhaW5pbmdcbiAgICAgICAqIHRoZSBvdXRjb21lIChpLmUuLCBwZXJtaXR0ZWQgdnMuIGRlbmllZCB2cy4gTUZBIHJlcXVpcmVkKSBvZiB0aGUgc2lnbiByZXF1ZXN0LlxuICAgICAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGV4cGxhaW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgTUZBIGlzIHJlcXVpcmVkLCBmYWlsIHRoZSByZXF1ZXN0IGluc3RlYWQgb2YgcmV0dXJuaW5nIDIwMiBhbmQgY3JlYXRpbmdcbiAgICAgICAqIHBlbmRpbmcgTUZBIHJlcXVlc3QuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBmYWlsX29uX21mYT86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBtZXRhZGF0YS4gUGFzc2luZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFzIG1ldGFkYXRhIGNhbiBiZSB1c2VkIHRvIG1ha2UgcmV2aWV3aW5nXG4gICAgICAgKiBvZiBwZW5kaW5nIE1GQSByZXF1ZXN0cyBhbmQvb3IgaGlzdG9yaWNhbCBrZXkgdHJhbnNhY3Rpb25zIG1vcmUgdHJhbnNwYXJlbnQuIEl0IGNhbiBhbHNvIGJlIHVzZWQgZS5nLiwgdG8gY2FycnkgYWRkaXRpb25hbCBkYXRhIHRvIFdlYkhvb2sgcG9saWNpZXMuXG4gICAgICAgKi9cbiAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICB9ICYgUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSByZXNwb25zZSB0byBzaWduIGFuIGV0aDIgdW5zdGFrZSByZXF1ZXN0LiAqL1xuICAgIFVuc3Rha2VSZXNwb25zZToge1xuICAgICAgbWVzc2FnZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJWb2x1bnRhcnlFeGl0XCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQkxTIHNpZ25hdHVyZS5cbiAgICAgICAqIEBleGFtcGxlIDB4OTEwYzdjZDUzN2VkOTFjYzhjNGE4MmYzY2JkODMyZTliZThjMjRhMjJlOWM4NmRmNDc5ZjdjZTQyMDI1ZWE2YTA5NjE5YjQxOGI2NjZhMDYwZTI2MGQyYWFlMzFiOGU1MGU5ZDA1Y2EzNDQyYzdlZWQzYjUwN2U1MjA3ZTE0Njc0Mjc1ZjY4YzJiYTg0YzRiZjZiOGRkMzY0YTMwNGFjYWM4Y2ZhYjM2ODFlMjUxNGI0NDAwZjkyNDJiYzYxMTY0XG4gICAgICAgKi9cbiAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgIH0gJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHBvbGljeSBldmFsdWF0aW9uIHRyZWUuICovXG4gICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICB9ICYgUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGluZm9ybWF0aW9uIG5lZWRlZCB0byB1cGRhdGUgYSBDb250YWN0LiAqL1xuICAgIFVwZGF0ZUNvbnRhY3RSZXF1ZXN0OiB7XG4gICAgICBhZGRyZXNzZXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFkZHJlc3NNYXBcIl0gfCBudWxsO1xuICAgICAgZWRpdF9wb2xpY3k/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVkaXRQb2xpY3lcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBuZXcgc2V0IG9mIGxhYmVscyBmb3IgdGhlIGNvbnRhY3QuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwiY3ViaXN0OmVyYzIwX3Rva2VuXCJcbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgbGFiZWxzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDb250YWN0TGFiZWxcIl1bXSB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEEgbmV3IHZhbHVlIGZvciB0aGUgb3B0aW9uYWwgdXNlci1kZWZpbmVkIG1ldGFkYXRhIGFib3V0IHRoZSBjb250YWN0LiAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBuZXcgbmFtZSBmb3IgdGhlIGNvbnRhY3QuIE11c3QgYmUgYSB1bmlxdWUgbmFtZSBhbW9uZyBjb250YWN0cyBpbiB0aGVcbiAgICAgICAqIG9yZy4gTmFtZSBtdXN0IGNvbnNpc3Qgb2YgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMsIHNwYWNlcywgYC5gIGFuZCBgLWAsXG4gICAgICAgKiBhbmQgY2Fubm90IGJlIGxvbmdlciB0aGFuIDUwIGNoYXJhY3RlcnMuXG4gICAgICAgKiBAZXhhbXBsZSBTYXRvc2hpIE5ha2Ftb3RvXG4gICAgICAgKi9cbiAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgb3duZXI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdIHwgbnVsbDtcbiAgICB9O1xuICAgIFVwZGF0ZUtleVJlcXVlc3Q6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3JlYXRlQW5kVXBkYXRlS2V5UHJvcGVydGllc1wiXSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlcyB0aGUga2V5J3MgYGVuYWJsZWRgIHByb3BlcnR5IHRvIHRoaXMgdmFsdWUuXG4gICAgICAgKiBPbmNlIGRpc2FibGVkLCBhIGtleSBjYW5ub3QgYmUgdXNlZCBmb3Igc2lnbmluZy5cbiAgICAgICAqL1xuICAgICAgZW5hYmxlZD86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCBjaGFuZ2UgdGhlIGtleSdzIHJlZ2lvbiBhZmZpbml0eSB0byB0aGlzIHZhbHVlLlxuICAgICAgICpcbiAgICAgICAqIFRoaXMgaXMgYSByZWdpb24tbG9ja2VkIG9wZXJhdGlvbiwgaS5lLiwgaXQgY2FuIG9ubHkgYmUgcGVyZm9ybWVkXG4gICAgICAgKiBmcm9tIHRoZSByZWdpb24gbWF0Y2hpbmcgdGhlIGtleSdzIGN1cnJlbnQgcmVnaW9uIGFmZmluaXR5XG4gICAgICAgKi9cbiAgICAgIHJlZ2lvbj86IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRpbmcgdGhlIG1ldGFkYXRhIG9ubHkgc3VjY2VlZHMgaWYgdGhlIHZlcnNpb24gbWF0Y2hlcyB0aGlzIHZhbHVlLlxuICAgICAgICovXG4gICAgICB2ZXJzaW9uPzogbnVtYmVyIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUG9saWN5IEVuZ2luZSBjb25maWd1cmF0aW9ucy4gKi9cbiAgICBVcGRhdGVPcmdQb2xpY3lFbmdpbmVDb25maWdzOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBbGxvd2VkIGRvbWFpbnMgZm9yIEhUVFAgcmVxdWVzdHNcbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAgXCJjdWJpc3QuZGV2OjQ0M1wiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIGFsbG93ZWRfaHR0cF9hdXRob3JpdGllczogc3RyaW5nW107XG4gICAgfTtcbiAgICBVcGRhdGVPcmdSZXF1ZXN0OiB7XG4gICAgICBhbGllbl9sb2dpbl9yZXF1aXJlbWVudD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kRmFjdG9yUmVxdWlyZW1lbnRcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTUZBIHR5cGVzIHRoYXQgYXJlIGFsbG93ZWQgdG8gYmUgdXNlZCBmb3IgaW1wbGljaXRseSBzZWN1cml0eS1zZW5zaXRpdmVcbiAgICAgICAqIG9wZXJhdGlvbnMgKGxpa2UgbG9nZ2luZyBpbiwgYWRkaW5nIGFuIE1GQSBmYWN0b3IsIGV4cG9ydGluZyBrZXlzLCBldGMuKS5cbiAgICAgICAqIEBleGFtcGxlIHtcbiAgICAgICAqICAgXCJEZWZhdWx0XCI6IFtcbiAgICAgICAqICAgICBcIkZpZG9cIixcbiAgICAgICAqICAgICBcIlRvdHBcIixcbiAgICAgICAqICAgICBcIkVtYWlsT3RwXCJcbiAgICAgICAqICAgXSxcbiAgICAgICAqICAgXCJLZXlFeHBvcnRcIjogW1xuICAgICAgICogICAgIFwiRmlkb1wiXG4gICAgICAgKiAgIF1cbiAgICAgICAqIH1cbiAgICAgICAqL1xuICAgICAgYWxsb3dlZF9tZmFfdHlwZXM/OiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhVHlwZVwiXVtdO1xuICAgICAgfSB8IG51bGw7XG4gICAgICBjdXN0b21fY2hhaW5zPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDdXN0b21DaGFpbnNEYXRhXCJdIHwgbnVsbDtcbiAgICAgIGRlZmF1bHRfaW52aXRlX2tpbmQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkludml0ZUtpbmRcIl0gfCBudWxsO1xuICAgICAgZW1haWxfcHJlZmVyZW5jZXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVtYWlsUHJlZmVyZW5jZXNcIl0gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0ZSB0aGlzIG9yZydzIGBlbmFibGVkYCBmaWVsZCB0byB0aGlzIHZhbHVlLiAqL1xuICAgICAgZW5hYmxlZD86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgZXh0X3Byb3BzPzpcbiAgICAgICAgfCAoe1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gUGVyIGFsaWVuIHVzZXIga2V5IGNvdW50IHRocmVzaG9sZCwgd2hpY2gsIG9uY2UgZXhjZWVkZWQsIGRpc2FsbG93cyBmdXJ0aGVyIGtleSBjcmVhdGlvbiBieSBhbGllbiB1c2Vycy5cbiAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgKiBUaGlzIHNldHRpbmcgaXMgY2hlY2tlZCBvbmx5IHdoZW4gYW4gYWxpZW4gdXNlciByZXF1ZXN0cyB0byBjcmVhdGUgb3IgaW1wb3J0IGEgbmV3IGtleS5cbiAgICAgICAgICAgICAqIEluIG90aGVyIHdvcmRzLCBvcmcgYWRtaW5zIGNhbiBzdGlsbCBhc3NpZ24gdW5saW1pdGVkIG51bWJlciBvZiBrZXlzIHRvIHRoZWlyIGFsaWVuIHVzZXJzLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBhbGllbl9rZXlfY291bnRfdGhyZXNob2xkPzogbnVtYmVyIHwgbnVsbDtcbiAgICAgICAgICB9ICYge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGluZyB3aWxsIHN1Y2NlZWQgaWYgdGhlIGN1cnJlbnQgdmVyc2lvbiBtYXRjaGVzIHRoaXMgdmFsdWVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdmVyc2lvbj86IG51bWJlciB8IG51bGw7XG4gICAgICAgICAgfSlcbiAgICAgICAgfCBudWxsO1xuICAgICAgaGlzdG9yaWNhbF9kYXRhX2NvbmZpZ3VyYXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkhpc3RvcmljYWxEYXRhQ29uZmlndXJhdGlvblwiXSB8IG51bGw7XG4gICAgICBpZHBfY29uZmlndXJhdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRwQ29uZmlnXCJdIHwgbnVsbDtcbiAgICAgIGtleV9leHBvcnRfcmVxdWlyZW1lbnQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlY29uZEZhY3RvclJlcXVpcmVtZW50XCJdIHwgbnVsbDtcbiAgICAgIG1lbWJlcl9sb2dpbl9yZXF1aXJlbWVudD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kRmFjdG9yUmVxdWlyZW1lbnRcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGUgdGhpcyBvcmcncyBub3RpZmljYXRpb24gZW5kcG9pbnRzLiBOb3RpZmljYXRpb24gZW5kcG9pbnRzIGFyZSBleHBlY3RlZCB0byBiZVxuICAgICAgICogSFRUUFMgVVJMcywgd2hpY2ggYWNjZXB0IFBPU1QgcmVxdWVzdHMuIFRoZSBib2R5IG9mIHRoZSByZXF1ZXN0cyBzZW50IHRvIHRoZXNlIGVuZHBvaW50cyBhcmVcbiAgICAgICAqIGFyZSBmb3JtYXR0ZWQgaW4gSlNPTiBhbmQgaGF2ZSB0aGUgZm9sbG93aW5nIGZvcm1hdDpcbiAgICAgICAqXG4gICAgICAgKiBgYGBqc29uXG4gICAgICAgKiB7XG4gICAgICAgKiBcIm9yZ1wiOiBcIi4uLlwiLFxuICAgICAgICogXCJ1dGNfdGltZXN0YW1wXCI6IFwiLi4uXCIsXG4gICAgICAgKiBcIm9yZ19ldmVudFwiOiBcIi4uLlwiLFxuICAgICAgICogLi4uXG4gICAgICAgKiB9XG4gICAgICAgKiBgYGBcbiAgICAgICAqXG4gICAgICAgKiBgb3JnYCBpcyB0aGUgb3JnIGlkLCBgdXRjX3RpbWVzdGFtcGAgaXMgdGhlIFVUQyB0aW1lc3RhbXAgb2YgdGhlIGV2ZW50IGluIG1pbGxpc2Vjb25kcywgYW5kXG4gICAgICAgKiBgb3JnX2V2ZW50YCBpcyBhIHN0cmluZyBpZGVudGlmeWluZyB0aGUgdHlwZSBvZiBldmVudCB0aGF0IGhhcyBvY2N1cnJlZC4gVGhlIHJlc3Qgb2YgdGhlXG4gICAgICAgKiBmaWVsZHMgcHJvdmlkZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gdGhlIHR5cGUgb2YgdGhlIGV2ZW50LlxuICAgICAgICpcbiAgICAgICAqIEVuZHBvaW50cyBjYW4gb3B0aW9uYWxseSBpbmNsdWRlIGZpbHRlcnMgdG8gY3VzdG9taXplIHRoZSBvcmcgZXZlbnRzIHRoYXQgdGhleSBhcmUgbm90aWZpZWRcbiAgICAgICAqIGFib3V0LiBDdXJyZW50bHksIHRoZSBvbmx5IHN1cHBvcnRlZCBmaWx0ZXIgdHlwZSBpcyBgT25lT2ZgLCB3aGljaCBleHBlY3RzIGEgbGlzdCBvZiBvcmdcbiAgICAgICAqIGV2ZW50IHR5cGVzIHRvIHNlbmQgdG8gdGhlIGVuZHBvaW50LiBJZiBubyBmaWx0ZXIgaXMgY29uZmlndXJlZCwgdGhlIHN5c3RlbSBzZW5kcyBhbGwgb3JnXG4gICAgICAgKiBldmVudHMgdG8gdGhlIGVuZHBvaW50LlxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJ1cmw6XCI6IFwiaHR0cHM6Ly9leGFtcGxlLmNvbS9lbmRwb2ludDFcIlxuICAgICAgICogICB9LFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJmaWx0ZXJcIjoge1xuICAgICAgICogICAgICAgXCJPbmVPZlwiOiBbXG4gICAgICAgKiAgICAgICAgIFwiRXRoMkNvbmN1cnJlbnRBdHRlc3RhdGlvblNpZ25pbmdcIixcbiAgICAgICAqICAgICAgICAgXCJFdGgyQ29uY3VycmVudEJsb2NrU2lnbmluZ1wiXG4gICAgICAgKiAgICAgICBdXG4gICAgICAgKiAgICAgfSxcbiAgICAgICAqICAgICBcInVybDpcIjogXCJodHRwczovL2V4YW1wbGUuY29tL2VuZHBvaW50MlwiXG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgbm90aWZpY2F0aW9uX2VuZHBvaW50cz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTm90aWZpY2F0aW9uRW5kcG9pbnRDb25maWd1cmF0aW9uXCJdW10gfCBudWxsO1xuICAgICAgcGFzc2tleV9jb25maWd1cmF0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQYXNza2V5Q29uZmlnXCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlIHRoaXMgb3JnJ3MgcG9saWNpZXMgKG9sZCBwb2xpY2llcyB3aWxsIGJlIG92ZXJ3cml0dGVuISkuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIk1heERhaWx5VW5zdGFrZVwiOiA1XG4gICAgICAgKiAgIH0sXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIk9yaWdpbkFsbG93bGlzdFwiOiBbXG4gICAgICAgKiAgICAgICBcImh0dHBzOi8vZXhhbXBsZS5jb21cIlxuICAgICAgICogICAgIF1cbiAgICAgICAqICAgfSxcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiU291cmNlSXBBbGxvd2xpc3RcIjogW1xuICAgICAgICogICAgICAgXCIxMC4xLjIuMy84XCIsXG4gICAgICAgKiAgICAgICBcIjE2OS4yNTQuMTcuMS8xNlwiXG4gICAgICAgKiAgICAgXVxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHBvbGljeT86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdIHwgbnVsbDtcbiAgICAgIHBvbGljeV9lbmdpbmVfY29uZmlndXJhdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXBkYXRlT3JnUG9saWN5RW5naW5lQ29uZmlnc1wiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIGFsbCB1c2VyIGxvZ2lucyB3aWxsIHJlcXVpcmUgdGhlIGNsYWltIGBjdWJlc2lnbmVyX3Njb3BlX2NlaWxpbmdgIHRvIGJlIHByZXNlbnQgaW5cbiAgICAgICAqIHRoZSB1c2VyJ3MgdG9rZW4uIFRoaXMgY2xhaW0gaXMgYW4gYXJyYXkgb2Ygc2NvcGVzIChlLmcuIGBbIFwibWFuYWdlOmtleXM6bGlzdFwiLCBcInNpZ246ZXZtOnR4XCIgXWApLFxuICAgICAgICogd2hpY2ggZGVmaW5lIGEgbWF4aW11bSBzZXQgb2Ygc2NvcGVzIHRoZSB1c2VyIG1heSByZXF1ZXN0LiBJZiB0aGUgdXNlcidzIHRva2VuIGRvZXMgbm90IGNvbnRhaW5cbiAgICAgICAqIHRoaXMgY2xhaW0sIHRoZSBsb2dpbiB3aWxsIGJlIHJlamVjdGVkLlxuICAgICAgICpcbiAgICAgICAqIE93bmVycyBvZiB0aGUgb3JnIGFyZSBleGVtcHQgZnJvbSB0aGlzIHJlcXVpcmVtZW50LlxuICAgICAgICovXG4gICAgICByZXF1aXJlX3Njb3BlX2NlaWxpbmc/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlIHRoaXMgb3JnJ3MgVE9UUCBmYWlsdXJlIGxpbWl0LiBBZnRlciB0aGlzIG1hbnkgZmFpbHVyZXMsXG4gICAgICAgKiB0aGUgdXNlciBpcyByYXRlIGxpbWl0ZWQgdW50aWwgdGhlIG5leHQgMzAtc2Vjb25kIFRPVFAgd2luZG93LlxuICAgICAgICovXG4gICAgICB0b3RwX2ZhaWx1cmVfbGltaXQ/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGUgdGhpcyBvcmcncyB1c2VyLWV4cG9ydCBkZWxheSwgaS5lLiwgdGhlIGFtb3VudCBvZiB0aW1lXG4gICAgICAgKiAoaW4gc2Vjb25kcykgYmV0d2VlbiBhIHVzZXIncyBpbml0aWF0aW5nIGFuIGV4cG9ydCBhbmQgdGhlIHRpbWUgd2hlblxuICAgICAgICogZXhwb3J0IGlzIGFsbG93ZWQuIEZvciBzZWN1cml0eSwgdGhpcyBkZWxheSBjYW5ub3QgYmUgc2V0IHRvIGxlc3MgdGhhblxuICAgICAgICogMTcyODAwLCBpLmUuLCAyIGRheXMuXG4gICAgICAgKi9cbiAgICAgIHVzZXJfZXhwb3J0X2RlbGF5PzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0dXJuIHRoaXMgb3JnJ3MgdXNlciBleHBvcnQgb2ZmIChieSBwYXNzaW5nIGB0cnVlYCkgb3Igb24gKGJ5IHBhc3NpbmcgYGZhbHNlYCkuICovXG4gICAgICB1c2VyX2V4cG9ydF9kaXNhYmxlZD86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGUgdGhpcyBvcmcncyB1c2VyLWV4cG9ydCB3aW5kb3csIGkuZS4sIHRoZSBhbW91bnQgb2YgdGltZVxuICAgICAgICogKGluIHNlY29uZHMpIHRoYXQgZXhwb3J0IGlzIGFsbG93ZWQgYWZ0ZXIgdGhlIHVzZXItZXhwb3J0IGRlbGF5LiBBZnRlclxuICAgICAgICogdGhpcyBhbW91bnQgb2YgdGltZSwgdGhlIGV4cG9ydCBpcyBjYW5jZWxlZCBhbmQgbXVzdCBiZSByZS1pbml0aWF0ZWQuXG4gICAgICAgKiBGb3Igc2VjdXJpdHksIHRoaXMgd2luZG93IGNhbm5vdCBiZSBzZXQgdG8gZ3JlYXRlciB0aGFuIDI1OTIwMCwgaS5lLixcbiAgICAgICAqIDMgZGF5cy5cbiAgICAgICAqL1xuICAgICAgdXNlcl9leHBvcnRfd2luZG93PzogbnVtYmVyIHwgbnVsbDtcbiAgICB9O1xuICAgIFVwZGF0ZU9yZ1Jlc3BvbnNlOiB7XG4gICAgICBhbGllbl9sb2dpbl9yZXF1aXJlbWVudD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kRmFjdG9yUmVxdWlyZW1lbnRcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTUZBIHR5cGVzIHRoYXQgYXJlIGFsbG93ZWQgdG8gYmUgdXNlZCBmb3IgaW1wbGljaXRseSBzZWN1cml0eS1zZW5zaXRpdmVcbiAgICAgICAqIG9wZXJhdGlvbnMgKGxpa2UgbG9nZ2luZyBpbiwgYWRkaW5nIGFuIE1GQSBmYWN0b3IsIGV4cG9ydGluZyBrZXlzLCBldGMuKS5cbiAgICAgICAqL1xuICAgICAgYWxsb3dlZF9tZmFfdHlwZXM/OiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhVHlwZVwiXVtdO1xuICAgICAgfSB8IG51bGw7XG4gICAgICBjdXN0b21fY2hhaW5zPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDdXN0b21DaGFpbnNEYXRhXCJdIHwgbnVsbDtcbiAgICAgIGRlZmF1bHRfaW52aXRlX2tpbmQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkludml0ZUtpbmRcIl0gfCBudWxsO1xuICAgICAgZW1haWxfcHJlZmVyZW5jZXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVtYWlsUHJlZmVyZW5jZXNcIl0gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIHRoZSAnZW5hYmxlZCcgcHJvcGVydHkgKi9cbiAgICAgIGVuYWJsZWQ/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgIGV4dF9kYXRhPzpcbiAgICAgICAgfCAoe1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gUGVyIGFsaWVuIHVzZXIga2V5IGNvdW50IHRocmVzaG9sZCwgd2hpY2gsIG9uY2UgZXhjZWVkZWQsIGRpc2FsbG93cyBmdXJ0aGVyIGtleSBjcmVhdGlvbiBieSBhbGllbiB1c2Vycy5cbiAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgKiBUaGlzIHNldHRpbmcgaXMgY2hlY2tlZCBvbmx5IHdoZW4gYW4gYWxpZW4gdXNlciByZXF1ZXN0cyB0byBjcmVhdGUgb3IgaW1wb3J0IGEgbmV3IGtleS5cbiAgICAgICAgICAgICAqIEluIG90aGVyIHdvcmRzLCBvcmcgYWRtaW5zIGNhbiBzdGlsbCBhc3NpZ24gdW5saW1pdGVkIG51bWJlciBvZiBrZXlzIHRvIHRoZWlyIGFsaWVuIHVzZXJzLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBhbGllbl9rZXlfY291bnRfdGhyZXNob2xkPzogbnVtYmVyIHwgbnVsbDtcbiAgICAgICAgICB9ICYge1xuICAgICAgICAgICAgY3JlYXRlZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXSB8IG51bGw7XG4gICAgICAgICAgICBsYXN0X21vZGlmaWVkPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdIHwgbnVsbDtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIFZlcnNpb24gb2YgdGhpcyBvYmplY3RcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdmVyc2lvbj86IG51bWJlcjtcbiAgICAgICAgICB9ICYgUmVjb3JkPHN0cmluZywgbmV2ZXI+KVxuICAgICAgICB8IG51bGw7XG4gICAgICBoaXN0b3JpY2FsX2RhdGFfY29uZmlndXJhdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSGlzdG9yaWNhbERhdGFDb25maWd1cmF0aW9uXCJdIHwgbnVsbDtcbiAgICAgIGlkcF9jb25maWd1cmF0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZHBDb25maWdcIl0gfCBudWxsO1xuICAgICAga2V5X2V4cG9ydF9yZXF1aXJlbWVudD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kRmFjdG9yUmVxdWlyZW1lbnRcIl0gfCBudWxsO1xuICAgICAgbWVtYmVyX2xvZ2luX3JlcXVpcmVtZW50PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNvbmRGYWN0b3JSZXF1aXJlbWVudFwiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoZSBvcmcgKG11c3QgYmUgYWxwaGFudW1lcmljKVxuICAgICAgICogQGV4YW1wbGUgbXlfb3JnX25hbWVcbiAgICAgICAqL1xuICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IG5vdGlmaWNhdGlvbiBlbmRwb2ludCBjb25maWd1cmF0aW9uc1xuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJ1cmxcIjogXCJodHRwczovL2V4YW1wbGUuY29tL2VuZHBvaW50XCJcbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBub3RpZmljYXRpb25fZW5kcG9pbnRzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJOb3RpZmljYXRpb25FbmRwb2ludENvbmZpZ3VyYXRpb25cIl1bXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIG9yZ2FuaXphdGlvblxuICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICovXG4gICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIHBhc3NrZXlfY29uZmlndXJhdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUGFzc2tleUNvbmZpZ1wiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIG9yZy13aWRlIHBvbGljaWVzXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIk1heERhaWx5VW5zdGFrZVwiOiA1XG4gICAgICAgKiAgIH0sXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIk9yaWdpbkFsbG93bGlzdFwiOiBbXG4gICAgICAgKiAgICAgICBcImh0dHBzOi8vZXhhbXBsZS5jb21cIlxuICAgICAgICogICAgIF1cbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXSB8IG51bGw7XG4gICAgICBwb2xpY3lfZW5naW5lX2NvbmZpZ3VyYXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBvbGljeUVuZ2luZUNvbmZpZ3VyYXRpb25cIl0gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIHJlcXVpcmVfc2NvcGVfY2VpbGluZyAqL1xuICAgICAgcmVxdWlyZV9zY29wZV9jZWlsaW5nPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIHRoZSBUT1RQIGZhaWx1cmUgbGltaXRcbiAgICAgICAqL1xuICAgICAgdG90cF9mYWlsdXJlX2xpbWl0PzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgdXNlci1leHBvcnQgZGVsYXlcbiAgICAgICAqL1xuICAgICAgdXNlcl9leHBvcnRfZGVsYXk/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIHVzZXItZXhwb3J0IGRpc2FibGVkICovXG4gICAgICB1c2VyX2V4cG9ydF9kaXNhYmxlZD86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5ldyB2YWx1ZSBvZiB1c2VyLWV4cG9ydCB3aW5kb3dcbiAgICAgICAqL1xuICAgICAgdXNlcl9leHBvcnRfd2luZG93PzogbnVtYmVyIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBib2R5IGZvciB1cGRhdGluZyBhIG5hbWVkIHBvbGljeS4gKi9cbiAgICBVcGRhdGVQb2xpY3lSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBOZXcgQWNjZXNzLWNvbnRyb2wgZW50cmllcy5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiYWN0aW9uXCI6IFwiYXR0YWNoXCIsXG4gICAgICAgKiAgICAgXCJyZXNvdXJjZXNcIjogW1xuICAgICAgICogICAgICAge1xuICAgICAgICogICAgICAgICBcImtleV9pZFwiOiBcIipcIixcbiAgICAgICAqICAgICAgICAgXCJyb2xlX2lkXCI6IFwiUm9sZSNlNDI3YzI4YS05YzViLTQ5Y2MtYTI1Ny04NzhhZWE1OGEyMmNcIlxuICAgICAgICogICAgICAgfVxuICAgICAgICogICAgIF0sXG4gICAgICAgKiAgICAgXCJzdWJqZWN0c1wiOiBcIipcIlxuICAgICAgICogICB9LFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJhY3Rpb25cIjogXCJzaWduXCIsXG4gICAgICAgKiAgICAgXCJzdWJqZWN0c1wiOiBcIlJvbGUjZTQyN2MyOGEtOWM1Yi00OWNjLWEyNTctODc4YWVhNThhMjJjXCJcbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBhY2w/OiB1bmtub3duW10gfCBudWxsO1xuICAgICAgZWRpdF9wb2xpY3k/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVkaXRQb2xpY3lcIl0gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIG5ldyBtZXRhZGF0YS4gKi9cbiAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQSBuZXcgbmFtZSBmb3IgdGhlIHBvbGljeS4gKi9cbiAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIG5ldyBvd25lciBmb3IgdGhlIHBvbGljeS4gKi9cbiAgICAgIG93bmVyPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gTmV3IHBvbGljeSBydWxlcy4gKi9cbiAgICAgIHJ1bGVzPzogdW5rbm93bltdIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSByZXF1ZXN0IGZvciB1cGRhdGluZyBPcmctbGV2ZWwgcG9saWN5IHNlY3JldHMgKi9cbiAgICBVcGRhdGVQb2xpY3lTZWNyZXRzUmVxdWVzdDoge1xuICAgICAgZWRpdF9wb2xpY3k/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVkaXRQb2xpY3lcIl0gfCBudWxsO1xuICAgIH07XG4gICAgVXBkYXRlUm9sZVJlcXVlc3Q6IHtcbiAgICAgIGVkaXRfcG9saWN5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFZGl0UG9saWN5XCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlcyB0aGUgcm9sZSdzIGBlbmFibGVkYCBwcm9wZXJ0eSB0byB0aGlzIHZhbHVlLlxuICAgICAgICogT25jZSBkaXNhYmxlZCwgYSByb2xlIGNhbm5vdCBiZSB1c2VkOyBhbmQgaXQncyB0b2tlbnMgY2Fubm90IGJlIHVzZWQgZm9yIHNpZ25pbmcuXG4gICAgICAgKi9cbiAgICAgIGVuYWJsZWQ/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlIHRoaXMgcm9sZSdzIGtleSBwb2xpY2llcyAob2xkIHBvbGljaWVzIHdpbGwgYmUgb3ZlcndyaXR0ZW4hKS5cbiAgICAgICAqIE9ubHkgXCJkZW55XCIgc3R5bGUgcG9saWNpZXMgbWF5IGJlIHNldC5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiU291cmNlSXBBbGxvd2xpc3RcIjogW1xuICAgICAgICogICAgICAgXCIxMjMuNDU2Ljc4LjkvMTZcIlxuICAgICAgICogICAgIF1cbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBwb2xpY3k/OiB1bmtub3duW10gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGUgdGhpcyByb2xlJ3Mgc2V0dGluZ3MgZm9yIHJlc3RyaWN0aW5nIHdoaWNoIG1lbWJlciByb2xlcyBhcmUgYWxsb3dlZCB0b1xuICAgICAgICogcGVyZm9ybSBhY3Rpb25zIG9uIHRoaXMgcm9sZS5cbiAgICAgICAqIEBleGFtcGxlIHtcbiAgICAgICAqICAgXCJDcmVhdGVUb2tlblwiOiBbXG4gICAgICAgKiAgICAgXCJPd25lclwiXG4gICAgICAgKiAgIF1cbiAgICAgICAqIH1cbiAgICAgICAqL1xuICAgICAgcmVzdHJpY3RlZF9hY3Rpb25zPzoge1xuICAgICAgICBba2V5OiBzdHJpbmddOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1lbWJlclJvbGVcIl1bXTtcbiAgICAgIH0gfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IHRvIHVwZGF0ZSBhbiBleGlzdGluZyB1c2VyICovXG4gICAgVXBkYXRlVXNlck1lbWJlcnNoaXBSZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEVuYWJsZSBvciBkaXNhYmxlIHVzZXIgKi9cbiAgICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICByb2xlPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZW1iZXJSb2xlXCJdIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEZvcm1hdDogYmluYXJ5XG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSBTSEEtMjU2IGhhc2ggb2YgdGhlIG9iamVjdCBmb3IgYW4gW1VwbG9hZFJlcXVlc3RdLlxuICAgICAqL1xuICAgIFVwbG9hZE9iamVjdEhhc2g6IHN0cmluZztcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlcXVlc3QgZm9yIHVwbG9hZGluZyBhIHdhc20gcG9saWN5ICovXG4gICAgVXBsb2FkV2FzbVBvbGljeVJlcXVlc3Q6IHtcbiAgICAgIGhhc2g6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXBsb2FkT2JqZWN0SGFzaFwiXTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlc3BvbnNlIHRvIGEgcmVxdWVzdCBmb3IgdXBsb2FkaW5nIGEgd2FzbSBwb2xpY3kgKi9cbiAgICBVcGxvYWRXYXNtUG9saWN5UmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQSBzaWduZWQgVVJMIGZvciB1cGxvYWRpbmcgdGhlIHJlcXVlc3RlZCB3YXNtIHBvbGljeS4gKi9cbiAgICAgIHNpZ25lZF91cmw6IHN0cmluZztcbiAgICB9O1xuICAgIFVzZXJDb3VudERpbWVuc2lvbnM6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVXNlcidzIG1lbWJlcnNoaXAgaW4gdGhlIG9yZyAqL1xuICAgICAgbWVtYmVyc2hpcDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgbWV0cmljcyBtdXN0IGluY2x1ZGUgJ29yZ19pZCcgYXMgYSBkaW1lbnNpb24uICovXG4gICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSByZXF1ZXN0IHRvIGNvbXBsZXRlIGEgdXNlciBleHBvcnQgKi9cbiAgICBVc2VyRXhwb3J0Q29tcGxldGVSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGtleSB0byBiZSBleHBvcnRlZC4gVGhlIGtleS1pZCBtdXN0IGNvcnJlc3BvbmQgdG8gdGhlIG9uZSBpblxuICAgICAgICogdGhlIHNwZWNpZmllZCBleHBvcnQgcmVxdWVzdCwgYW5kIHRoZSBjYWxsZXIgbXVzdCBvd24gdGhpcyBrZXkuXG4gICAgICAgKiBAZXhhbXBsZSBLZXkjMHgzYzRkOTBDYzVBZjE2NDRDM0EzQjAxM0JhYTU0ODg5OTczODFEN0M4XG4gICAgICAgKi9cbiAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIE5JU1QgUC0yNTYgcHVibGljIGtleSAoYmFzZTY0LWVuY29kZWQgU0VDMSB3aXRoIG9yIHdpdGhvdXQgY29tcHJlc3Npb24pXG4gICAgICAgKiB0byB3aGljaCB0aGUgZXhwb3J0IHdpbGwgYmUgZW5jcnlwdGVkLiBJZiBhIHB1YmxpYyBrZXkgd2FzIHByb3ZpZGVkIHdoZW5cbiAgICAgICAqIGB1c2VyX2V4cG9ydF9pbml0YCB3YXMgY2FsbGVkLCB0aGlzIGtleSBtdXN0IG1hdGNoIHRoYXQgb25lLlxuICAgICAgICogQGV4YW1wbGUgQWtwTFQvM2RYQXBKelhTZHVhUFE3YXB5VDBBREJ3cWt0MWVzL2FUMGlXV2ZcbiAgICAgICAqL1xuICAgICAgcHVibGljX2tleTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBlbmNyeXB0ZWQgdXNlci1leHBvcnQgKi9cbiAgICBVc2VyRXhwb3J0Q29tcGxldGVSZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGV4cG9ydGVkIGtleSBtYXRlcmlhbCwgZW5jcnlwdGVkIHdpdGggQUVTLTI1Ni1HQ00gdW5kZXIgYSBrZXlcbiAgICAgICAqIGRlcml2ZWQgZnJvbSB0aGUgcHVibGljIGtleSBzdXBwbGllZCBpbiB0aGUgcmVxdWVzdCB2aWEgSFBLRSAoUkZDOTE4MClcbiAgICAgICAqIHdpdGggREhLRU0oUC0yNTYsIEhLREYtU0hBMjU2KSBhbmQgYmFzZTY0IGVuY29kZWQuXG4gICAgICAgKi9cbiAgICAgIGVuY3J5cHRlZF9rZXlfbWF0ZXJpYWw6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBlcGhlbWVyYWwgcHVibGljIGtleSB1c2VkIGZvciBIUEtFIGtleSBkZXJpdmF0aW9uIGFzIGJhc2U2NC1lbmNvZGVkXG4gICAgICAgKiB1bmNvbXByZXNzZWQgU0VDMSBzZXJpYWxpemF0aW9uLlxuICAgICAgICovXG4gICAgICBlcGhlbWVyYWxfcHVibGljX2tleTogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdXNlci1pZCB0byB3aGljaCB0aGlzIGtleSBiZWxvbmdzLiAqL1xuICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHJlcXVlc3QgdG8gaW5pdGlhdGUgYSB1c2VyIGV4cG9ydCAqL1xuICAgIFVzZXJFeHBvcnRJbml0UmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBrZXkgdG8gYmUgZXhwb3J0ZWQuIFRoaXMga2V5IG11c3QgYmUgb3duZWQgYnkgdGhlIGNhbGxlci5cbiAgICAgICAqIEBleGFtcGxlIEtleSMweDNjNGQ5MENjNUFmMTY0NEMzQTNCMDEzQmFhNTQ4ODk5NzM4MUQ3QzhcbiAgICAgICAqL1xuICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBbiBvcHRpb25hbCBOSVNUIFAtMjU2IHB1YmxpYyBrZXkgKGJhc2U2NC1lbmNvZGVkIFNFQzEgd2l0aCBvciB3aXRob3V0XG4gICAgICAgKiBjb21wcmVzc2lvbikgdG8gd2hpY2ggdGhlIGV4cG9ydCB3aWxsIGJlIGVuY3J5cHRlZC4gSWYgcHJvdmlkZWQsIHRoaXNcbiAgICAgICAqIHB1YmxpYyBrZXkgTVVTVCBiZSB0aGUgb25lIHVzZWQgdG8gZW5jcnlwdCB0aGUgZXhwb3J0IG9uY2UgdGhlIGRlbGF5IGhhc1xuICAgICAgICogZXhwaXJlZC4gT3RoZXJ3aXNlLCB0aGUgdXNlciBjYW4gcHJvdmlkZSBhbnkgcHVibGljIGtleSB3aGVuIGNvbXBsZXRpbmdcbiAgICAgICAqIHRoZSBleHBvcnQgcmVxdWVzdCBwb3N0IGRlbGF5LlxuICAgICAgICpcbiAgICAgICAqIFRoaXMgb3B0aW9uIG1heSBwcm92aWRlIGV4dHJhIHNlY3VyaXR5IHdoZW4gdGhlIHVzZXIgaGFzIGEgc2VjdXJlIGhhcmR3YXJlXG4gICAgICAgKiBkZXZpY2UgKGUuZy4sIGEgcGhvbmUncyBzZWN1cmUgZWxlbWVudCBvciBhIFl1YmlLZXkpIGluIHdoaWNoIGEgTklTVCBQLTI1NlxuICAgICAgICogc2VjcmV0IGtleSBjYW4gYmUgZ2VuZXJhdGVkLiBQcm92aWRpbmcgdGhlIGNvcnJlc3BvbmRpbmcgcHVibGljIGtleSBoZXJlXG4gICAgICAgKiBlbnN1cmVzIHRoYXQgb25seSB0aGF0IHNwZWNpZmljIGRldmljZSB3aWxsIGJlIGNhcGFibGUgb2YgZGVjcnlwdGluZ1xuICAgICAgICogdGhlIGV4cG9ydCBjaXBoZXJ0ZXh0LlxuICAgICAgICpcbiAgICAgICAqIElmIG5vIHNlY3VyZSBoYXJkd2FyZSBkZXZpY2UgaXMgYXZhaWxhYmxlIHRvIHN0b3JlIHRoZSBzZWNyZXQga2V5LCB0aGlzXG4gICAgICAgKiBvcHRpb24gU0hPVUxEIE5PVCBiZSB1c2VkIGJlY2F1c2Ugb2YgdGhlIHJpc2sgb2Ygc2VjcmV0IGtleSB0aGVmdCBkdXJpbmdcbiAgICAgICAqIHRoZSBleHBvcnQgZGVsYXkgcGVyaW9kLlxuICAgICAgICogQGV4YW1wbGUgQWtwTFQvM2RYQXBKelhTZHVhUFE3YXB5VDBBREJ3cWt0MWVzL2FUMGlXV2ZcbiAgICAgICAqL1xuICAgICAgcHVibGljX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXNwb25zZSB0byBhIHN1Y2Nlc3NmdWwgdXNlci1leHBvcnQgaW5pdCByZXF1ZXN0ICovXG4gICAgVXNlckV4cG9ydEluaXRSZXNwb25zZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VyRXhwb3J0UmVxdWVzdFwiXSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBrZXktaWQgYmVpbmcgcmVxdWVzdGVkLlxuICAgICAgICogQGV4YW1wbGUgS2V5IzB4M2M0ZDkwQ2M1QWYxNjQ0QzNBM0IwMTNCYWE1NDg4OTk3MzgxRDdDOFxuICAgICAgICovXG4gICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUGVuZGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0IGFzIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UuICovXG4gICAgVXNlckV4cG9ydFJlcXVlc3Q6IHtcbiAgICAgIGV4cF9lcG9jaDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG9yZy1pZCBpbiB3aGljaCB0aGUga2V5IGlzIGhvdXNlZC5cbiAgICAgICAqIEBleGFtcGxlIE9yZyNmMzYxZWQ2Yi01ZDE5LTRjY2YtYTRkNS1lYmE5MzVkYzBiOTBcbiAgICAgICAqL1xuICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgU0hBLTI1NiBoYXNoIG9mIHRoZSBwdWJsaWMga2V5IHByb3ZpZGVkIGF0IGV4cG9ydCBpbml0aWF0aW9uLFxuICAgICAgICogaWYgYW55LiBJZiBhIGtleSB3YXMgcHJvdmlkZWQsIG9ubHkgdGhhdCBrZXkgY2FuIGJlIHVzZWQgdG8gY29tcGxldGVcbiAgICAgICAqIHRoZSBleHBvcnQgcHJvY2VkdXJlLiBPdGhlcndpc2UsIGFueSBrZXkgY2FuIGJlIHVzZWQuXG4gICAgICAgKlxuICAgICAgICogSU1QT1JUQU5UOiBpZiBhIHB1YmxpYyBrZXkgaXMgc3VwcGxpZWQgYXQgZXhwb3J0IGluaXRpYXRpb24sIGl0IGlzXG4gICAgICAgKiBTVFJPTkdMWSBSRUNPTU1FTkRFRCB0aGF0IHRoZSBjb3JyZXNwb25kaW5nIHNlY3JldCBrZXkgYmUgc3RvcmVkIGluXG4gICAgICAgKiBhIHNlY3VyZSBoYXJkd2FyZSBkZXZpY2UsIGUuZy4sIGEgWXViaUtleSBvciBhIHBob25lJ3Mgc2VjdXJlIGVsZW1lbnQuXG4gICAgICAgKiBJZiBubyBzdWNoIGhhcmR3YXJlIGlzIGF2YWlsYWJsZSwgc3VwcGx5aW5nIGEgcHVibGljIGtleSBhdCBleHBvcnRcbiAgICAgICAqIGluaXRpYXRpb24gaXMgU1RST05HTFkgRElTQ09VUkFHRUQgYmVjYXVzZSBvZiB0aGUgcmlzayBvZiB0aGVmdCBkdXJpbmdcbiAgICAgICAqIHRoZSBleHBvcnQgZGVsYXkgcGVyaW9kLlxuICAgICAgICpcbiAgICAgICAqIChTZWUgYWxzbyB0aGUgY29tbWVudCBpbiB0aGUgYHB1YmxpY19rZXlgIGZpZWxkIG9mIGBVc2VySW5pdFJlcXVlc3RgLilcbiAgICAgICAqIEBleGFtcGxlIGRmNDU3YTk4ZDU1Mzg1NDBmNTRkMTMxNmI1OTdhMGYzOWI4ZDk2ZjQ4OGYxMGEyZTMxYTk1NWMxNDZmZGYxZDNcbiAgICAgICAqL1xuICAgICAgcHVibGljX2tleV9oYXNoPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIHZhbGlkX2Vwb2NoOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgfTtcbiAgICBVc2VySW5PcmdJbmZvOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdXNlcidzIGVtYWlsIChvcHRpb25hbClcbiAgICAgICAqIEBleGFtcGxlIGFsaWNlQGV4YW1wbGUuY29tXG4gICAgICAgKi9cbiAgICAgIGVtYWlsPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUgdXNlclxuICAgICAgICogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGZcbiAgICAgICAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGUgdXNlciBoYXMgZXZlciBzdWNjZXNzZnVsbHkgbG9nZ2VkIGluICovXG4gICAgICBpbml0aWFsaXplZD86IGJvb2xlYW47XG4gICAgICBtZW1iZXJzaGlwOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1lbWJlclJvbGVcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHVzZXIgbmFtZS4gKi9cbiAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgc3RhdHVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1lbWJlcnNoaXBTdGF0dXNcIl07XG4gICAgICB2ZXJpZmllZF9lbWFpbD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVmVyaWZpZWRFbWFpbFwiXSB8IG51bGw7XG4gICAgfTtcbiAgICBVc2VySW5PcmdJbmZvV2l0aElkZW50aXR5OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdXNlcidzIGVtYWlsIChvcHRpb25hbClcbiAgICAgICAqIEBleGFtcGxlIGFsaWNlQGV4YW1wbGUuY29tXG4gICAgICAgKi9cbiAgICAgIGVtYWlsPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUgdXNlclxuICAgICAgICogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGZcbiAgICAgICAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGUgdXNlciBoYXMgZXZlciBzdWNjZXNzZnVsbHkgbG9nZ2VkIGluICovXG4gICAgICBpbml0aWFsaXplZD86IGJvb2xlYW47XG4gICAgICBtZW1iZXJzaGlwOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1lbWJlclJvbGVcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHVzZXIgbmFtZS4gKi9cbiAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgc3RhdHVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1lbWJlcnNoaXBTdGF0dXNcIl07XG4gICAgICB2ZXJpZmllZF9lbWFpbD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVmVyaWZpZWRFbWFpbFwiXSB8IG51bGw7XG4gICAgfSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgdGhpcmQtcGFydHkgaWRlbnRpdGllcyB2aWEgd2hpY2ggdGhlIHVzZXIgd2FzIGZvdW5kICovXG4gICAgICBpZGVudGl0aWVzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZGVudGl0eUluZm9cIl1bXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBJbmZvcm1hdGlvbiBhYm91dCBhIHVzZXIncyBtZW1iZXJzaGlwIGluIGFuIG9yZ2FuaXphdGlvblxuICAgICAqICh3aXRob3V0IGluY2x1ZGluZyBhbnkgaW5mbyBhYm91dCB0aGUgdXNlcilcbiAgICAgKi9cbiAgICBVc2VySW5PcmdNZW1iZXJzaGlwOiB7XG4gICAgICBtZW1iZXJzaGlwOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1lbWJlclJvbGVcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcmdhbml6YXRpb24gaWRcbiAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAqL1xuICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICBzdGF0dXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyc2hpcFN0YXR1c1wiXTtcbiAgICB9O1xuICAgIFVzZXJJblJvbGVJbmZvOiB7XG4gICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICBVc2VySW5mbzoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgZW1haWxcbiAgICAgICAqIEBleGFtcGxlIGFsaWNlQGV4YW1wbGUuY29tXG4gICAgICAgKi9cbiAgICAgIGVtYWlsPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIG11bHRpLWZhY3RvciBhdXRoZW50aWNhdGlvbiBtZXRob2RzIGNvbmZpZ3VyZWQgZm9yIHRoaXMgdXNlciAqL1xuICAgICAgbWZhOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbmZpZ3VyZWRNZmFcIl1bXTtcbiAgICAgIG1mYV9wb2xpY3k/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVBvbGljeVwiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBuYW1lXG4gICAgICAgKiBAZXhhbXBsZSBBbGljZVxuICAgICAgICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlcHJlY2F0ZWRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBbGwgb3JnYW5pemF0aW9ucyB0aGUgdXNlciBiZWxvbmdzIHRvLiBEZXByZWNhdGVkIGluIGZhdm9yIG9mICdvcmdzJy5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAgXCJPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXCJcbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgb3JnX2lkczogc3RyaW5nW107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBvcmdhbml6YXRpb25zIHRoZSB1c2VyIGJlbG9uZ3MgdG8sIGluY2x1ZGluZyB0aGUgbWVtYmVyc2hpcCByb2xlIGluIGVhY2guICovXG4gICAgICBvcmdzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJJbk9yZ01lbWJlcnNoaXBcIl1bXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyXG4gICAgICAgKiBAZXhhbXBsZSBVc2VyI2MzYjkzNzljLTRlOGMtNDIxNi1iZDBhLTY1YWNlNTNjZjk4ZlxuICAgICAgICovXG4gICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgICB2ZXJpZmllZF9lbWFpbD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVmVyaWZpZWRFbWFpbFwiXSB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXNwb25zZSB0byB0aGUgdXNlci9vcmdzIGVuZHBvaW50ICovXG4gICAgVXNlck9yZ3NSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbGlzdCBvZiBvcmdzIHRoaXMgdXNlciBpcyBhIG1lbWJlciBvZiAqL1xuICAgICAgb3JnczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPcmdEYXRhXCJdW107XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQSBXZWJBdXRobiBSZWx5aW5nIFBhcnR5IG1heSByZXF1aXJlIHVzZXIgdmVyaWZpY2F0aW9uIGZvciBzb21lIG9mIGl0c1xuICAgICAqIG9wZXJhdGlvbnMgYnV0IG5vdCBmb3Igb3RoZXJzLCBhbmQgbWF5IHVzZSB0aGlzIHR5cGUgdG8gZXhwcmVzcyBpdHMgbmVlZHMuXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZW51bS11c2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnRcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIFVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudDogXCJyZXF1aXJlZFwiIHwgXCJkaXNjb3VyYWdlZFwiIHwgXCJwcmVmZXJyZWRcIjtcbiAgICBWZXJpZmllZEVtYWlsOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEVtYWlsIGFkZHJlc3MgKi9cbiAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBMYXN0IHRpbWUgdGhpcyByZWNvcmQgd2FzIHVwZGF0ZWQgKGluIHNlY29uZHMgc2luY2UgdW5peCBlcG9jaClcbiAgICAgICAqL1xuICAgICAgdXBkYXRlZF9hdDogbnVtYmVyO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEFuIGV4aXQgdm9sdW50YXJpbHkgc3VibWl0dGVkIGEgdmFsaWRhdG9yIHdobyB3aXNoZXMgdG8gd2l0aGRyYXcuXG4gICAgICogVGhlIHNjaGVtYSBmb3IgdGhpcyBtZXNzYWdlIGlzIGRlZmluZWRcbiAgICAgKiBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL2V0aGVyZXVtL2NvbnNlbnN1cy1zcGVjcy9ibG9iL3YxLjAuMS9zcGVjcy9waGFzZTAvYmVhY29uLWNoYWluLm1kI3NpZ25lZHZvbHVudGFyeWV4aXQpLlxuICAgICAqL1xuICAgIFZvbHVudGFyeUV4aXQ6IHtcbiAgICAgIGVwb2NoOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSW5kZXggb2YgdGhlIGV4aXRpbmcgdmFsaWRhdG9yLlxuICAgICAgICogQGV4YW1wbGUgMjU2XG4gICAgICAgKi9cbiAgICAgIHZhbGlkYXRvcl9pbmRleDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVzcG9uc2UgZnJvbSBpbnZva2luZyBhIFdhc20gcG9saWN5LiAqL1xuICAgIFdhc21Qb2xpY3lSZXNwb25zZTpcbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIHJlc3BvbnNlOiBcIkFsbG93XCI7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlYXNvbiBmb3IgdGhlIGRlbmlhbC4gKi9cbiAgICAgICAgICByZWFzb246IHN0cmluZztcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICByZXNwb25zZTogXCJEZW55XCI7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGVycm9yIGZyb20gdGhlIFBvbGljeSBFbmdpbmUuICovXG4gICAgICAgICAgZXJyb3I6IHN0cmluZztcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICByZXNwb25zZTogXCJFcnJvclwiO1xuICAgICAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSB3YXNtIHBvbGljeSBydWxlIHRoYXQgY2FuIGJlIGV4ZWN1dGVkIGluIHRoZSB3YXNtIGVuZ2luZS4gKi9cbiAgICBXYXNtUnVsZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgU0hBLTI1NiBoYXNoIG9mIGEgd2FzbSBwb2xpY3kgdGhhdCBjYW4gYmUgdXNlZCB0byBsb29rIGl0IHVwIGluIHRoZSBwb2xpY3kgc3RvcmUuICovXG4gICAgICBoYXNoOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBJZCBvZiB0aGUgcG9saWN5IHRoaXMgd2FzbSBydWxlIGJlbG9uZ3MgdG8uICovXG4gICAgICBwb2xpY3lfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBbGxvd2VkIHdlYmhvb2sgbWV0aG9kc1xuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgV2ViaG9va01ldGhvZDogXCJHRVRcIiB8IFwiUE9TVFwiO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcGF5bG9hZCB0aGF0IGlzIHNlbnQgdG8gdGhlIHdlYmhvb2suXG4gICAgICpcbiAgICAgKiBUaGUgd2ViaG9vayBzaG91bGQgcmVzcG9uZCB3aXRoIEhUVFAgc3RhdHVzIGNvZGUgMjAwIGlmIHRoZSBvcGVyYXRpb24gaXMgcGVybWl0dGVkLlxuICAgICAqXG4gICAgICogQWxsIG5vbi0yMDAgc3RhdHVzIGNvZGVzIGltcGx5IHRoYXQgdGhlIG9wZXJhdGlvbiBpcyBkZW5pZWQ7IGFueSByZXNwb25zZSBib2R5IHJldHVybmVkXG4gICAgICogYnkgdGhlIHdlYmhvb2sgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgZXJyb3IgcmVzcG9uc2Ugc2VudCBiYWNrIHRvIHRoZSBjbGllbnQuXG4gICAgICovXG4gICAgV2ViaG9va1BheWxvYWQ6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGFkZHJlc3MgKG1hdGVyaWFsIGlkKSBvZiB0aGUga2V5IHVzZWQgdG8gc2lnbiB0aGUgcmVxdWVzdCAqL1xuICAgICAga2V5X2FkZHJlc3M6IHN0cmluZztcbiAgICAgIGtleV90eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleVR5cGVcIl07XG4gICAgICBvcGVyYXRpb246IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT3BlcmF0aW9uS2luZFwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHBheWxvYWQgKGlmIGFueSkgb2YgdGhlIHNpZ24gb3BlcmF0aW9uICovXG4gICAgICByZXF1ZXN0PzogdW5rbm93bjtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUGFyYW1ldGVycyBmb3IgdGhlIFtEZW55OjpXZWJob29rXSBwb2xpY3kuICovXG4gICAgV2ViaG9va1BvbGljeVBhcmFtczoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBIVFRQIGhlYWRlcnMgdG8gc2V0ICovXG4gICAgICBoZWFkZXJzPzoge1xuICAgICAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gICAgICB9O1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBIVFRQIG1ldGhvZCB0byB1c2UuIERlZmF1bHRzIHRvIFBPU1QuICovXG4gICAgICBtZXRob2Q/OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDdWJlU2lnbmVyIG9wZXJhdGlvbnMgdG8gd2hpY2ggdGhpcyBwb2xpY3kgc2hvdWxkIGFwcGx5LlxuICAgICAgICogV2hlbiBvbWl0dGVkLCBhcHBsaWVzIHRvIGFsbCBvcGVyYXRpb25zLlxuICAgICAgICovXG4gICAgICByZXN0cmljdGVkX29wZXJhdGlvbnM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9wZXJhdGlvbktpbmRcIl1bXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGV4ZWN1dGlvbiB0aW1lb3V0IGluIHNlY29uZHM7IG11c3Qgbm90IGV4Y2VlZCA1IHNlY29uZHMuXG4gICAgICAgKi9cbiAgICAgIHRpbWVvdXQ/OiBudW1iZXI7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB1cmwgb2YgdGhlIHdlYmhvb2sgKi9cbiAgICAgIHVybDogc3RyaW5nO1xuICAgIH07XG4gICAgV2hlcmVBbmRXaGVuOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNvdXJjZUlwXCJdICYge1xuICAgICAgdGltZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgIH07XG4gIH07XG4gIHJlc3BvbnNlczoge1xuICAgIEFkZFRoaXJkUGFydHlVc2VyUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGYgKi9cbiAgICAgICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVzcG9uc2UgdG8gdGhlIGlkcCBhdXRoZW50aWNhdGUgZW5kcG9pbnQgKi9cbiAgICBBdXRoZW50aWNhdGlvblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBPSURDIHRva2VuIHRoYXQgY2FuIGJlIHVzZWQgdG8gYXV0aGVudGljYXRlIHdpdGggQ3ViZVNpZ25lciAqL1xuICAgICAgICAgIGlkX3Rva2VuOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgQmFieWxvbkNvdlNpZ25SZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWN5IGV2YWx1YXRpb24gdHJlZS4gKi9cbiAgICAgICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHNsYXNoLXVuYm9uZGluZyB0cmFuc2FjdGlvbiBzaWduYXR1cmVzIGFzIGFuIGFycmF5IG9mIGhleCBzdHJpbmdzIHdpdGggbm8gMHggcHJlZml4XG4gICAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgICAqICAgXCIwMmUyMWE3YjA1MTk1MzllZjY3MGY3OWQxYzI1YTU0ZjkwYjBjNmQ5ZmRiNTZhN2RlODEzZmIyMDcwMzMwMzJmZmZhZDhhYWFmZWIxYjc3ZGQ5ZWE4ZjE3ZGFkY2YyOTc2OTZiYmY1YTQxMzMyOTJmMzUxNWI4NmJiOWMyZDc4ZDljXCJcbiAgICAgICAgICAgKiBdXG4gICAgICAgICAgICovXG4gICAgICAgICAgc2xhc2hfdW5ib25kaW5nX3RyYW5zYWN0aW9uc19zaWduYXR1cmVzOiBzdHJpbmdbXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHNsYXNoaW5nIHRyYW5zYWN0aW9uIHNpZ25hdHVyZXMgYXMgYW4gYXJyYXkgb2YgaGV4IHN0cmluZ3Mgd2l0aCBubyAweCBwcmVmaXhcbiAgICAgICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgICAgICogICBcIjAzMDc1ZWNhOWQxNzZkMTYwNWQ2YzA5NmMxMTFlOWE0ZjhkODczOWFjOTcwOGMxZGYzZWQ1MTYxMDZlN2FiMTM4N2EzOTI0YTY2NTJhY2YyZTM1MjQzNTk3MzFjYTFmYmIzMzhhM2FmYjFhNjdmNmVhMTljMjA3YjZmZjQ2NmE1YWRcIixcbiAgICAgICAgICAgKiAgIFwiMDIyMjI0NDkzZjRjZmZhZDViODQwNzZkYjMyZGQ4YzQ5YTI4ZmY0OGFmNGUxOWUyYmNjOTk1M2ZmODAzNDdiYTZlODM0M2NmN2E0NGU3NGE5NmZmNzFlYTU5YTAzYjQwMTY2ZTg1YjBkMTM1NTk1NGUwNGE0NDI3ZGM4ZDYzN2ZmMFwiXG4gICAgICAgICAgICogXVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHNsYXNoaW5nX3RyYW5zYWN0aW9uc19zaWduYXR1cmVzOiBzdHJpbmdbXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHNpZ25hdHVyZSB0aGF0IGFsbG93cyBleHBhbmRpbmcgYSBzdGFrZSBieSBzcGVuZGluZyB0aGUgY3VycmVudCBhY3RpdmVcbiAgICAgICAgICAgKiBzdGFrZSB0cmFuc2FjdGlvbiBpbnRvIGEgbmV3IHN0YWtpbmcgdHJhbnNhY3Rpb24uIEEgdmFsdWUgaXMgcHJlc2VudCBpZmYgdGhlXG4gICAgICAgICAgICogY29ycmVzcG9uZGluZyByZXF1ZXN0IGluY2x1ZGVkIGEgYHN0YWtlX2V4cGFuc2lvbmAgdmFsdWUuXG4gICAgICAgICAgICogQGV4YW1wbGUgYjU3M2UzMTg4MDNmZDdhZWUxYmU1YjZiMThkNDk2Y2M2MGVjYzUyNDI5ZGJkNDc3YTg3OTIxN2MzZWQyNmE3OTVjYjRmNGU4ODBhYWZmM2E2YWQ2NjMzNWU1NDA0ZmE1MWNhZWI0OTY0ZjBjOWY3NTYyNzM3ODY0ZTNiZGU1YmNcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBzdGFrZV9leHBhbnNpb25fdHJhbnNhY3Rpb25fc2lnbmF0dXJlPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHVuYm9uZGluZyB0cmFuc2FjdGlvbiBzaWduYXR1cmUgYXMgaGV4IHN0cmluZyB3aXRoIG5vIDB4IHByZWZpeFxuICAgICAgICAgICAqIEBleGFtcGxlIGI1NzNlMzE4ODAzZmQ3YWVlMWJlNWI2YjE4ZDQ5NmNjNjBlY2M1MjQyOWRiZDQ3N2E4NzkyMTdjM2VkMjZhNzk1Y2I0ZjRlODgwYWFmZjNhNmFkNjYzMzVlNTQwNGZhNTFjYWViNDk2NGYwYzlmNzU2MjczNzg2NGUzYmRlNWJjXG4gICAgICAgICAgICovXG4gICAgICAgICAgdW5ib25kaW5nX3RyYW5zYWN0aW9uX3NpZ25hdHVyZTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEJhYnlsb25SZWdpc3RyYXRpb25SZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWN5IGV2YWx1YXRpb24gdHJlZS4gKi9cbiAgICAgICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIEJhYnlsb24gYWRkcmVzcyB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgc3Rha2luZyByZXdhcmRzIGZvciB0aGlzIGRlcG9zaXQuXG4gICAgICAgICAgICpcbiAgICAgICAgICAgKiBUaGlzIHZhbHVlIHdpbGwgY29ycmVzcG9uZCB0byB0aGUgYGJibl9hZGRyYCB2YWx1ZSBzcGVjaWZpZWQgaW4gdGhlIHJlcXVlc3QsXG4gICAgICAgICAgICogYnV0IGl0IHdpbGwgYWx3YXlzIGhhdmUgYSBgYmJuYCBodW1hbi1yZWFkYWJsZSBwYXJ0LlxuICAgICAgICAgICAqIEBleGFtcGxlIGJibjFuNWFubWMwa2tyaDcweWp5N2Y2ZjM5OWM3NHlkMDl4bDV0ZWZmbVxuICAgICAgICAgICAqL1xuICAgICAgICAgIGJibl9hZGRyOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBkZXBvc2l0IHRyYW5zYWN0aW9uIFBTQlQuIFRoaXMgUFNCVCBpbmNsdWRlcyBzaWduYXR1cmVzIG9uIGFueVxuICAgICAgICAgICAqIGlucHV0cyBjb250cm9sbGVkIGJ5IHRoZSBzdGFrZXIgdGFwcm9vdCBrZXkgc3BlY2lmaWVkIGluIHRoZSByZXF1ZXN0LlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGRlcG9zaXQ6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBkZXBvc2l0IHRyYW5zYWN0aW9uIGZlZSBpbiBzYXRzLlxuICAgICAgICAgICAqIEBleGFtcGxlIDEzMzdcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBkZXBvc2l0X2ZlZTogbnVtYmVyO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcHJvb2Ygb2YgcG9zc2Vzc2lvbiwgaS5lLiwgYSBCSVAzMjIgc2lnbmF0dXJlIG9uIHRoZSBzdGFrZXInc1xuICAgICAgICAgICAqIEJhYnlsb24gYWRkcmVzcyBzaWduZWQgYnkgdGhlIHN0YWtlciB0YXByb290IGtleS4gVGhpcyBpcyBhIEJpdGNvaW5cbiAgICAgICAgICAgKiB3aXRuZXNzIHN0YWNrIGluIEJpdGNvaW4gY29uc2Vuc3VzIGhleCBlbmNvZGluZy5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwb3A6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBzbGFzaC1kZXBvc2l0IHRyYW5zYWN0aW9uIGluIEJpdGNvaW4gY29uc2Vuc3VzIGhleCBlbmNvZGluZy4gKi9cbiAgICAgICAgICBzbGFzaF9kZXBvc2l0OiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFrZXIgdGFwcm9vdCBrZXkncyBzaWduYXR1cmUgb24gdGhlIHNsYXNoLWRlcG9zaXQgdHJhbnNhY3Rpb24uXG4gICAgICAgICAgICogVGhpcyBpcyBhIEJJUDM0MCBzaWduYXR1cmUgaW4gaGV4IGZvcm1hdC5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBzbGFzaF9kZXBvc2l0X3NpZzogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHNsYXNoLXVuYm9uZCB0cmFuc2FjdGlvbiBpbiBCaXRjb2luIGNvbnNlbnN1cyBoZXggZW5jb2RpbmcuICovXG4gICAgICAgICAgc2xhc2hfdW5ib25kOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFrZXIgdGFwcm9vdCBrZXkncyBzaWduYXR1cmUgb24gdGhlIHNsYXNoLXVuYm9uZCB0cmFuc2FjdGlvbi5cbiAgICAgICAgICAgKiBUaGlzIGlzIGEgQklQMzQwIHNpZ25hdHVyZSBpbiBoZXggZm9ybWF0LlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHNsYXNoX3VuYm9uZF9zaWc6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSAodW5zaWduZWQpIHVuYm9uZGluZyB0cmFuc2FjdGlvbiBpbiBCaXRjb2luIGNvbnNlbnN1cyBoZXggZW5jb2RpbmcuICovXG4gICAgICAgICAgdW5ib25kOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgQmFieWxvblN0YWtpbmdSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWN5IGV2YWx1YXRpb24gdHJlZS4gKi9cbiAgICAgICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB0cmFuc2FjdGlvbiBmZWUgaW4gc2F0c1xuICAgICAgICAgICAqIEBleGFtcGxlIDEzMzdcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBmZWU6IG51bWJlcjtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFBTQlQgaW4gZWl0aGVyIGhleCBvciBiYXNlNjQgc2VyaWFsaXphdGlvblxuICAgICAgICAgICAqIEBleGFtcGxlIDcwNzM2Mjc0ZmYwMTAwNWUuLi5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwc2J0OiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBCVEMgbWVzc2FnZSBzaWduaW5nIHJlc3BvbnNlICovXG4gICAgQnRjTWVzc2FnZVNpZ25SZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWN5IGV2YWx1YXRpb24gdHJlZS4gKi9cbiAgICAgICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBiYXNlNjQtZW5jb2RlZCBzaWduYXR1cmUgaW4gQklQMTM3IGZvcm1hdC4gKi9cbiAgICAgICAgICBzaWc6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBudW1iZXIgb2YgdXNlcnMgYW5kIGtleXMgaW4gYW4gb3JnLCBvcmdhbml6ZWQgYnkgdXNlciByb2xlIGFuZCBrZXkgdHlwZSAqL1xuICAgIENvbXB1dGVDb3VudHNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBIG1hcCBvZiBhIGBLZXlUeXBlYCB0byB0aGUgYW1vdW50IG9mIGtleXMgd2l0aCB0aGF0IHR5cGUgaW4gdGhlIG9yZy5cbiAgICAgICAgICAgKiBAZXhhbXBsZSB7XG4gICAgICAgICAgICogICBcIlNlY3BCdGNcIjogMyxcbiAgICAgICAgICAgKiAgIFwiU2VjcEV0aEFkZHJcIjogMVxuICAgICAgICAgICAqIH1cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBrZXlzOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBudW1iZXI7XG4gICAgICAgICAgfTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gQSBtYXAgb2YgYSBgTWVtYmVyUm9sZWAgdG8gdGhlIGFtb3VudCBvZiBudW1iZXIgb2YgdXNlcnMgd2l0aCB0aGF0IHJvbGUgaW4gdGhlIG9yZy5cbiAgICAgICAgICAgKiBAZXhhbXBsZSB7XG4gICAgICAgICAgICogICBcIk1lbWJlclwiOiAxMCxcbiAgICAgICAgICAgKiAgIFwiT3duZXJcIjogMVxuICAgICAgICAgICAqIH1cbiAgICAgICAgICAgKi9cbiAgICAgICAgICB1c2Vyczoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogbnVtYmVyO1xuICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBJbmZvcm1hdGlvbiBhYm91dCBhIENvbnRhY3QuICovXG4gICAgQ29udGFjdEluZm9SZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDb250YWN0XCJdICYge1xuICAgICAgICAgIGFkZHJlc3NlczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBZGRyZXNzTWFwXCJdO1xuICAgICAgICAgIGlkOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIENyZWF0ZUtleUltcG9ydEtleVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUltcG9ydEtleVwiXSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gQW4gYXR0ZXN0YXRpb24gZG9jdW1lbnQgZnJvbSBhIHNlY3VyZSBlbmNsYXZlLCBpbmNsdWRpbmcgYW5cbiAgICAgICAgICAgKiBSU0Egc2lnbmluZyBrZXkgdXNlZCB0byBzaWduIHRoZSBjb250ZW50cyBvZiB0aGlzIG1lc3NhZ2UuXG4gICAgICAgICAgICovXG4gICAgICAgICAgZW5jbGF2ZV9hdHRlc3RhdGlvbjogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBbiBSU0EtUFNTLVNIQTI1NiBzaWduYXR1cmUgb24gdGhlIHB1YmxpYyBrZXkgYW5kIGVuY3J5cHRlZFxuICAgICAgICAgICAqIHNlY3JldHMgYXR0ZXN0aW5nIHRvIHRoZWlyIGdlbmVyYXRpb24gaW5zaWRlIGEgc2VjdXJlIGVuY2xhdmUuXG4gICAgICAgICAgICovXG4gICAgICAgICAgZW5jbGF2ZV9zaWduYXR1cmU6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBDcmVhdGVLZXlSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGluZm8gYWJvdXQgdGhlIGNyZWF0ZWQga2V5cyAqL1xuICAgICAgICAgIGtleXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5mb1wiXVtdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcmVzcG9uc2UgdG8gW2NyZWF0ZV9pbXBvcnRfa2V5XSBjb250YWluaW5nIHRoZSBnZW5lcmF0ZWQga2V5IGFuZCBlbmNsYXZlXG4gICAgICogYXR0ZXN0YXRpb25zLlxuICAgICAqL1xuICAgIENyZWF0ZVBvbGljeUltcG9ydEtleVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUltcG9ydEtleVwiXSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gQW4gYXR0ZXN0YXRpb24gZG9jdW1lbnQgZnJvbSBhIHNlY3VyZSBlbmNsYXZlLCBpbmNsdWRpbmcgYW5cbiAgICAgICAgICAgKiBSU0Egc2lnbmluZyBrZXkgdXNlZCB0byBzaWduIHRoZSBjb250ZW50cyBvZiB0aGlzIG1lc3NhZ2UuXG4gICAgICAgICAgICovXG4gICAgICAgICAgZW5jbGF2ZV9hdHRlc3RhdGlvbjogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBbiBSU0EtUFNTLVNIQTI1NiBzaWduYXR1cmUgb24gdGhlIHB1YmxpYyBrZXkgYW5kIGVuY3J5cHRlZFxuICAgICAgICAgICAqIHNlY3JldHMgYXR0ZXN0aW5nIHRvIHRoZWlyIGdlbmVyYXRpb24gaW5zaWRlIGEgc2VjdXJlIGVuY2xhdmUuXG4gICAgICAgICAgICovXG4gICAgICAgICAgZW5jbGF2ZV9zaWduYXR1cmU6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBuZXdseSBjcmVhdGVkIHJvbGUgaW5mb3JtYXRpb24gKi9cbiAgICBDcmVhdGVSb2xlUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gQSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgcm9sZS5cbiAgICAgICAgICAgKiBAZXhhbXBsZSBteV9yb2xlXG4gICAgICAgICAgICovXG4gICAgICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUgbmV3bHkgY3JlYXRlZCByb2xlXG4gICAgICAgICAgICogQGV4YW1wbGUgUm9sZSNiZmUzZWNjYi03MzFlLTQzMGQtYjFlNS1hYzEzNjNlNmIwNmJcbiAgICAgICAgICAgKi9cbiAgICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0byBbQ3VzdG9tQ2hhaW5ScGNSZXF1ZXN0XSAqL1xuICAgIEN1c3RvbUNoYWluUnBjUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHVua25vd247XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVzdWx0IG9mIGEgRGlmZmllIEhlbGxtYW4ga2V5IGV4Y2hhbmdlICovXG4gICAgRGlmZmllSGVsbG1hblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiAoXG4gICAgICAgICAgfCB7XG4gICAgICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlc3VsdGluZyBwb2ludHMgYXMgYmFzZTY0LWVuY29kZWQgYnl0ZSBzdHJpbmdzIGluIGEga2V5LXR5cGUtLWRlcGVuZGVudCBmb3JtYXQuICovXG4gICAgICAgICAgICAgIHBvaW50czogc3RyaW5nW107XG4gICAgICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgICAgICByZXNwb25zZV90eXBlOiBcIm1hc2tlZFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIEEgY2lwaGVydGV4dCBjb250YWluaW5nIHRoZSByZXN1bHRpbmcgcG9pbnRzLiBUaGUgZW5jbG9zZWQgcGxhaW50ZXh0IGlzIGEgc2VxdWVuY2VcbiAgICAgICAgICAgICAgICogb2YgYmFzZTY0LWVuY29kZWQgYnl0ZSBzdHJpbmdzIGluIGEga2V5LXR5cGUtLWRlcGVuZGVudCBmb3JtYXQuXG4gICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICBlbmNyeXB0ZWRfc2hhcmVkX3NlY3JldHM6IHN0cmluZztcbiAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZXBoZW1lcmFsIHB1YmxpYyBrZXkgdXNlZCBmb3IgSFBLRSBrZXkgZGVyaXZhdGlvbiBpbiBiYXNlNjQtZW5jb2RlZFxuICAgICAgICAgICAgICAgKiB1bmNvbXByZXNzZWQgU0VDMSBzZXJpYWxpemF0aW9uLlxuICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgZXBoZW1lcmFsX3B1YmxpY19rZXk6IHN0cmluZztcbiAgICAgICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgICAgIHJlc3BvbnNlX3R5cGU6IFwiZW5jcnlwdGVkXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICkgJiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY3kgZXZhbHVhdGlvbiB0cmVlLiAqL1xuICAgICAgICAgIHBvbGljeV9ldmFsX3RyZWU/OiB1bmtub3duO1xuICAgICAgICB9ICYgUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSFRUUCByZXNwb25zZSB0byBhbiBlbWFpbCBPVFAgcmVxdWVzdC5cbiAgICAgKlxuICAgICAqIFRoaXMgcmVzcG9uc2UgY29udGFpbnMgYW4gT0lEQyB0b2tlbiB3aXRob3V0IGEgc2lnbmF0dXJlLlxuICAgICAqIFRoZSBzaWduYXR1cmUgaXMgc2VudCB0byB0aGUgZW5kLXVzZXIgaW4gYW4gZW1haWwuXG4gICAgICogVGhlIHRva2VuIGNhbiBiZSByZWNvbnN0cnVjdGVkIGJ5IGNvbmNhdGVuYXRpbmcgdGhlIGBwYXJ0aWFsX3Rva2VuYCB3aXRoIHRoZSBzaWduYXR1cmUuXG4gICAgICovXG4gICAgRW1haWxPdHBSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgT0lEQyB0b2tlbiB3aXRob3V0IHRoZSBzaWduYXR1cmUuXG4gICAgICAgICAgICogKFRoZSBzaWduYXR1cmUsIHdoaWNoIGlzIGFjdHVhbGx5IGEgTUFDLCBpcyBzZW50IHRvIHRoZSBlbmQtdXNlciBpbiBhbiBlbWFpbClcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwYXJ0aWFsX3Rva2VuOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgRW1wdHlJbXBsOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSBnZW5lcmF0ZWQgd2hlbiBjcmVhdGluZyBFT1RTIG5vbmNlcyAqL1xuICAgIEVvdHNDcmVhdGVOb25jZVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY3kgZXZhbHVhdGlvbiB0cmVlLiAqL1xuICAgICAgICAgIHBvbGljeV9ldmFsX3RyZWU/OiB1bmtub3duO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZ2VuZXJhdGVkIG5vbmNlcyBhcyBhbiBhcnJheSBvZiAweC1wcmVmaXhlZCBoZXggc3RyaW5nc1xuICAgICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICAgKiAgIFwiMHhiMzkzYmYzOWU3MWExNmQ3ODQ4NTNkNTgyNTVhMjk2MjIyYTk5ZmQzYzg3YWE3Y2EyMDZjNTIzMGMxODhmMWM3XCIsXG4gICAgICAgICAgICogICBcIjB4ZTAxOTM2NTg0YjRmMGMwZTk3ZjBkMzAxOGM0ZjlkYjJiZjdkZTQxMzk1YzY0MDNhNDhmZDBkZmYwZWY3YjQwZFwiXG4gICAgICAgICAgICogXVxuICAgICAgICAgICAqL1xuICAgICAgICAgIG5vbmNlczogc3RyaW5nW107XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0byBbRXNwbG9yYVJlcXVlc3RdICovXG4gICAgRXNwbG9yYVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB1bmtub3duO1xuICAgICAgfTtcbiAgICB9O1xuICAgIEV0aDFTaWduUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHBvbGljeSBldmFsdWF0aW9uIHRyZWUuICovXG4gICAgICAgICAgcG9saWN5X2V2YWxfdHJlZT86IHVua25vd247XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIFJMUCBlbmNvZGluZyBvZiB0aGUgdHJhbnNhY3Rpb24gYW5kIGl0cyBzaWduYXR1cmVcbiAgICAgICAgICAgKiBAZXhhbXBsZSAweDIyODk1MTE4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTIwMWQ1ODY1NmIwZTIyYWFhNjhmZGM2OTJkYjQxOTc5MDk4YzM4ODZlZDMzMDE1ZDc0NjdkZTkyMTE2MDljZGFjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzA4YjBjMjkwMDMyNGQzZmY5YWRmYmE3ZmRmZTVhZjNmOWIyY2RiZWVmN2IyODA0MzdiYmYxYjFjNTlhMDkzZDYxNWFmZTNlNWRmZWQ5NjIyYjU0MGNkZDliNDliM2M1YWQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0OTAxMWFkYmNjM2JjOWMwMzA3YmIwN2YzN2RkYTFhMWE5YzY5ZDJlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2MDkwM2RiODUyNTY3NGI4ZTc5MDRmOWI3ZDdkOWVjNTVhMGE0MmQzM2NmNThiZTI1NDY5YjBjMjFiYmI2ZDA2MTcyYmM1YmI1ZmQxYWVkOGU0ZjM1OTM2OTY4OTU4MTE2YjA2MTk1NTNjMmNiMWM1MmU3MzIzMDc0YzZmOGViM2Q1YTcwNzRmYzY1ODAxNDhkZjkwNzgzN2ZhM2IxNjRhZDdmYmMyMjg4ZGFkMWU4YTViMDIxMDk1YjU3YzhhMzZkNFxuICAgICAgICAgICAqL1xuICAgICAgICAgIHJscF9zaWduZWRfdHg6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBGaWRvQXNzZXJ0Q2hhbGxlbmdlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiAoY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDaGFsbGVuZ2VQaWVjZXNcIl0gJiB7XG4gICAgICAgICAgb3B0aW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnNcIl07XG4gICAgICAgIH0pICYge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBjaGFsbGVuZ2UuIE11c3QgYmUgc3VwcGxpZWQgd2hlbiBhbnN3ZXJpbmcgdGhlIGNoYWxsZW5nZS4gKi9cbiAgICAgICAgICBjaGFsbGVuZ2VfaWQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gU2VudCBieSB0aGUgc2VydmVyIHRvIHRoZSBjbGllbnQuIENvbnRhaW5zIHRoZSBjaGFsbGVuZ2UgZGF0YSB0aGF0IG11c3QgYmVcbiAgICAgKiB1c2VkIHRvIGdlbmVyYXRlIGEgbmV3IGNyZWRlbnRpYWxcbiAgICAgKi9cbiAgICBGaWRvQ3JlYXRlQ2hhbGxlbmdlUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IChjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNoYWxsZW5nZVBpZWNlc1wiXSAmIHtcbiAgICAgICAgICBvcHRpb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnNcIl07XG4gICAgICAgIH0pICYge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBjaGFsbGVuZ2UuIE11c3QgYmUgc3VwcGxpZWQgd2hlbiBhbnN3ZXJpbmcgdGhlIGNoYWxsZW5nZS4gKi9cbiAgICAgICAgICBjaGFsbGVuZ2VfaWQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBHZXRVc2VyQnlFbWFpbFJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFR5cGljYWxseSwgdGhpcyBhcnJheSBpcyBlaXRoZXIgZW1wdHkgKGlmIG5vIHVzZXIgd2l0aCBhIGdpdmVuIGVtYWlsIHdhcyBmb3VuZClcbiAgICAgICAgICAgKiBvciBjb250YWlucyBhIHNpbmdsZSBlbGVtZW50LCBpLmUuLCB0aGUgdXNlciB3aXRoIGEgZ2l2ZW4gZW1haWwuXG4gICAgICAgICAgICovXG4gICAgICAgICAgdXNlcnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckluT3JnSW5mb1dpdGhJZGVudGl0eVwiXVtdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEdldFVzZXJCeU9pZGNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIHVzZXI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJJbk9yZ0luZm9XaXRoSWRlbnRpdHlcIl0gfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBQcm9vZiB0aGF0IGFuIGVuZC11c2VyIHByb3ZpZGVkIEN1YmVTaWduZXIgd2l0aCBhIHZhbGlkIGF1dGggdG9rZW5cbiAgICAgKiAoZWl0aGVyIGFuIE9JREMgdG9rZW4gb3IgYSBDdWJlU2lnbmVyIHNlc3Npb24gdG9rZW4pXG4gICAgICovXG4gICAgSWRlbnRpdHlQcm9vZjoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIGF1ZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXVkXCJdIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGVtYWlsIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXNlclxuICAgICAgICAgICAqIEBleGFtcGxlIHVzZXJAZW1haWwuY29tXG4gICAgICAgICAgICovXG4gICAgICAgICAgZW1haWw/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIGV4cF9lcG9jaDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgICAgIGlkZW50aXR5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPaWRjSWRlbnRpdHlcIl0gfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdXNlcm5hbWUgKGlmIGFueSkgYXNzb2NpYXRlZCB3aXRoIHRoZSB1c2VyXG4gICAgICAgICAgICogQGV4YW1wbGUgY3ViaXN0ZGV2XG4gICAgICAgICAgICovXG4gICAgICAgICAgcHJlZmVycmVkX3VzZXJuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICB1c2VyX2luZm8/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkN1YmVTaWduZXJVc2VySW5mb1wiXSB8IG51bGw7XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBvcGFxdWUgaWRlbnRpZmllciBmb3IgdGhlIHByb29mICovXG4gICAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXN1bHQgb2YgaW52b2tpbmcgYSBXYXNtIHBvbGljeS4gKi9cbiAgICBJbnZva2VQb2xpY3lSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIHJlc3BvbnNlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIldhc21Qb2xpY3lSZXNwb25zZVwiXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGJ5dGVzIHdyaXR0ZW4gdG8gYHN0ZGVycmAsIGVuY29kZWQgYXMgYSBoZXgtc3RyaW5nLlxuICAgICAgICAgICAqIEluIG1vc3QgY2FzZXMsIHRoZXNlIGJ5dGVzIGNvcnJlc3BvbmQgdG8gYSBVVEYtOC1lbmNvZGVkIGBTdHJpbmdgLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHN0ZGVycjogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgYnl0ZXMgd3JpdHRlbiB0byBgc3Rkb3V0YCwgZW5jb2RlZCBhcyBhIGhleC1zdHJpbmcuXG4gICAgICAgICAgICogSW4gbW9zdCBjYXNlcywgdGhlc2UgYnl0ZXMgY29ycmVzcG9uZCB0byBhIFVURi04LWVuY29kZWQgYFN0cmluZ2AuXG4gICAgICAgICAgICovXG4gICAgICAgICAgc3Rkb3V0OiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgSnJwY1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJlc3BvbnNlXCJdICYgUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSBKU09OIFdlYiBLZXkgc2V0IGRlc2NyaWJpbmcgdGhlIGtleSB1c2VkIHRvIHNpZ24gSlNPTiBXZWIgVG9rZW5zICovXG4gICAgSndrU2V0UmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBrZXlzIGluY2x1ZGVkIGluIHRoaXMgc2V0ICovXG4gICAgICAgICAga2V5czogUmVjb3JkPHN0cmluZywgbmV2ZXI+W107XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBEZXJpdmF0aW9uLXJlbGF0ZWQgbWV0YWRhdGEgZm9yIGtleXMgZGVyaXZlZCBmcm9tIGEgbG9uZy1saXZlZCBtbmVtb25pYyAqL1xuICAgIEtleURlcml2YXRpb25JbmZvOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgZGVyaXZhdGlvbiBwYXRoIHVzZWQgdG8gZGVyaXZlIHRoaXMga2V5ICovXG4gICAgICAgICAgZGVyaXZhdGlvbl9wYXRoOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbW5lbW9uaWMtaWQgb2YgdGhlIGtleSdzIHBhcmVudCBtbmVtb25pYyAqL1xuICAgICAgICAgIG1uZW1vbmljX2lkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHdyYXBwZWQga2V5LWltcG9ydCBrZXkgKi9cbiAgICBLZXlJbXBvcnRLZXk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEJhc2U2NC1lbmNvZGVkLCBlbmNyeXB0ZWQgZGF0YSBrZXkuICovXG4gICAgICAgICAgZGtfZW5jOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBFeHBpcmF0aW9uIHRpbWVzdGFtcCBleHByZXNzZWQgYXMgc2Vjb25kcyBzaW5jZSB0aGUgVU5JWCBlcG9jaC5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBleHBpcmVzOiBudW1iZXI7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBlcGhlbWVyYWwgcHVibGljIGtleSB0byB3aGljaCBhbiBpbXBvcnRlZCBrZXkgc2hvdWxkIGJlIGVuY3J5cHRlZC5cbiAgICAgICAgICAgKiBUaGlzIGlzIGEgUDM4NCBwdWJsaWMga2V5IGluIGJhc2U2NC1lbmNvZGVkIHVuY29tcHJlc3NlZCBTRUNHIGZvcm1hdC5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBCYXNlNjQtZW5jb2RlZCwgZW5jcnlwdGVkIHNlY3JldCBrZXkuICovXG4gICAgICAgICAgc2tfZW5jOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgS2V5SW5Sb2xlSW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBLZXkgSURcbiAgICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMHg4ZTM0ODQ2ODdlNjZjZGQyNmNmMDRjMzY0NzYzM2FiNGYzNTcwMTQ4XG4gICAgICAgICAgICovXG4gICAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICAgICAga2V5X2luZm8/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluZm9cIl0gfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBQb2xpY2llcyB0aGF0IGFyZSBjaGVja2VkIGJlZm9yZSB0aGlzIGtleSBpcyB1c2VkIG9uIGJlaGFsZiBvZiB0aGlzIHJvbGVcbiAgICAgICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgICAgICogICB7XG4gICAgICAgICAgICogICAgIFwiVHhSZWNlaXZlclwiOiBcIjB4OGM1OTQ2OTFjMGU1OTJmZmEyMWYxNTNhMTZhZTQxZGI1YmVmY2FhYVwiXG4gICAgICAgICAgICogICB9LFxuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcIlR4RGVwb3NpdFwiOiB7XG4gICAgICAgICAgICogICAgICAgXCJraW5kXCI6IFwiQ2Fub25pY2FsXCJcbiAgICAgICAgICAgKiAgICAgfVxuICAgICAgICAgICAqICAgfVxuICAgICAgICAgICAqIF1cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gUm9sZSBJRFxuICAgICAgICAgICAqIEBleGFtcGxlIFJvbGUjZTQyN2MyOGEtOWM1Yi00OWNjLWEyNTctODc4YWVhNThhMjJjXG4gICAgICAgICAgICovXG4gICAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEtleUluZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ29tbW9uRmllbGRzXCJdICYge1xuICAgICAgICAgIGRlcml2YXRpb25faW5mbz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5RGVyaXZhdGlvbkluZm9cIl0gfCBudWxsO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGUga2V5IGlzIGVuYWJsZWQgKG9ubHkgZW5hYmxlZCBrZXlzIG1heSBiZSB1c2VkIGZvciBzaWduaW5nKSAqL1xuICAgICAgICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUga2V5OiBcIktleSNcIiBmb2xsb3dlZCBieSBhIHVuaXF1ZSBpZGVudGlmaWVyIHNwZWNpZmljIHRvXG4gICAgICAgICAgICogdGhlIHR5cGUgb2Yga2V5IChzdWNoIGFzIGEgcHVibGljIGtleSBmb3IgQkxTIG9yIGFuIGV0aGVyZXVtIGFkZHJlc3MgZm9yIFNlY3ApXG4gICAgICAgICAgICogQGV4YW1wbGUgS2V5IzB4OGUzNDg0Njg3ZTY2Y2RkMjZjZjA0YzM2NDc2MzNhYjRmMzU3MDE0OFxuICAgICAgICAgICAqL1xuICAgICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgICAgIGtleV90eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleVR5cGVcIl07XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEEgdW5pcXVlIGlkZW50aWZpZXIgc3BlY2lmaWMgdG8gdGhlIHR5cGUgb2Yga2V5LCBzdWNoIGFzIGEgcHVibGljIGtleSBvciBhbiBldGhlcmV1bSBhZGRyZXNzXG4gICAgICAgICAgICogQGV4YW1wbGUgMHg4ZTM0ODQ2ODdlNjZjZGQyNmNmMDRjMzY0NzYzM2FiNGYzNTcwMTQ4XG4gICAgICAgICAgICovXG4gICAgICAgICAgbWF0ZXJpYWxfaWQ6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gT3duZXIgb2YgdGhlIGtleVxuICAgICAgICAgICAqIEBleGFtcGxlIFVzZXIjYzNiOTM3OWMtNGU4Yy00MjE2LWJkMGEtNjVhY2U1M2NmOThmXG4gICAgICAgICAgICovXG4gICAgICAgICAgb3duZXI6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gS2V5IHBvbGljeVxuICAgICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICAgKiAgIFwiQWxsb3dSYXdCbG9iU2lnbmluZ1wiLFxuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcIlJlcXVpcmVNZmFcIjoge1xuICAgICAgICAgICAqICAgICAgIFwiY291bnRcIjogMVxuICAgICAgICAgICAqICAgICB9XG4gICAgICAgICAgICogICB9XG4gICAgICAgICAgICogXVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHBvbGljeTogdW5rbm93bltdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGtleSBwcm92ZW5hbmNlLiAqL1xuICAgICAgICAgIHByb3ZlbmFuY2U/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCwgc2VyaWFsaXplZCBwdWJsaWMga2V5LiBUaGUgZm9ybWF0IHVzZWQgZGVwZW5kcyBvbiB0aGUga2V5IHR5cGU6XG4gICAgICAgICAgICogLSBTZWNwMjU2azEga2V5cyB1c2UgNjUtYnl0ZSB1bmNvbXByZXNzZWQgU0VDRyBmb3JtYXQ7XG4gICAgICAgICAgICogLSBTdGFyayBrZXlzIHVzZSAzMy1ieXRlIGNvbXByZXNzZWQgU0VDRyBmb3JtYXQ7XG4gICAgICAgICAgICogLSBCTFMga2V5cyB1c2UgNDgtYnl0ZSBjb21wcmVzc2VkIEJMUzEyLTM4MSAoWkNhc2gpIGZvcm1hdDtcbiAgICAgICAgICAgKiAtIEVkMjU1MTkga2V5cyB1c2UgdGhlIGNhbm9uaWNhbCAzMi1ieXRlIGVuY29kaW5nIHNwZWNpZmllZCBpbiBSRkMgODAzMi5cbiAgICAgICAgICAgKiBAZXhhbXBsZSAweDA0ZDI2ODhiNmJjMmNlN2Y5ODc5YjllNzQ1ZjNjNGRjMTc3OTA4YzVjZWYwYzFiNjRjZmYxOWFlN2ZmMjdkZWU2MjNjNjRmZTlkOWMzMjVjN2ZiYmM3NDhiYmQ1ZjYwN2NlMTRkZDgzZTI4ZWJiYmI3ZDNlN2YyZmZiNzBhNzk0MzFcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwdXJwb3NlIGZvciB3aGljaCB0aGUga2V5IGNhbiBiZSB1c2VkIChlLmcuLCBjaGFpbiBpZCBmb3Igd2hpY2ggdGhlIGtleSBpcyBhbGxvd2VkIHRvIHNpZ24gbWVzc2FnZXMpXG4gICAgICAgICAgICogQGV4YW1wbGUgRXRoMlZhbGlkYXRvcigxKVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHB1cnBvc2U6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZWdpb24gYWZmaW5pdHkgZm9yIHRoaXMga2V5ICovXG4gICAgICAgICAgcmVnaW9uPzogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgcmV0dXJuZWQgd2hlbiByZXF1ZXN0aW5nIGEga2V5IGF0dGVzdGF0aW9uLiAqL1xuICAgIEtleUluZm9Kd3Q6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEEgSlNPTiBXZWIgVG9rZW4gd2hvc2UgY2xhaW1zIGNvbnRhaW4gdGhlIGBLZXlJbmZvYCBzdHJ1Y3R1cmUuICovXG4gICAgICAgICAgand0OiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgS2V5SW5mb3M6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBrZXlzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluZm9cIl1bXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoaXJkLXBhcnR5IGlkZW50aXRpZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSB1c2VyJ3MgYWNjb3VudCAqL1xuICAgIExpc3RJZGVudGl0aWVzUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBpZGVudGl0aWVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkZW50aXR5SW5mb1wiXVtdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIExpc3RNZmFSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIHBlbmRpbmcgTUZBIHJlcXVlc3RzICovXG4gICAgICAgICAgbWZhX3JlcXVlc3RzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVJlcXVlc3RJbmZvXCJdW107XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgcGVuZGluZyBNTUkgcmVxdWVzdHMgY3JlYXRlZCBieSB0aGUgY3VycmVudCB1c2VyLiAqL1xuICAgIExpc3RQZW5kaW5nTWVzc2FnZXNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIHBlbmRpbmcgbWVzc2FnZXMgZm9yIGEgdXNlci4gKi9cbiAgICAgICAgICBwZW5kaW5nX21lc3NhZ2VzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBlbmRpbmdNZXNzYWdlSW5mb1wiXVtdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmV0dXJuZWQgYXMgYSByZXNwb25zZSBmcm9tIG11bHRpcGxlIHJvdXRlcyAoZS5nLiwgJ2dldCBtZmEnLCAnYXBwcm92ZSBtZmEnLCAnYXBwcm92ZSB0b3RwJykuICovXG4gICAgTWZhUmVxdWVzdEluZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBjcmVhdGVkX2F0PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHNlc3Npb24gaWRlbnRpdHkgKHVzZXIgb3Igcm9sZSkgdGhhdCBjcmVhdGVkIHRoaXMgcmVxdWVzdC4gKi9cbiAgICAgICAgICBjcmVhdGVkX2J5OiBzdHJpbmc7XG4gICAgICAgICAgZXhwaXJlc19hdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQXBwcm92YWwgcmVxdWVzdCBJRC4gKi9cbiAgICAgICAgICBpZDogc3RyaW5nO1xuICAgICAgICAgIG5vdF92YWxpZF91bnRpbD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gTUZBIHBvbGljeSBwcm92ZW5hbmNlXG4gICAgICAgICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwcm92ZW5hbmNlOiBcIktleVwiIHwgXCJLZXlJblJvbGVcIiB8IFwiUm9sZVwiIHwgXCJVc2VyXCIgfCBcIkVkaXRQb2xpY3lcIjtcbiAgICAgICAgICByZWNlaXB0PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSZWNlaXB0XCJdIHwgbnVsbDtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZWdpb24gdGhpcyBNRkEgcmVxdWVzdCB3YXMgY3JlYXRlZCBpbi4gIEl0IGNhbiBvbmx5IGJlIHJlZGVlbWVkIGZyb20gdGhlIHNhbWUgcmVnaW9uLiAqL1xuICAgICAgICAgIHJlZ2lvbj86IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCBjb250YWlucyB0aGUgSURzIG9mIGFsbCBNRkEgcmVxdWVzdHMgKGluY2x1ZGluZyB0aGlzIG9uZSEpIHRoYXRcbiAgICAgICAgICAgKiB3ZXJlIGdlbmVyYXRlZCBhdCBvbmNlIGZvciB0aGUgc2FtZSBDdWJlU2lnbmVyIG9wZXJhdGlvbi5cbiAgICAgICAgICAgKlxuICAgICAgICAgICAqIElmIG5vdCBzZXQsIGl0IG1lYW5zIHRoYXQgdGhpcyB3YXMgdGhlIGxvbmUgTUZBIHJlcXVlc3QgZ2VuZXJhdGVkIGZvciBgcmVxdWVzdGAuXG4gICAgICAgICAgICpcbiAgICAgICAgICAgKiBUaGlzIGlzIHVzZWZ1bCBzbyB0aGF0IGEgY2xpZW50IGNhbiBkaXNjb3ZlciBhbGwgdGhlIE1GQXMgd2hvc2UgcmVjZWlwdHMgbXVzdFxuICAgICAgICAgICAqIGJlIHN1Ym1pdHRlZCB0b2dldGhlciB0byBjYXJyeSBvdXQgdGhlIG9yaWdpbmFsIEN1YmVTaWduZXIgb3BlcmF0aW9uLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHJlbGF0ZWRfaWRzPzogc3RyaW5nW107XG4gICAgICAgICAgcmVxdWVzdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJIdHRwUmVxdWVzdFwiXTtcbiAgICAgICAgICBzdGF0dXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU3RhdHVzXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gYWJvdXQgYSBuZXcgc2Vzc2lvbiwgcmV0dXJuZWQgZnJvbSBtdWx0aXBsZSBlbmRwb2ludHMgKGUuZy4sIGxvZ2luLCByZWZyZXNoLCBldGMuKS4gKi9cbiAgICBOZXdTZXNzaW9uUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFNlc3Npb24gZXhwaXJhdGlvbiAoaW4gc2Vjb25kcyBzaW5jZSBVTklYIGVwb2NoKSwgYmV5b25kIHdoaWNoIGl0IGNhbm5vdCBiZSByZWZyZXNoZWQuXG4gICAgICAgICAgICogQGV4YW1wbGUgMTcwMTg3OTY0MFxuICAgICAgICAgICAqL1xuICAgICAgICAgIGV4cGlyYXRpb24/OiBudW1iZXI7XG4gICAgICAgICAgb3JnX2lkPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXSB8IG51bGw7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUb2tlbiB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlZnJlc2ggdGhpcyBzZXNzaW9uLiAqL1xuICAgICAgICAgIHJlZnJlc2hfdG9rZW46IHN0cmluZztcbiAgICAgICAgICBzZXNzaW9uX2luZm86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2xpZW50U2Vzc2lvbkluZm9cIl07XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIE5ldyB0b2tlbiB0byBiZSB1c2VkIGZvciBhdXRoZW50aWNhdGlvbi4gUmVxdWVzdHMgdG8gc2lnbmluZyBlbmRwb2ludHNcbiAgICAgICAgICAgKiBzaG91bGQgaW5jbHVkZSB0aGlzIHZhbHVlIGluIHRoZSBgQXV0aG9yaXphdGlvbmAgaGVhZGVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHRva2VuOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBvcmctZXhwb3J0IGNpcGhlcnRleHQgcmV0cmlldmVkIHZpYSB0aGUgb3JnLWV4cG9ydCBBUEkuICovXG4gICAgT3JnRXhwb3J0UmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEEgYmFzZTY0LWVuY29kZWQgZXhwb3J0IGNpcGhlcnRleHQuICovXG4gICAgICAgICAgY2lwaGVydGV4dDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIE9yZ0luZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhUmVxdWlyZW1lbnRzXCJdICYge1xuICAgICAgICAgIGFjY2Vzc19tb2RlbDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2Nlc3NNb2RlbFwiXTtcbiAgICAgICAgICBjdXN0b21fY2hhaW5zPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDdXN0b21DaGFpbnNEYXRhXCJdIHwgbnVsbDtcbiAgICAgICAgICBkZWZhdWx0X2ludml0ZV9raW5kPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJbnZpdGVLaW5kXCJdO1xuICAgICAgICAgIGVtYWlsX3ByZWZlcmVuY2VzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFbWFpbFByZWZlcmVuY2VzXCJdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hlbiBmYWxzZSwgYWxsIGNyeXB0b2dyYXBoaWMgb3BlcmF0aW9ucyBpbnZvbHZpbmcga2V5cyBpbiB0aGlzIG9yZyBhcmUgZGlzYWJsZWQuICovXG4gICAgICAgICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAgICAgICBleHRfZGF0YT86XG4gICAgICAgICAgICB8ICh7XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBQZXIgYWxpZW4gdXNlciBrZXkgY291bnQgdGhyZXNob2xkLCB3aGljaCwgb25jZSBleGNlZWRlZCwgZGlzYWxsb3dzIGZ1cnRoZXIga2V5IGNyZWF0aW9uIGJ5IGFsaWVuIHVzZXJzLlxuICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICogVGhpcyBzZXR0aW5nIGlzIGNoZWNrZWQgb25seSB3aGVuIGFuIGFsaWVuIHVzZXIgcmVxdWVzdHMgdG8gY3JlYXRlIG9yIGltcG9ydCBhIG5ldyBrZXkuXG4gICAgICAgICAgICAgICAgICogSW4gb3RoZXIgd29yZHMsIG9yZyBhZG1pbnMgY2FuIHN0aWxsIGFzc2lnbiB1bmxpbWl0ZWQgbnVtYmVyIG9mIGtleXMgdG8gdGhlaXIgYWxpZW4gdXNlcnMuXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgYWxpZW5fa2V5X2NvdW50X3RocmVzaG9sZD86IG51bWJlciB8IG51bGw7XG4gICAgICAgICAgICAgIH0gJiB7XG4gICAgICAgICAgICAgICAgY3JlYXRlZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXSB8IG51bGw7XG4gICAgICAgICAgICAgICAgbGFzdF9tb2RpZmllZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXSB8IG51bGw7XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBWZXJzaW9uIG9mIHRoaXMgb2JqZWN0XG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgdmVyc2lvbj86IG51bWJlcjtcbiAgICAgICAgICAgICAgfSAmIFJlY29yZDxzdHJpbmcsIG5ldmVyPilcbiAgICAgICAgICAgIHwgbnVsbDtcbiAgICAgICAgICBoaXN0b3JpY2FsX2RhdGFfY29uZmlndXJhdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSGlzdG9yaWNhbERhdGFDb25maWd1cmF0aW9uXCJdO1xuICAgICAgICAgIGlkcF9jb25maWd1cmF0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZHBDb25maWdcIl07XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEZXByZWNhdGVkOiB0aGlzIGZpZWxkIHNob3VsZCBiZSBpZ25vcmVkLiAqL1xuICAgICAgICAgIGtleV9pbXBvcnRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG9yZ2FuaXphdGlvbidzIHVuaXZlcnNhbGx5IHVuaXF1ZSBrZXktd3JhcHBpbmcta2V5IGlkZW50aWZpZXIuXG4gICAgICAgICAgICogVGhpcyB2YWx1ZSBpcyByZXF1aXJlZCB3aGVuIHNldHRpbmcgdXAga2V5IGV4cG9ydC5cbiAgICAgICAgICAgKiBAZXhhbXBsZSBtcmstZmNlMDk1MjVlODE1ODdkMjM1MjBmMTFlMDdlMmU5ZDlcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBrd2tfaWQ6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gRGF0ZS90aW1lIChpbiBVVEMpIHdoZW4gbGFzdCAndW5zdGFrZScgd2FzIHBlcmZvcm1lZC4gVW5peCBlcG9jaCBpZiBub25lLlxuICAgICAgICAgICAqIEBleGFtcGxlIFRPRE9cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X3Vuc3Rha2U6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEhvdyBtYW55ICd1bnN0YWtlJyBjYWxscyBoYXBwZW5lZCBvbiB0aGUgZGF5IHdoZW4gYGxhc3RfdW5zdGFrZWAgd2FzIHBlcmZvcm1lZC5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X3Vuc3Rha2VfZGF5X2NvdW50OiBudW1iZXI7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIG1ldHJpY3MgYXJlIGNvbGxlY3RlZCBmb3IgdGhpcyBvcmcgKi9cbiAgICAgICAgICBtZXRyaWNzX2VuYWJsZWQ/OiBib29sZWFuO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIG9yZ1xuICAgICAgICAgICAqIEBleGFtcGxlIG15X29yZ19uYW1lXG4gICAgICAgICAgICovXG4gICAgICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyBub3RpZmljYXRpb24gZW5kcG9pbnRzLCB3aGljaCBhcmUgSFRUUFMgVVJMcyBhcmUgbm90aWZpZWQgYWJvdXQgYVxuICAgICAgICAgICAqIGNvbmZpZ3VyYWJsZSBzZXQgb2YgZXZlbnRzIGluIGFuIG9yZ2FuaXphdGlvbi4gRm9yIGVhY2ggZXZlbnQsIEN1YmVTaWduZXIgc2VuZHMgYSBQT1NUXG4gICAgICAgICAgICogcmVxdWVzdCB3aXRoIGEgSlNPTi1mb3JtYXR0ZWQgYm9keSB0aGF0IGNvbnRhaW5zIHRoZSBldmVudCBkZXRhaWxzLlxuICAgICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICAgKiAgIHtcbiAgICAgICAgICAgKiAgICAgXCJhcm5cIjogXCJhcm46YXdzOnNuczp1cy1lYXN0LTE6MDEyMzQ1Njc4OTAxOk9yZ0V2ZW50c1RvcGljOjEyMzQ1Njc4LTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMVwiLFxuICAgICAgICAgICAqICAgICBcImNvbmZpZ1wiOiB7XG4gICAgICAgICAgICogICAgICAgXCJ1cmxcIjogXCJodHRwczovL2V4YW1wbGUuY29tL2VuZHBvaW50MVwiXG4gICAgICAgICAgICogICAgIH0sXG4gICAgICAgICAgICogICAgIFwic3RhdHVzXCI6IFwiQ29uZmlybWVkXCJcbiAgICAgICAgICAgKiAgIH0sXG4gICAgICAgICAgICogICB7XG4gICAgICAgICAgICogICAgIFwiYXJuXCI6IFwiYXJuOmF3czpzbnM6dXMtZWFzdC0xOjAxMjM0NTY3ODkwMTpPcmdFdmVudHNUb3BpYzoxMjM0NTY3OC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDJcIixcbiAgICAgICAgICAgKiAgICAgXCJjb25maWdcIjoge1xuICAgICAgICAgICAqICAgICAgIFwiZmlsdGVyXCI6IHtcbiAgICAgICAgICAgKiAgICAgICAgIFwiT25lT2ZcIjogW1xuICAgICAgICAgICAqICAgICAgICAgICBcIkV0aDJDb25jdXJyZW50QXR0ZXN0YXRpb25TaWduaW5nXCIsXG4gICAgICAgICAgICogICAgICAgICAgIFwiRXRoMkNvbmN1cnJlbnRCbG9ja1NpZ25pbmdcIlxuICAgICAgICAgICAqICAgICAgICAgXVxuICAgICAgICAgICAqICAgICAgIH0sXG4gICAgICAgICAgICogICAgICAgXCJ1cmxcIjogXCJodHRwczovL2V4YW1wbGUuY29tL2VuZHBvaW50MlwiXG4gICAgICAgICAgICogICAgIH0sXG4gICAgICAgICAgICogICAgIFwic3RhdHVzXCI6IFwiUGVuZGluZ1wiXG4gICAgICAgICAgICogICB9XG4gICAgICAgICAgICogXVxuICAgICAgICAgICAqL1xuICAgICAgICAgIG5vdGlmaWNhdGlvbl9lbmRwb2ludHM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk5vdGlmaWNhdGlvbkVuZHBvaW50XCJdW107XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgb3JnYW5pemF0aW9uXG4gICAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgICAqL1xuICAgICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAgIHBhc3NrZXlfY29uZmlndXJhdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUGFzc2tleUNvbmZpZ1wiXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gT3JnLXdpZGUgcG9saWNpZXMgdGhhdCBhcmUgY2hlY2tlZCBiZWZvcmUgYSBrZXkgaXMgdXNlZCBmb3Igc2lnbmluZ1xuICAgICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICAgKiAgIHtcbiAgICAgICAgICAgKiAgICAgXCJNYXhEYWlseVVuc3Rha2VcIjogNVxuICAgICAgICAgICAqICAgfVxuICAgICAgICAgICAqIF1cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXTtcbiAgICAgICAgICBwb2xpY3lfZW5naW5lX2NvbmZpZ3VyYXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBvbGljeUVuZ2luZUNvbmZpZ3VyYXRpb25cIl07XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3JnYW5pemF0aW9uJ3MgY3VycmVudGx5IGNvbmZpZ3VyZWQgVE9UUCBmYWlsdXJlIGxpbWl0LCBpLmUuLCB0aGUgbnVtYmVyXG4gICAgICAgICAgICogb2YgdGltZXMgYSB1c2VyIGNhbiBwcm92aWRlIGFuIGluY29ycmVjdCBUT1RQIGNvZGUgYmVmb3JlIGJlaW5nIHJhdGUgbGltaXRlZC5cbiAgICAgICAgICAgKiBUaGlzIHZhbHVlIGNhbiBiZSBiZXR3ZWVuIDEgYW5kIDUgKGluY2x1c2l2ZSkuXG4gICAgICAgICAgICovXG4gICAgICAgICAgdG90cF9mYWlsdXJlX2xpbWl0OiBudW1iZXI7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3JnYW5pemF0aW9uJ3MgY3VycmVudGx5IGNvbmZpZ3VyZWQgdXNlci1leHBvcnQgZGVsYXksIGkuZS4sIHRoZSBtaW5pbXVtXG4gICAgICAgICAgICogYW1vdW50IG9mIHRpbWUgKGluIHNlY29uZHMpIGJldHdlZW4gd2hlbiBhIHVzZXItZXhwb3J0IGlzIGluaXRpYXRlZCBhbmQgd2hlblxuICAgICAgICAgICAqIGl0IG1heSBiZSBjb21wbGV0ZWQuIChUaGlzIHZhbHVlIGlzIG1lYW5pbmdsZXNzIGZvciBvcmdhbml6YXRpb25zIHRoYXQgdXNlXG4gICAgICAgICAgICogb3JnLXdpZGUgZXhwb3J0LilcbiAgICAgICAgICAgKi9cbiAgICAgICAgICB1c2VyX2V4cG9ydF9kZWxheTogbnVtYmVyO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hldGhlciB1c2VyIGV4cG9ydCBpcyBkaXNhYmxlZCAqL1xuICAgICAgICAgIHVzZXJfZXhwb3J0X2Rpc2FibGVkPzogYm9vbGVhbjtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyBjdXJyZW50bHkgY29uZmlndXJlZCB1c2VyLWV4cG9ydCB3aW5kb3csIGkuZS4sIHRoZSBhbW91bnRcbiAgICAgICAgICAgKiBvZiB0aW1lIChpbiBzZWNvbmRzKSBiZXR3ZWVuIHdoZW4gdGhlIHVzZXItZXhwb3J0IGRlbGF5IGlzIGNvbXBsZXRlZCBhbmQgd2hlblxuICAgICAgICAgICAqIHRoZSB1c2VyIGV4cG9ydCByZXF1ZXN0IGhhcyBleHBpcmVkIGFuZCBjYW4gbm8gbG9uZ2VyIGJlIGNvbXBsZXRlZC4gKFRoaXMgdmFsdWVcbiAgICAgICAgICAgKiBpcyBtZWFuaW5nbGVzcyBmb3Igb3JnYW5pemF0aW9ucyB0aGF0IHVzZSBvcmctd2lkZSBleHBvcnQuKVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHVzZXJfZXhwb3J0X3dpbmRvdzogbnVtYmVyO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgb2ZmaWNpYWwgd2ViYXBwIG9yaWdpbiBpcyBhdXRvbWF0aWNhbGx5IGFsbG93ZWQgKi9cbiAgICAgICAgICB3ZWJhcHBfZW5hYmxlZD86IGJvb2xlYW47XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUGFnaW5hdGVkQXVkaXRMb2dSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQXVkaXQgbG9nIGVudHJpZXMgKi9cbiAgICAgICAgICBlbnRyaWVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF1ZGl0TG9nRW50cnlcIl1bXTtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUGFnaW5hdGVkR2V0VXNlcnNJbk9yZ1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbGlzdCBvZiB1c2VycyBpbiB0aGUgb3JnICovXG4gICAgICAgICAgdXNlcnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckluT3JnSW5mb1wiXVtdO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBQYWdpbmF0ZWRMaXN0Q29udGFjdHNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQSBsaXN0IG9mIGNvbnRhY3RzIGluIHRoZSBvcmdhbml6YXRpb24sIG1hdGNoaW5nIGFueSBwcm92aWRlZCBxdWVyaWVzLiAqL1xuICAgICAgICAgIGNvbnRhY3RzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbnRhY3RJbmZvUmVzcG9uc2VcIl1bXTtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUGFnaW5hdGVkTGlzdEhpc3RvcmljYWxUeFJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBIaXN0b3JpY2FsIHRyYW5zYWN0aW9ucyBzaWduZWQgd2l0aCB0aGUgcmVxdWVzdGVkIGtleSwgc29ydGVkIGZyb20gbW9zdCB0byBsZWFzdCByZWNlbnQuICovXG4gICAgICAgICAgdHhzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkhpc3RvcmljYWxUeFwiXVtdO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBQYWdpbmF0ZWRMaXN0S2V5Um9sZXNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIHJvbGVzIHRoZSBrZXkgaXMgaW4gKi9cbiAgICAgICAgICByb2xlczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJblJvbGVJbmZvXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZExpc3RLZXlzUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBrZXlzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluZm9cIl1bXTtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUGFnaW5hdGVkTGlzdFBvbGljaWVzUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBPcmcncyBuYW1lZCBwb2xpY2llcy4gKi9cbiAgICAgICAgICBwb2xpY2llczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQb2xpY3lJbmZvXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZExpc3RSb2xlS2V5c1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwga2V5cyBpbiBhIHJvbGUgKi9cbiAgICAgICAgICBrZXlzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluUm9sZUluZm9cIl1bXTtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUGFnaW5hdGVkTGlzdFJvbGVVc2Vyc1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgdXNlcnMgaW4gYSByb2xlICovXG4gICAgICAgICAgdXNlcnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckluUm9sZUluZm9cIl1bXTtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUGFnaW5hdGVkTGlzdFJvbGVzUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCByb2xlcyBpbiBhbiBvcmdhbml6YXRpb24uICovXG4gICAgICAgICAgcm9sZXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUm9sZUluZm9cIl1bXTtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUGFnaW5hdGVkUG9saWN5TG9nc1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcG9saWN5IGV4ZWN1dGlvbiBsb2dzICovXG4gICAgICAgICAgbG9nczoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICAgICAgICAgIH1bXTtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUGFnaW5hdGVkUXVlcnlNZXRyaWNzUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFkdmlzb3J5IG1lc3NhZ2VzIChlLmcuLCBpZiBtYXggbnVtYmVyIG9mIHJlc3VsdHMgaXMgcmVhY2hlZCkuICovXG4gICAgICAgICAgbWVzc2FnZXM/OiBzdHJpbmdbXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwZXJpb2QgZm9yIHdoaWNoIHRoZSBzdGF0aXN0aWMgaXMgY29tcHV0ZWQsIGlmIGFueSAobm90IGFsbCBtZXRyaWNzIHN1cHBvcnQgc3BsaXR0aW5nIHRoZSByZXF1ZXN0ZWQgdGltZSByYW5nZSBpbnRvIGJpbnMpLlxuICAgICAgICAgICAqIElmIHNldCwgZXF1YWxzIHRvIHRoZSB2YWx1ZSBmcm9tIHRoZSByZXF1ZXN0IHJvdW5kZWQgdXAgdG8gdGhlIGNsb3Nlc3QgbXVsdGlwbGUgb2YgNjAuXG4gICAgICAgICAgICovXG4gICAgICAgICAgcGVyaW9kPzogbnVtYmVyO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gU29tZSBtZXRyaWNzIGNhbiBvcHRpb25hbGx5IHJldHVybiB0aGUgcmF3IGRhdGEsIHdoZW4gcmVxdWVzdGVkLiAqL1xuICAgICAgICAgIHJhd19kYXRhOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gICAgICAgICAgfVtdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQ29tcHV0ZWQgZGF0YSBwb2ludHMuICovXG4gICAgICAgICAgcmVzdWx0czoge1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgZGF0YSBwb2ludHMsIG9uZSBmb3IgZWFjaCB0aW1lIHBlcmlvZCAodGltZSBwZXJpb2RzIGZvciB3aGljaCB0aGUgdmFsdWUgaXMgMCBhcmUgb21pdHRlZCkuICovXG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IG51bWJlcjtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBtZXRyaWMgZGltZW5zaW9ucy4gKi9cbiAgICAgICAgICAgIGRpbWVuc2lvbnM6IHtcbiAgICAgICAgICAgICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9W107XG4gICAgICAgICAgc3RhdD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT3JnTWV0cmljU3RhdFwiXSB8IG51bGw7XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZFNlc3Npb25zUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBsaXN0IG9mIHNlc3Npb25zICovXG4gICAgICAgICAgc2Vzc2lvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vzc2lvbkluZm9cIl1bXTtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUGFnaW5hdGVkVXNlckV4cG9ydExpc3RSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIGV4cG9ydF9yZXF1ZXN0czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VyRXhwb3J0SW5pdFJlc3BvbnNlXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhc3NrZXlBc3NlcnRDaGFsbGVuZ2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IChjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNoYWxsZW5nZVBpZWNlc1wiXSAmIHtcbiAgICAgICAgICBvcHRpb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uc1wiXTtcbiAgICAgICAgfSkgJiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGNoYWxsZW5nZS4gTXVzdCBiZSBzdXBwbGllZCB3aGVuIGFuc3dlcmluZyB0aGUgY2hhbGxlbmdlLiAqL1xuICAgICAgICAgIGNoYWxsZW5nZV9pZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRXh0ZW5kZWQgaW5mb3JtYXRpb24gYWJvdXQgYW4gZXhpc3RpbmcgTU1JIHJlcXVlc3QuICovXG4gICAgUGVuZGluZ01lc3NhZ2VJbmZvOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgbWV0YWRhdGE6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTW1pTWV0YWRhdGFcIl07XG4gICAgICAgICAgc2lnbmVkTWVzc2FnZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2lnbmVkTWVzc2FnZVwiXSB8IG51bGw7XG4gICAgICAgICAgdHJhbnNhY3Rpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRyYW5zYWN0aW9uQW5kU3RhdHVzXCJdIHwgbnVsbDtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICBjcmVhdGVkX2F0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICAgICAgZXhwaXJlc19hdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBwZW5kaW5nIG1lc3NhZ2UgKi9cbiAgICAgICAgICBpZDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGlkZW50aXR5IChhIHVzZXIgb3IgYSByb2xlIGlkKSB3aGljaCBjcmVhdGVkIHRoaXMgbWVzc2FnZS4gKi9cbiAgICAgICAgICBpZGVudGl0eTogc3RyaW5nO1xuICAgICAgICAgIG1lc3NhZ2VfZWlwMTkxPzoge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gRnJvbSBhZGRyZXNzLCBoZXgtZW5jb2RlZCwgd2l0aCBsZWFkaW5nICcweCdcbiAgICAgICAgICAgICAqIEBleGFtcGxlIDB4MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIChpbmNsdWRpbmcgYSAnMHgnIHByZWZpeCkgbWVzc2FnZSB0byBzaWduLiAqL1xuICAgICAgICAgICAgbWVzc2FnZTogc3RyaW5nO1xuICAgICAgICAgIH0gfCBudWxsO1xuICAgICAgICAgIG1lc3NhZ2VfZWlwNzEyPzoge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gRnJvbSBhZGRyZXNzLCBoZXgtZW5jb2RlZCwgd2l0aCBsZWFkaW5nICcweCdcbiAgICAgICAgICAgICAqIEBleGFtcGxlIDB4MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgICAgICAgICBkYXRhOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlR5cGVkRGF0YVwiXTtcbiAgICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgICAgdmVyc2lvbjogXCJ2M1wiIHwgXCJ2NFwiO1xuICAgICAgICAgIH0gfCBudWxsO1xuICAgICAgICAgIG1lc3NhZ2VfdHg/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlR5cGVkVHJhbnNhY3Rpb25cIl0gfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRXh0ZW5kZWQgaW5mb3JtYXRpb24gYWJvdXQgYW4gZXhpc3RpbmcgTU1JIG1lc3NhZ2UsIGluY2x1ZGluZyB0aGUgc2lnbmF0dXJlLiAqL1xuICAgIFBlbmRpbmdNZXNzYWdlU2lnblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiAoe1xuICAgICAgICAgIG1ldGFkYXRhOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1taU1ldGFkYXRhXCJdO1xuICAgICAgICAgIHNpZ25lZE1lc3NhZ2U/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNpZ25lZE1lc3NhZ2VcIl0gfCBudWxsO1xuICAgICAgICAgIHRyYW5zYWN0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUcmFuc2FjdGlvbkFuZFN0YXR1c1wiXSB8IG51bGw7XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgY3JlYXRlZF9hdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgICAgIGV4cGlyZXNfYXQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgcGVuZGluZyBtZXNzYWdlICovXG4gICAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBpZGVudGl0eSAoYSB1c2VyIG9yIGEgcm9sZSBpZCkgd2hpY2ggY3JlYXRlZCB0aGlzIG1lc3NhZ2UuICovXG4gICAgICAgICAgaWRlbnRpdHk6IHN0cmluZztcbiAgICAgICAgICBtZXNzYWdlX2VpcDE5MT86IHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIEZyb20gYWRkcmVzcywgaGV4LWVuY29kZWQsIHdpdGggbGVhZGluZyAnMHgnXG4gICAgICAgICAgICAgKiBAZXhhbXBsZSAweDAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYWRkcmVzczogc3RyaW5nO1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCAoaW5jbHVkaW5nIGEgJzB4JyBwcmVmaXgpIG1lc3NhZ2UgdG8gc2lnbi4gKi9cbiAgICAgICAgICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICAgICAgICB9IHwgbnVsbDtcbiAgICAgICAgICBtZXNzYWdlX2VpcDcxMj86IHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIEZyb20gYWRkcmVzcywgaGV4LWVuY29kZWQsIHdpdGggbGVhZGluZyAnMHgnXG4gICAgICAgICAgICAgKiBAZXhhbXBsZSAweDAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYWRkcmVzczogc3RyaW5nO1xuICAgICAgICAgICAgZGF0YTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUeXBlZERhdGFcIl07XG4gICAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICAgIHZlcnNpb246IFwidjNcIiB8IFwidjRcIjtcbiAgICAgICAgICB9IHwgbnVsbDtcbiAgICAgICAgICBtZXNzYWdlX3R4PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUeXBlZFRyYW5zYWN0aW9uXCJdIHwgbnVsbDtcbiAgICAgICAgfSkgJlxuICAgICAgICAgIFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgc3RydWN0IGNvbnRhaW5pbmcgYWxsIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBhIHNwZWNpZmljIHZlcnNpb24gb2YgYSBwb2xpY3kuICovXG4gICAgUG9saWN5SW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGFjY2Vzcy1jb250cm9sIGVudHJpZXMgZm9yIHRoZSBwb2xpY3kuICovXG4gICAgICAgICAgYWNsPzogdW5rbm93bltdIHwgbnVsbDtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEEgbGlzdCBvZiBlbnRpdGllcyAoa2V5cywgcm9sZXMsIGV0Yy4pIHRoZSBwb2xpY3kgaXMgYXR0YWNoZWQgdG8uICovXG4gICAgICAgICAgYXR0YWNoZWRfdG86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUG9saWN5QXR0YWNoZWRUb0lkXCJdW107XG4gICAgICAgICAgY3JlYXRlZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgICAgIGVkaXRfcG9saWN5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFZGl0UG9saWN5XCJdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVXNlci1kZWZpbmVkIG1ldGFkYXRhIGZvciB0aGUgbmFtZWQgcG9saWN5LiAqL1xuICAgICAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBuYW1lIG9mIHRoZSBwb2xpY3kuICovXG4gICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICAgIG93bmVyOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHBvbGljeSBpZCAqL1xuICAgICAgICAgIHBvbGljeV9pZDogc3RyaW5nO1xuICAgICAgICAgIHBvbGljeV90eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBvbGljeVR5cGVcIl07XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcG9saWN5IHJ1bGUuICovXG4gICAgICAgICAgcnVsZXM6IHVua25vd25bXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwb2xpY3kgcnVsZSdzIHZlcnNpb24uXG4gICAgICAgICAgICovXG4gICAgICAgICAgdmVyc2lvbjogbnVtYmVyO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBQb2xpY3lSZXN1bHRSZXNwb25zZSBpcyBhIHdyYXBwZXIgb24gUG9saWN5UmVzdWx0IHdpdGggdHdvIGltcG9ydGFudFxuICAgICAqIHByb3BlcnRpZXM6XG4gICAgICogKiBkZXJpdmVzIE9rVG9Mb2dSZXNwb25zZSwgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBpbiB0aGUgcm9ja2V0IGhhbmRsZXIuXG4gICAgICogKiBkZXJpdmVzIFRvU2NoZW1hIGFuZCBUb1Jlc3BvbnNlLCB3aXRoIHRoZSBgdmFsYCBmaWVsZCB3aXRoIHZhbHVlX3R5cGVcbiAgICAgKiBPYmplY3QsIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byBwcm92aWRlIGFsbCBvZiB0aGUgT3BlbkFQSSB0eXBlXG4gICAgICogZGVzY3JpcHRpb25zIG9mIGEgUG9saWN5UmVzdWx0LlxuICAgICAqXG4gICAgICogVGhlIFBvbGljeVJlc3VsdCBpbmNsdWRlcyBlbnVtcyBhbmQgb3RoZXIgc3RhbmRhcmQgdHlwZXMgKGUuZy5cbiAgICAgKiBzdGQ6OnRpbWU6OkludGVydmFsKSB3aGljaCBhcmUgbm9udHJpdmlhbCB0byByZXByZXNlbnQgaW4gT3BlbkFQSS4gU2luY2VcbiAgICAgKiB0aGlzIGVuZHBvaW50IGlzIGp1c3QgZm9yIHRlc3RpbmcsIHdlIGRvbid0IHJlYWxseSBjYXJlIGFib3V0IGhvdyBhY2N1cmF0ZVxuICAgICAqIHRoZSBzY2hlbWEgaXMsIGFuZCBjYW4gbGVhbiBvbiBzZXJkZV9qc29uIHdoZW4gZGVjb2RpbmcgdGhpcyByZXNwb25zZSB0byBhXG4gICAgICogUG9saWN5UmVzdWx0IGluIGEgY2xpZW50LiBOb3RlIHRoYXQgdGhlcmUgaXMgYSBidWcgaW4gdXRvaXBhIHdoZXJlIHRoZVxuICAgICAqIHZhbHVlX3R5cGUgYW5ub3RhdGlvbiB3aWxsIG5vdCB3b3JrIGZvciBhIHR1cGxlLXN0cnVjdCwgb25seSBhIHN0cnVjdCB3aXRoXG4gICAgICogZmllbGRzLlxuICAgICAqL1xuICAgIFBvbGljeVJlc3VsdFJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgdmFsOiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHN0cnVjdCBjb250YWluaW5nIGFsbCBub24tc2VjcmV0IGluZm9ybWF0aW9uIGFib3V0IHBvbGljeSBzZWNyZXRzLiAqL1xuICAgIFBvbGljeVNlY3JldHNJbmZvOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbW1vbkZpZWxkc1wiXSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmFtZXMgb2YgdGhlIHNlY3JldHMuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbmFtZXM6IHN0cmluZ1tdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHBvbGljeSBzZWNyZXRzLiAqL1xuICAgICAgICAgIHNlY3JldHM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2VjcmV0SW5mb1wiXVtdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgdG8gYSBQU0JUIHNpZ25pbmcgcmVxdWVzdCAqL1xuICAgIFBzYnRTaWduUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHBvbGljeSBldmFsdWF0aW9uIHRyZWUuICovXG4gICAgICAgICAgcG9saWN5X2V2YWxfdHJlZT86IHVua25vd247XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBQU0JUIGluIHN0YW5kYXJkIGhleCBzZXJpYWxpemF0aW9uLCB3aXRob3V0IGxlYWRpbmcgXCIweFwiLlxuICAgICAgICAgICAqIEBleGFtcGxlIDcwNzM2Mjc0ZmYwMTAwNWUuLi5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwc2J0OiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBQdWJsaWMgaW5mb3JtYXRpb24gYWJvdXQgYW4gb3JnYW5pemF0aW9uLiAqL1xuICAgIFB1YmxpY09yZ0luZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEV4cGxpY2l0bHkgY29uZmlndXJlZCAoYWxsb3dsaXN0ZWQpIE9wZW5JRCBwcm92aWRlcnMgZm9yIGFuIG9yZyAqL1xuICAgICAgICAgIG9pZGNfaXNzdWVyczoge1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBJbnRlbmRlZCBhdWRpZW5jZXMgKGNsaWVudCBJRHMpICovXG4gICAgICAgICAgICBhdWRpZW5jZXM6IHN0cmluZ1tdO1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBJc3N1ZXIgVVJMICovXG4gICAgICAgICAgICBpc3N1ZXI6IHN0cmluZztcbiAgICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgaXNzdWVyIG5pY2tuYW1lICovXG4gICAgICAgICAgICBuaWNrbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB1c2VyIHJvbGVzIGFsbG93ZWQgdG8gdXNlIHRoaXMgSURQICovXG4gICAgICAgICAgICB1c2VyczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZW1iZXJSb2xlXCJdW107XG4gICAgICAgICAgfVtdO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBPcmcgaWRlbnRpZmllclxuICAgICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgbG9nZ2luZyBpbiB3aXRoIGp1c3QgYSBwYXNza2V5IGlzIGFsbG93ZWQgKi9cbiAgICAgICAgICBwYXNza2V5X2xvZ2luX2VuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbWV0cmljIGRhdGEgcG9pbnRzLiAqL1xuICAgIFF1ZXJ5TWV0cmljc1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBZHZpc29yeSBtZXNzYWdlcyAoZS5nLiwgaWYgbWF4IG51bWJlciBvZiByZXN1bHRzIGlzIHJlYWNoZWQpLiAqL1xuICAgICAgICAgIG1lc3NhZ2VzPzogc3RyaW5nW107XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcGVyaW9kIGZvciB3aGljaCB0aGUgc3RhdGlzdGljIGlzIGNvbXB1dGVkLCBpZiBhbnkgKG5vdCBhbGwgbWV0cmljcyBzdXBwb3J0IHNwbGl0dGluZyB0aGUgcmVxdWVzdGVkIHRpbWUgcmFuZ2UgaW50byBiaW5zKS5cbiAgICAgICAgICAgKiBJZiBzZXQsIGVxdWFscyB0byB0aGUgdmFsdWUgZnJvbSB0aGUgcmVxdWVzdCByb3VuZGVkIHVwIHRvIHRoZSBjbG9zZXN0IG11bHRpcGxlIG9mIDYwLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHBlcmlvZD86IG51bWJlcjtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFNvbWUgbWV0cmljcyBjYW4gb3B0aW9uYWxseSByZXR1cm4gdGhlIHJhdyBkYXRhLCB3aGVuIHJlcXVlc3RlZC4gKi9cbiAgICAgICAgICByYXdfZGF0YToge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICAgICAgICAgIH1bXTtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIENvbXB1dGVkIGRhdGEgcG9pbnRzLiAqL1xuICAgICAgICAgIHJlc3VsdHM6IHtcbiAgICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGRhdGEgcG9pbnRzLCBvbmUgZm9yIGVhY2ggdGltZSBwZXJpb2QgKHRpbWUgcGVyaW9kcyBmb3Igd2hpY2ggdGhlIHZhbHVlIGlzIDAgYXJlIG9taXR0ZWQpLiAqL1xuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICBba2V5OiBzdHJpbmddOiBudW1iZXI7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbWV0cmljIGRpbWVuc2lvbnMuICovXG4gICAgICAgICAgICBkaW1lbnNpb25zOiB7XG4gICAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHN0cmluZztcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVtdO1xuICAgICAgICAgIHN0YXQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9yZ01ldHJpY1N0YXRcIl0gfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFJvbGVJbmZvOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbW1vbkZpZWxkc1wiXSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGUgcm9sZSBpcyBlbmFibGVkXG4gICAgICAgICAgICogQGV4YW1wbGUgdHJ1ZVxuICAgICAgICAgICAqL1xuICAgICAgICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEZXByZWNhdGVkLiBUaGUgQ3ViZVNpZ25lciBJRHMgb2YgYXQgbW9zdCAxMDAga2V5cyBhc3NvY2lhdGVkIHdpdGggdGhpcyByb2xlLiAqL1xuICAgICAgICAgIGtleXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluUm9sZUluZm9cIl1bXSB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlIGN1cnJlbnQgdXNlciBpcyBhIG1lbWJlciBvZiB0aGUgcm9sZS4gVGhpcyBpcyBhbHdheXMgdHJ1ZSxcbiAgICAgICAgICAgKiBleGNlcHQgZm9yIG93bmVycyB3aG8gY2FuIHNlZSByb2xlcyB0aGV5IGFyZSBub3QgbWVtYmVycyBvZi5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBtZW1iZXI6IGJvb2xlYW47XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgcm9sZSAobXVzdCBiZSBhbHBoYW51bWVyaWMpXG4gICAgICAgICAgICogQGV4YW1wbGUgbXlfcm9sZVxuICAgICAgICAgICAqL1xuICAgICAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBQb2xpY3kgdGhhdCBpcyBjaGVja2VkIHdoZW5ldmVyIGEga2V5IGlzIGFjY2Vzc2VkIGZvciBzaWduaW5nIHZpYSB0aGlzIHJvbGUuXG4gICAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcIlNvdXJjZUlwQWxsb3dsaXN0XCI6IFtcbiAgICAgICAgICAgKiAgICAgICBcIjEyMy40NTYuNzguOS8xNlwiXG4gICAgICAgICAgICogICAgIF1cbiAgICAgICAgICAgKiAgIH0sXG4gICAgICAgICAgICogICB7XG4gICAgICAgICAgICogICAgIFwiUmVxdWlyZU1mYVwiOiB7XG4gICAgICAgICAgICogICAgICAgXCJjb3VudFwiOiAxXG4gICAgICAgICAgICogICAgIH1cbiAgICAgICAgICAgKiAgIH1cbiAgICAgICAgICAgKiBdXG4gICAgICAgICAgICovXG4gICAgICAgICAgcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W107XG4gICAgICAgICAgcmVzdHJpY3RlZF9hY3Rpb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJlc3RyaWN0ZWRBY3Rpb25zTWFwXCJdO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIHJvbGVcbiAgICAgICAgICAgKiBAZXhhbXBsZSBSb2xlI2JmZTNlY2NiLTczMWUtNDMwZC1iMWU1LWFjMTM2M2U2YjA2YlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIERlcHJlY2F0ZWQuIFRoZSBsaXN0IG9mIGF0IG1vc3QgMTAwIHVzZXJzIHdpdGggYWNjZXNzIHRvIHRoZSByb2xlLiAqL1xuICAgICAgICAgIHVzZXJzPzogc3RyaW5nW10gfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgcmV0dXJuZWQgd2hlbiByZXF1ZXN0aW5nIGEgcm9sZSBhdHRlc3RhdGlvbi4gKi9cbiAgICBSb2xlSW5mb0p3dDoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQSBKU09OIFdlYiBUb2tlbiB3aG9zZSBjbGFpbXMgY29udGFpbiB0aGUgYFJvbGVJbmZvYCBzdHJ1Y3R1cmUuICovXG4gICAgICAgICAgand0OiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgU2Vzc2lvbkluZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vzc2lvbk1ldGFkYXRhXCJdICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRpb24gZGF0ZSAoaW4gc2Vjb25kcyBzaW5jZSB1bml4IGVwb2NoKVxuICAgICAgICAgICAqL1xuICAgICAgICAgIGNyZWF0ZWRfYXQ6IG51bWJlcjtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEV4cGlyYXRpb24gZGF0ZSAoaW4gc2Vjb25kcyBzaW5jZSB1bml4IGVwb2NoKVxuICAgICAgICAgICAqL1xuICAgICAgICAgIGV4cDogbnVtYmVyO1xuICAgICAgICAgIGxhc3RfdXNlZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiV2hlcmVBbmRXaGVuXCJdIHwgbnVsbDtcbiAgICAgICAgICBsaWZldGltZXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJhdGNoZXRDb25maWdcIl07XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gZm9yIHRoZSBzZXNzaW9uXG4gICAgICAgICAgICogQGV4YW1wbGUgT0lEQyBsb2dpbiBzZXNzaW9uXG4gICAgICAgICAgICovXG4gICAgICAgICAgcHVycG9zZTogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0cyB1c2VyIHBlcm1pc3Npb24gYW5kIGFjY2VzcyBmb3IgdGhlIHNlc3Npb25cbiAgICAgICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgICAgICogICBcInNpZ246KlwiLFxuICAgICAgICAgICAqICAgXCJtYW5hZ2U6bWZhOnZvdGU6Y3NcIlxuICAgICAgICAgICAqIF1cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBzY29wZXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNjb3BlXCJdW107XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFNlc3Npb24gSUQuIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIHNlc3Npb24sIGJ1dCBjYW5ub3QgYmUgdXNlZCBmb3IgYXV0aC5cbiAgICAgICAgICAgKiBAZXhhbXBsZSA3N2FhZDIxMDBjMzYxZjQ5NzYzNWRkMDA1YzRkMTU3ODFlMmU1ZGY0YjlmNDVkOGU3NGYzNzQyNWNiYzMwYjllXG4gICAgICAgICAgICovXG4gICAgICAgICAgc2Vzc2lvbl9pZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlc3BvbnNlIGZyb20gYW55IG9wZXJhdGlvbiBvcGVyYXRpbmcgb24gbXVsdGlwbGUgc2Vzc2lvbnMgKi9cbiAgICBTZXNzaW9uc1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbGlzdCBvZiBzZXNzaW9ucyAqL1xuICAgICAgICAgIHNlc3Npb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlc3Npb25JbmZvXCJdW107XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgU2lnblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY3kgZXZhbHVhdGlvbiB0cmVlLiAqL1xuICAgICAgICAgIHBvbGljeV9ldmFsX3RyZWU/OiB1bmtub3duO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGhleC1lbmNvZGVkIHJlc3VsdGluZyBzaWduYXR1cmUuICovXG4gICAgICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXR1cm5lZCB1cG9uIGEgc3VjY2Vzc2Z1bCBTSVdFIGF1dGhlbnRpY2F0aW9uLiAqL1xuICAgIFNpd2VDb21wbGV0ZVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgT0lEQyB0b2tlbiBjb3JyZXNwb25kaW5nIHRvIHRoZSB1c2VyIHdpdGggdGhlIHJlcXVlc3RlZCBTSVdFIGlkZW50aXR5LiAqL1xuICAgICAgICAgIGlkX3Rva2VuOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEEgY2hhbGxlbmdlIHJldHVybmVkIGluIHJlc3BvbnNlIHRvIGEgU2lnbi1JbiB3aXRoIEV0aGVyZXVtIHJlcXVlc3QuXG4gICAgICpcbiAgICAgKiBDb250YWlucyBhIG1lc3NhZ2UgdGhhdCB0aGUgY2xpZW50IG11c3Qgc2lnbiBmb2xsb3dpbmcgRUlQLTE5MVxuICAgICAqIHdpdGggdGhlIHJlcXVlc3RlZCBrZXkgaW4gb3JkZXIgdG8gY29tcGxldGUgYXV0aGVudGljYXRpb24uXG4gICAgICpcbiAgICAgKiBUaGUgY2xpZW50IGhhcyB1bnRpbCB0aGUgbWVzc2FnZSBleHBpcmVzIChidXQgbm8gbW9yZSB0aGFuIDUgbWludXRlcykgdG8gY29tcGxldGUgdGhlIGNoYWxsZW5nZS5cbiAgICAgKi9cbiAgICBTaXdlSW5pdFJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIGNoYWxsZW5nZSAodG8gaW5jbHVkZSBpbiB0aGUgcmVxdWVzdCB3aGVuIGNhbGxpbmcgdGhlIFBBVENIICgnY29tcGxldGUnKSBlbmRwb2ludCkgKi9cbiAgICAgICAgICBjaGFsbGVuZ2VfaWQ6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBtZXNzYWdlIHRvIHNpZ24gZm9sbG93aW5nIHRoZSBFSVAtMTkxIHN0YW5kYXJkLiAqL1xuICAgICAgICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBTdGFrZVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiAoe1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWN5IGV2YWx1YXRpb24gdHJlZS4gKi9cbiAgICAgICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICBkZXBvc2l0X3R4OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkRlcG9zaXRUeG5cIl07XG4gICAgICAgIH0pICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdmFsaWRhdG9yIGtleSBpZCAoXCJLZXkjLi4uXCIpXG4gICAgICAgICAgICogQGV4YW1wbGUgS2V5I2RiMTczMWY4LTM2NTktNDVjMC04ODViLWUxMWUxZjViN2JlMlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGNyZWF0ZWRfdmFsaWRhdG9yX2tleV9pZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFRlbGVncmFtQXV0aFJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgT0lEQyB0b2tlbiBjb3JyZXNwb25kaW5nIHRvIHRoaXMgdGVsZWdyYW0gdXNlciAqL1xuICAgICAgICAgIGlkX3Rva2VuOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIE9BdXRoMiBzdGFuZGFyZCBUb2tlbiBSZXNwb25zZS5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNjc0OSNzZWN0aW9uLTQuMi4yXG4gICAgICovXG4gICAgVG9rZW5SZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGFjY2VzcyB0b2tlbiBpc3N1ZWQgYnkgdGhlIGF1dGhvcml6YXRpb24gc2VydmVyLiAqL1xuICAgICAgICAgIGFjY2Vzc190b2tlbjogc3RyaW5nO1xuICAgICAgICAgIGV4cGlyZXNfaW46IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kc1wiXTtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFuIE9JREMgdG9rZW4gaXNzdWVkIGJ5IEN1YmlzdCwgY29udGFpbmluZyB1c2VyIGluZm9ybWF0aW9uICovXG4gICAgICAgICAgaWRfdG9rZW4/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlZnJlc2ggdG9rZW4gaXNzdWVkIGJ5IHRoZSBhdXRob3JpemF0aW9uIHNlcnZlci4gKi9cbiAgICAgICAgICByZWZyZXNoX3Rva2VuPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB0eXBlIG9mIHRoZSB0b2tlbiBpc3N1ZWQuIFZhbHVlIGlzIGNhc2UgaW5zZW5zaXRpdmUuICovXG4gICAgICAgICAgdG9rZW5fdHlwZTogc3RyaW5nO1xuICAgICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICAgIH0gJiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4gICAgICB9O1xuICAgIH07XG4gICAgVG90cEluZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBUT1RQIGNoYWxsZW5nZS5cbiAgICAgICAgICAgKiBAZXhhbXBsZSBUb3RwQ2hhbGxlbmdlIzc4OTJlYmJhLTU2M2UtNDg1Yi1iYjdkLWUyNjI2NzM2MzI4NlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHRvdHBfaWQ6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gU3RhbmRhcmQgVE9UUCB1cmwgd2hpY2ggaW5jbHVkZXMgZXZlcnl0aGluZyBuZWVkZWQgdG8gaW5pdGlhbGl6ZSBUT1RQLlxuICAgICAgICAgICAqIEBleGFtcGxlIG90cGF1dGg6Ly90b3RwL0N1YmlzdDphbGljZS0lNDBleGFtcGxlLmNvbT9zZWNyZXQ9REFIRjdLQ09UUVdTT01LNFhGRU1OSFhPNEo0MzNPRDcmaXNzdWVyPUN1YmlzdFxuICAgICAgICAgICAqL1xuICAgICAgICAgIHRvdHBfdXJsOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHJlc3BvbnNlIHRvIHNpZ24gYW4gZXRoMiB1bnN0YWtlIHJlcXVlc3QuICovXG4gICAgVW5zdGFrZVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgbWVzc2FnZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJWb2x1bnRhcnlFeGl0XCJdO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBCTFMgc2lnbmF0dXJlLlxuICAgICAgICAgICAqIEBleGFtcGxlIDB4OTEwYzdjZDUzN2VkOTFjYzhjNGE4MmYzY2JkODMyZTliZThjMjRhMjJlOWM4NmRmNDc5ZjdjZTQyMDI1ZWE2YTA5NjE5YjQxOGI2NjZhMDYwZTI2MGQyYWFlMzFiOGU1MGU5ZDA1Y2EzNDQyYzdlZWQzYjUwN2U1MjA3ZTE0Njc0Mjc1ZjY4YzJiYTg0YzRiZjZiOGRkMzY0YTMwNGFjYWM4Y2ZhYjM2ODFlMjUxNGI0NDAwZjkyNDJiYzYxMTY0XG4gICAgICAgICAgICovXG4gICAgICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY3kgZXZhbHVhdGlvbiB0cmVlLiAqL1xuICAgICAgICAgIHBvbGljeV9ldmFsX3RyZWU/OiB1bmtub3duO1xuICAgICAgICB9ICYgUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFVwZGF0ZU9yZ1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgYWxpZW5fbG9naW5fcmVxdWlyZW1lbnQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlY29uZEZhY3RvclJlcXVpcmVtZW50XCJdIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gTUZBIHR5cGVzIHRoYXQgYXJlIGFsbG93ZWQgdG8gYmUgdXNlZCBmb3IgaW1wbGljaXRseSBzZWN1cml0eS1zZW5zaXRpdmVcbiAgICAgICAgICAgKiBvcGVyYXRpb25zIChsaWtlIGxvZ2dpbmcgaW4sIGFkZGluZyBhbiBNRkEgZmFjdG9yLCBleHBvcnRpbmcga2V5cywgZXRjLikuXG4gICAgICAgICAgICovXG4gICAgICAgICAgYWxsb3dlZF9tZmFfdHlwZXM/OiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVR5cGVcIl1bXTtcbiAgICAgICAgICB9IHwgbnVsbDtcbiAgICAgICAgICBjdXN0b21fY2hhaW5zPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDdXN0b21DaGFpbnNEYXRhXCJdIHwgbnVsbDtcbiAgICAgICAgICBkZWZhdWx0X2ludml0ZV9raW5kPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJbnZpdGVLaW5kXCJdIHwgbnVsbDtcbiAgICAgICAgICBlbWFpbF9wcmVmZXJlbmNlcz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRW1haWxQcmVmZXJlbmNlc1wiXSB8IG51bGw7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIHRoZSAnZW5hYmxlZCcgcHJvcGVydHkgKi9cbiAgICAgICAgICBlbmFibGVkPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICAgICAgZXh0X2RhdGE/OlxuICAgICAgICAgICAgfCAoe1xuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gUGVyIGFsaWVuIHVzZXIga2V5IGNvdW50IHRocmVzaG9sZCwgd2hpY2gsIG9uY2UgZXhjZWVkZWQsIGRpc2FsbG93cyBmdXJ0aGVyIGtleSBjcmVhdGlvbiBieSBhbGllbiB1c2Vycy5cbiAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAqIFRoaXMgc2V0dGluZyBpcyBjaGVja2VkIG9ubHkgd2hlbiBhbiBhbGllbiB1c2VyIHJlcXVlc3RzIHRvIGNyZWF0ZSBvciBpbXBvcnQgYSBuZXcga2V5LlxuICAgICAgICAgICAgICAgICAqIEluIG90aGVyIHdvcmRzLCBvcmcgYWRtaW5zIGNhbiBzdGlsbCBhc3NpZ24gdW5saW1pdGVkIG51bWJlciBvZiBrZXlzIHRvIHRoZWlyIGFsaWVuIHVzZXJzLlxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIGFsaWVuX2tleV9jb3VudF90aHJlc2hvbGQ/OiBudW1iZXIgfCBudWxsO1xuICAgICAgICAgICAgICB9ICYge1xuICAgICAgICAgICAgICAgIGNyZWF0ZWQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl0gfCBudWxsO1xuICAgICAgICAgICAgICAgIGxhc3RfbW9kaWZpZWQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl0gfCBudWxsO1xuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVmVyc2lvbiBvZiB0aGlzIG9iamVjdFxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIHZlcnNpb24/OiBudW1iZXI7XG4gICAgICAgICAgICAgIH0gJiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj4pXG4gICAgICAgICAgICB8IG51bGw7XG4gICAgICAgICAgaGlzdG9yaWNhbF9kYXRhX2NvbmZpZ3VyYXRpb24/OlxuICAgICAgICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkhpc3RvcmljYWxEYXRhQ29uZmlndXJhdGlvblwiXVxuICAgICAgICAgICAgfCBudWxsO1xuICAgICAgICAgIGlkcF9jb25maWd1cmF0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZHBDb25maWdcIl0gfCBudWxsO1xuICAgICAgICAgIGtleV9leHBvcnRfcmVxdWlyZW1lbnQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlY29uZEZhY3RvclJlcXVpcmVtZW50XCJdIHwgbnVsbDtcbiAgICAgICAgICBtZW1iZXJfbG9naW5fcmVxdWlyZW1lbnQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlY29uZEZhY3RvclJlcXVpcmVtZW50XCJdIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5ldyBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgb3JnIChtdXN0IGJlIGFscGhhbnVtZXJpYylcbiAgICAgICAgICAgKiBAZXhhbXBsZSBteV9vcmdfbmFtZVxuICAgICAgICAgICAqL1xuICAgICAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IG5vdGlmaWNhdGlvbiBlbmRwb2ludCBjb25maWd1cmF0aW9uc1xuICAgICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICAgKiAgIHtcbiAgICAgICAgICAgKiAgICAgXCJ1cmxcIjogXCJodHRwczovL2V4YW1wbGUuY29tL2VuZHBvaW50XCJcbiAgICAgICAgICAgKiAgIH1cbiAgICAgICAgICAgKiBdXG4gICAgICAgICAgICovXG4gICAgICAgICAgbm90aWZpY2F0aW9uX2VuZHBvaW50cz86XG4gICAgICAgICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTm90aWZpY2F0aW9uRW5kcG9pbnRDb25maWd1cmF0aW9uXCJdW11cbiAgICAgICAgICAgIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBvcmdhbml6YXRpb25cbiAgICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAgICovXG4gICAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgICAgcGFzc2tleV9jb25maWd1cmF0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQYXNza2V5Q29uZmlnXCJdIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5ldyB2YWx1ZSBvZiBvcmctd2lkZSBwb2xpY2llc1xuICAgICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICAgKiAgIHtcbiAgICAgICAgICAgKiAgICAgXCJNYXhEYWlseVVuc3Rha2VcIjogNVxuICAgICAgICAgICAqICAgfSxcbiAgICAgICAgICAgKiAgIHtcbiAgICAgICAgICAgKiAgICAgXCJPcmlnaW5BbGxvd2xpc3RcIjogW1xuICAgICAgICAgICAqICAgICAgIFwiaHR0cHM6Ly9leGFtcGxlLmNvbVwiXG4gICAgICAgICAgICogICAgIF1cbiAgICAgICAgICAgKiAgIH1cbiAgICAgICAgICAgKiBdXG4gICAgICAgICAgICovXG4gICAgICAgICAgcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W10gfCBudWxsO1xuICAgICAgICAgIHBvbGljeV9lbmdpbmVfY29uZmlndXJhdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUG9saWN5RW5naW5lQ29uZmlndXJhdGlvblwiXSB8IG51bGw7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIHJlcXVpcmVfc2NvcGVfY2VpbGluZyAqL1xuICAgICAgICAgIHJlcXVpcmVfc2NvcGVfY2VpbGluZz86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5ldyB2YWx1ZSBvZiB0aGUgVE9UUCBmYWlsdXJlIGxpbWl0XG4gICAgICAgICAgICovXG4gICAgICAgICAgdG90cF9mYWlsdXJlX2xpbWl0PzogbnVtYmVyIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgdXNlci1leHBvcnQgZGVsYXlcbiAgICAgICAgICAgKi9cbiAgICAgICAgICB1c2VyX2V4cG9ydF9kZWxheT86IG51bWJlciB8IG51bGw7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIHVzZXItZXhwb3J0IGRpc2FibGVkICovXG4gICAgICAgICAgdXNlcl9leHBvcnRfZGlzYWJsZWQ/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgdXNlci1leHBvcnQgd2luZG93XG4gICAgICAgICAgICovXG4gICAgICAgICAgdXNlcl9leHBvcnRfd2luZG93PzogbnVtYmVyIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXNwb25zZSB0byBhIHJlcXVlc3QgZm9yIHVwbG9hZGluZyBhIHdhc20gcG9saWN5ICovXG4gICAgVXBsb2FkV2FzbVBvbGljeVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIHNpZ25lZCBVUkwgZm9yIHVwbG9hZGluZyB0aGUgcmVxdWVzdGVkIHdhc20gcG9saWN5LiAqL1xuICAgICAgICAgIHNpZ25lZF91cmw6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEFuIGVuY3J5cHRlZCB1c2VyLWV4cG9ydCAqL1xuICAgIFVzZXJFeHBvcnRDb21wbGV0ZVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBleHBvcnRlZCBrZXkgbWF0ZXJpYWwsIGVuY3J5cHRlZCB3aXRoIEFFUy0yNTYtR0NNIHVuZGVyIGEga2V5XG4gICAgICAgICAgICogZGVyaXZlZCBmcm9tIHRoZSBwdWJsaWMga2V5IHN1cHBsaWVkIGluIHRoZSByZXF1ZXN0IHZpYSBIUEtFIChSRkM5MTgwKVxuICAgICAgICAgICAqIHdpdGggREhLRU0oUC0yNTYsIEhLREYtU0hBMjU2KSBhbmQgYmFzZTY0IGVuY29kZWQuXG4gICAgICAgICAgICovXG4gICAgICAgICAgZW5jcnlwdGVkX2tleV9tYXRlcmlhbDogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZXBoZW1lcmFsIHB1YmxpYyBrZXkgdXNlZCBmb3IgSFBLRSBrZXkgZGVyaXZhdGlvbiBhcyBiYXNlNjQtZW5jb2RlZFxuICAgICAgICAgICAqIHVuY29tcHJlc3NlZCBTRUMxIHNlcmlhbGl6YXRpb24uXG4gICAgICAgICAgICovXG4gICAgICAgICAgZXBoZW1lcmFsX3B1YmxpY19rZXk6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB1c2VyLWlkIHRvIHdoaWNoIHRoaXMga2V5IGJlbG9uZ3MuICovXG4gICAgICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlc3BvbnNlIHRvIGEgc3VjY2Vzc2Z1bCB1c2VyLWV4cG9ydCBpbml0IHJlcXVlc3QgKi9cbiAgICBVc2VyRXhwb3J0SW5pdFJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJFeHBvcnRSZXF1ZXN0XCJdICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUga2V5LWlkIGJlaW5nIHJlcXVlc3RlZC5cbiAgICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMHgzYzRkOTBDYzVBZjE2NDRDM0EzQjAxM0JhYTU0ODg5OTczODFEN0M4XG4gICAgICAgICAgICovXG4gICAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgVXNlckluT3JnSW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdXNlcidzIGVtYWlsIChvcHRpb25hbClcbiAgICAgICAgICAgKiBAZXhhbXBsZSBhbGljZUBleGFtcGxlLmNvbVxuICAgICAgICAgICAqL1xuICAgICAgICAgIGVtYWlsPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSB1c2VyXG4gICAgICAgICAgICogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGZcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBpZDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGUgdXNlciBoYXMgZXZlciBzdWNjZXNzZnVsbHkgbG9nZ2VkIGluICovXG4gICAgICAgICAgaW5pdGlhbGl6ZWQ/OiBib29sZWFuO1xuICAgICAgICAgIG1lbWJlcnNoaXA6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyUm9sZVwiXTtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHVzZXIgbmFtZS4gKi9cbiAgICAgICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICBzdGF0dXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyc2hpcFN0YXR1c1wiXTtcbiAgICAgICAgICB2ZXJpZmllZF9lbWFpbD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVmVyaWZpZWRFbWFpbFwiXSB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgVXNlckluZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgZW1haWxcbiAgICAgICAgICAgKiBAZXhhbXBsZSBhbGljZUBleGFtcGxlLmNvbVxuICAgICAgICAgICAqL1xuICAgICAgICAgIGVtYWlsPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBtdWx0aS1mYWN0b3IgYXV0aGVudGljYXRpb24gbWV0aG9kcyBjb25maWd1cmVkIGZvciB0aGlzIHVzZXIgKi9cbiAgICAgICAgICBtZmE6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ29uZmlndXJlZE1mYVwiXVtdO1xuICAgICAgICAgIG1mYV9wb2xpY3k/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVBvbGljeVwiXSB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG5hbWVcbiAgICAgICAgICAgKiBAZXhhbXBsZSBBbGljZVxuICAgICAgICAgICAqL1xuICAgICAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXByZWNhdGVkXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEFsbCBvcmdhbml6YXRpb25zIHRoZSB1c2VyIGJlbG9uZ3MgdG8uIERlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgJ29yZ3MnLlxuICAgICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICAgKiAgIFwiT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVwiXG4gICAgICAgICAgICogXVxuICAgICAgICAgICAqL1xuICAgICAgICAgIG9yZ19pZHM6IHN0cmluZ1tdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIG9yZ2FuaXphdGlvbnMgdGhlIHVzZXIgYmVsb25ncyB0bywgaW5jbHVkaW5nIHRoZSBtZW1iZXJzaGlwIHJvbGUgaW4gZWFjaC4gKi9cbiAgICAgICAgICBvcmdzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJJbk9yZ01lbWJlcnNoaXBcIl1bXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXJcbiAgICAgICAgICAgKiBAZXhhbXBsZSBVc2VyI2MzYjkzNzljLTRlOGMtNDIxNi1iZDBhLTY1YWNlNTNjZjk4ZlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICAgICAgICB2ZXJpZmllZF9lbWFpbD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVmVyaWZpZWRFbWFpbFwiXSB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVzcG9uc2UgdG8gdGhlIHVzZXIvb3JncyBlbmRwb2ludCAqL1xuICAgIFVzZXJPcmdzUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBsaXN0IG9mIG9yZ3MgdGhpcyB1c2VyIGlzIGEgbWVtYmVyIG9mICovXG4gICAgICAgICAgb3JnczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPcmdEYXRhXCJdW107XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIHBhcmFtZXRlcnM6IG5ldmVyO1xuICByZXF1ZXN0Qm9kaWVzOiBuZXZlcjtcbiAgaGVhZGVyczogbmV2ZXI7XG4gIHBhdGhJdGVtczogbmV2ZXI7XG59XG5cbmV4cG9ydCB0eXBlICRkZWZzID0gUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuXG5leHBvcnQgdHlwZSBleHRlcm5hbCA9IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcblxuZXhwb3J0IGludGVyZmFjZSBvcGVyYXRpb25zIHtcbiAgLyoqXG4gICAqIFVzZXIgSW5mb1xuICAgKiBAZGVzY3JpcHRpb24gVXNlciBJbmZvXG4gICAqXG4gICAqIFJldHJpZXZlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCB1c2VyLlxuICAgKlxuICAgKiBQUkVGRVIgYEdFVCAvdjAvb3Jncy97b3JnX2lkfS91c2VyL21lYFxuICAgKi9cbiAgYWJvdXRNZUxlZ2FjeToge1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVXNlckluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSldLUyBlbmRwb2ludCBmb3IgdGhlIGF0dGVzdGF0aW9uIGtleVxuICAgKiBAZGVzY3JpcHRpb24gSldLUyBlbmRwb2ludCBmb3IgdGhlIGF0dGVzdGF0aW9uIGtleVxuICAgKlxuICAgKiBSZXR1cm5zIHRoZSBwdWJsaWMga2V5IHVzZWQgdG8gc2lnbiBLZXkgaW5mbyBhdHRlc3RhdGlvbnMuXG4gICAqL1xuICBhdHRlc3RhdGlvbkp3a1NldDoge1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiSndrU2V0UmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBhY2Nlc3NpYmxlIG9yZ2FuaXphdGlvbnMuXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IGFjY2Vzc2libGUgb3JnYW5pemF0aW9ucy5cbiAgICpcbiAgICogVW5hdXRoZW50aWNhdGVkIGVuZHBvaW50IGZvciByZXRyaWV2aW5nIGFsbCBvcmdhbml6YXRpb25zIGFjY2Vzc2libGUgdG8gYSB1c2VyLlxuICAgKiBUaGlzIGluZm9ybWF0aW9uIGlzIGVtYWlsZWQgdG8gdGhlIHByb3ZpZGVkIGVtYWlsIGFkZHJlc3MuXG4gICAqL1xuICBlbWFpbF9teV9vcmdzOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZW1haWwgb2YgdGhlIHVzZXJcbiAgICAgICAgICogQGV4YW1wbGUgYWxpY2VAZXhhbXBsZS5jb21cbiAgICAgICAgICovXG4gICAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogKElOVEVSTkFMKSBTZW50cnkgQVBJIFByb3h5XG4gICAqIEBkZXNjcmlwdGlvbiAoSU5URVJOQUwpIFNlbnRyeSBBUEkgUHJveHlcbiAgICovXG4gIHNlbnRyeUFwaUNhbGxQdWJsaWM6IHtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcInRleHQvcGxhaW5cIjogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEpXS1MgZW5kcG9pbnQgZm9yIE1NSVxuICAgKiBAZGVzY3JpcHRpb24gSldLUyBlbmRwb2ludCBmb3IgTU1JXG4gICAqXG4gICAqIFJldHVybnMgdGhlIHB1YmxpYyBrZXkgdXNlZCB0byBzaWduIEpTT04gV2ViIFRva2VucyBmb3IgTU1JLlxuICAgKi9cbiAgbW1pSndrU2V0OiB7XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJKd2tTZXRSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBNTUkgSlNPTi1SUEMgZW5kcG9pbnRcbiAgICogQGRlc2NyaXB0aW9uIE1NSSBKU09OLVJQQyBlbmRwb2ludFxuICAgKlxuICAgKiBIYW5kbGVyIGZvciBhbGwgW01NSSBKU09OLVJQQ10oaHR0cHM6Ly9kb2NzLm1ldGFtYXNrLWluc3RpdHV0aW9uYWwuaW8vY3VzdG9kaWFuLWludGVncmF0aW9uL2ludGVncmF0aW9uLWRvY3MvYXBpL21ldGhvZHMpXG4gICAqIHJlcXVlc3RzLlxuICAgKi9cbiAgbW1pOiB7XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkpycGNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBUb2tlbiByZWZyZXNoIGVuZHBvaW50LCBjb21wbGlhbnQgd2l0aCBPQXV0aC5cbiAgICogQGRlc2NyaXB0aW9uIFRva2VuIHJlZnJlc2ggZW5kcG9pbnQsIGNvbXBsaWFudCB3aXRoIE9BdXRoLlxuICAgKlxuICAgKiBUaGUgYm9keSBjb250ZW50IHR5cGUgY2FuIGJlIGVpdGhlciAnYXBwbGljYXRpb24vanNvbicgb3IgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcuXG4gICAqL1xuICBvYXV0aDJUb2tlblJlZnJlc2g6IHtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb2tlblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJUb2tlblJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCBPcmdcbiAgICogQGRlc2NyaXB0aW9uIEdldCBPcmdcbiAgICpcbiAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IGFuIG9yZ2FuaXphdGlvbi5cbiAgICovXG4gIGdldE9yZzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIk9yZ0luZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogVXBkYXRlIE9yZ1xuICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlIE9yZ1xuICAgKlxuICAgKiBVcGRhdGUgb3JnYW5pemF0aW9uIGF0dHJpYnV0ZXMgKGVuYWJsZWQgZmxhZywgbmFtZSwgYW5kIHBvbGljaWVzKS5cbiAgICovXG4gIHVwZGF0ZU9yZzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVcGRhdGVPcmdSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVXBkYXRlT3JnUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUXVlcnkgdGhlIGF1ZGl0IGxvZy5cbiAgICogQGRlc2NyaXB0aW9uIFF1ZXJ5IHRoZSBhdWRpdCBsb2cuXG4gICAqL1xuICBxdWVyeUF1ZGl0TG9nOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgICAqIGRhdGEgaW4gdGhlIHJlc3VsdCBzZXQuIFRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBtb3JlIGRhdGEgaXMgbGVmdCBpbiB0aGUgcmVzdWx0IHNldCxcbiAgICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc2l6ZVwiPzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgICAqIHRoZSBleGFjdCB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc3RhcnRcIj86IHN0cmluZyB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF1ZGl0TG9nUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZEF1ZGl0TG9nUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQXNzb2NpYXRlIGFuIE9JREMgaWRlbnRpdHkgd2l0aCBhbiBhcmJpdHJhcnkgdXNlciBpbiBvcmcgPHNlc3Npb24ub3JnPi5cbiAgICogQGRlc2NyaXB0aW9uIEFzc29jaWF0ZSBhbiBPSURDIGlkZW50aXR5IHdpdGggYW4gYXJiaXRyYXJ5IHVzZXIgaW4gb3JnIDxzZXNzaW9uLm9yZz4uXG4gICAqL1xuICBhdXRoTWlncmF0aW9uSWRlbnRpdHlBZGQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWlncmF0ZUlkZW50aXR5UmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBEaXNzb2NpYXRlIGFuIE9JREMgaWRlbnRpdHkgZnJvbSBhbiBhcmJpdHJhcnkgdXNlciBpbiBvcmcgPHNlc3Npb24ub3JnPi5cbiAgICogQGRlc2NyaXB0aW9uIERpc3NvY2lhdGUgYW4gT0lEQyBpZGVudGl0eSBmcm9tIGFuIGFyYml0cmFyeSB1c2VyIGluIG9yZyA8c2Vzc2lvbi5vcmc+LlxuICAgKi9cbiAgYXV0aE1pZ3JhdGlvbklkZW50aXR5UmVtb3ZlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1pZ3JhdGVJZGVudGl0eVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogVXBkYXRlIGV4aXN0aW5nIHVzZXJzJyBwcm9maWxlcy4gQ3VycmVudGx5IHN1cHBvcnRzIG9ubHkgKHJlKXNldHRpbmcgZW1haWxzLlxuICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlIGV4aXN0aW5nIHVzZXJzJyBwcm9maWxlcy4gQ3VycmVudGx5IHN1cHBvcnRzIG9ubHkgKHJlKXNldHRpbmcgZW1haWxzLlxuICAgKi9cbiAgYXV0aE1pZ3JhdGlvblVzZXJVcGRhdGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWlncmF0ZVVwZGF0ZVVzZXJzUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIGEgc2VyaWFsaXplZCBBdmFsYW5jaGUgQy9YL1AtQ2hhaW4gTWVzc2FnZVxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBhIHNlcmlhbGl6ZWQgQXZhbGFuY2hlIEMvWC9QLUNoYWluIE1lc3NhZ2VcbiAgICpcbiAgICogU2lnbnMgYW4gQXZhbGFuY2hlIG1lc3NhZ2Ugd2l0aCBhIGdpdmVuIFNlY3BFdGggKEMtQ2hhaW4gbWVzc2FnZXMpIG9yXG4gICAqIFNlY3BBdmEgKFgtIGFuZCBQLUNoYWluIG1lc3NhZ2VzKSBrZXkuIEN1cnJlbnRseSBzaWduaW5nIEMtQ2hhaW4gbWVzc2FnZXNcbiAgICogd2l0aCBTZWNwRXRoIGtleSBtdXN0IGFsc28gYmUgZXhwbGljaXRseSBhbGxvd2VkIHZpYSBgQWxsb3dSYXdCbG9iU2lnbmluZ2BcbiAgICogcG9saWN5LlxuICAgKlxuICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICovXG4gIGF2YVNlcmlhbGl6ZWRUeFNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gQXZhbGFuY2hlIGNoYWluXG4gICAgICAgICAqIEBleGFtcGxlIFBcbiAgICAgICAgICovXG4gICAgICAgIGF2YV9jaGFpbjogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEF2YWxhbmNoZSBhZGRyZXNzIGluIGJlY2gzMiBvciBFVEggZm9ybWF0XG4gICAgICAgICAqIEBleGFtcGxlIDB4QjMxZjY2QUEzQzFlNzg1MzYzRjA4NzVBMUI3NEUyN2I4NUZENjZjN1xuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXZhU2VyaWFsaXplZFR4U2lnblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gSlNPTi1lbmNvZGVkIEF2YWxhbmNoZSBYLSBvciBQLUNoYWluIE1lc3NhZ2VcbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gSlNPTi1lbmNvZGVkIEF2YWxhbmNoZSBYLSBvciBQLUNoYWluIE1lc3NhZ2VcbiAgICpcbiAgICogU2lnbnMgYW4gQXZhbGFuY2hlIG1lc3NhZ2Ugd2l0aCBhIGdpdmVuIFNlY3BBdmEga2V5LlxuICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICovXG4gIGF2YVNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gQXZhbGFuY2hlIGJlY2gzMiBhZGRyZXNzIGZvcm1hdCB3aXRob3V0IHRoZSBjaGFpbiBwcmVmaXhcbiAgICAgICAgICogQGV4YW1wbGUgYXZheDFhbTR3NmhmcnZtaDNha2R1emtqdGhydGd0cWFmYWxjZTZhbjhjclxuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXZhU2lnblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gQmFieWxvbiBDb3ZlbmFudCBDb21taXR0ZWUgUmVxdWVzdFxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBCYWJ5bG9uIENvdmVuYW50IENvbW1pdHRlZSBSZXF1ZXN0XG4gICAqXG4gICAqIFNpZ25zIHRyYW5zYWN0aW9ucyByZWxldmFudCB0byBhIEJhYnlsb24gY292ZW5hbnQgY29tbWl0dGVlIHNpZ25lcixcbiAgICogaS5lLiwgU2Nobm9yciBhbmQgYWRhcHRvciBzaWduYXR1cmVzIGZvciB0aGUgdW5ib25kaW5nLCBzbGFzaGluZywgYW5kXG4gICAqIHNsYXNoLXVuYm9uZGluZyBvdXRwdXRzIG9mIGEgQmFieWxvbiBzdGFraW5nIHRyYW5zYWN0aW9uLlxuICAgKi9cbiAgYmFieWxvbkNvdlNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gaGV4LWVuY29kZWQgcHVibGljIGtleVxuICAgICAgICAgKiBAZXhhbXBsZSAweDAzZTM4MTA2ZGQ3NjY1NmJjNjhkMDI4OThlZGUxYTkxMWRmOGM3OTNlNDZhYzRlYjM3ZDI2YzI2NmFhZTVkMmE1YVxuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFieWxvbkNvdlNpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQmFieWxvbkNvdlNpZ25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIEVPVFMgbm9uY2VzXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgRU9UUyBub25jZXNcbiAgICpcbiAgICogR2VuZXJhdGVzIGEgc2V0IG9mIEJhYnlsb24gRU9UUyBub25jZXMgZm9yIGEgc3BlY2lmaWVkIGNoYWluLWlkLCBzdGFydGluZyBhdCBhXG4gICAqIHNwZWNpZmllZCBibG9jayBoZWlnaHQuXG4gICAqL1xuICBjcmVhdGVFb3RzTm9uY2VzOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIHB1YmxpYyBrZXkgb2YgdGhlIEVPVFMga2V5XG4gICAgICAgICAqIEBleGFtcGxlIDB4NDU3ZjBmMjRjZmIwNmMzYzM1ODc0YmJkMWY1OWI1NzE4MGE1YTlkN2UxZjY5MjkyODA4MzljODMwZjVjMTQ3ZlxuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRW90c0NyZWF0ZU5vbmNlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVvdHNDcmVhdGVOb25jZVJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBFT1RTIHNpZ25hdHVyZVxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIGFuIEVPVFMgc2lnbmF0dXJlXG4gICAqXG4gICAqIEdlbmVyYXRlcyBhbiBFT1RTIHNpZ25hdHVyZSBmb3IgdGhlIHNwZWNpZmllZCBjaGFpbi1pZCwgYmxvY2sgaGVpZ2h0LCBhbmQgbWVzc2FnZS5cbiAgICovXG4gIGVvdHNTaWduOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIHB1YmxpYyBrZXkgb2YgdGhlIEVPVFMga2V5XG4gICAgICAgICAqIEBleGFtcGxlIDB4NDU3ZjBmMjRjZmIwNmMzYzM1ODc0YmJkMWY1OWI1NzE4MGE1YTlkN2UxZjY5MjkyODA4MzljODMwZjVjMTQ3ZlxuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRW90c1NpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU2lnblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIEJhYnlsb24gU3Rha2luZyBSZWdpc3RyYXRpb25cbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gQmFieWxvbiBTdGFraW5nIFJlZ2lzdHJhdGlvblxuICAgKlxuICAgKiBDcmVhdGVzIGFuZCBzaWducyB0aGUgZGF0YSBuZWVkZWQgdG8gcmVnaXN0ZXIgYSBQaGFzZS0yIG9yIFBoYXNlLTNcbiAgICogQmFieWxvbiBzdGFrZS4gVGhpcyBpbmNsdWRlcyB0aGUgZGVwb3NpdCBhbmQgdW5ib25kaW5nIHRyYW5zYWN0aW9ucyxcbiAgICogdHdvIHNsYXNoaW5nIHRyYW5zYWN0aW9ucywgdGhlIHNsYXNoaW5nIHNpZ25hdHVyZXMsIGFuZCB0aGUgcHJvb2Ygb2ZcbiAgICogcG9zc2Vzc2lvbi5cbiAgICpcbiAgICogTm90ZSB0aGF0IGl0IGlzIGFsc28gcG9zc2libGUgdG8gZ2VuZXJhdGUgdGhpcyByZWdpc3RyYXRpb24gZGF0YSBieVxuICAgKiBtYWtpbmcgZm91ciBjYWxscyB0byB0aGUgQmFieWxvbiBzdGFraW5nIEFQSSwgcGx1cyBvbmUgY2FsbCB0byB0aGVcbiAgICogUFNCVCBzaWduaW5nIEFQSSB0byBnZW5lcmF0ZSB0aGUgQklQLTMyMiBwcm9vZiBvZiBwb3NzZXNzaW9uLiBUaGVcbiAgICogcmVnaXN0cmF0aW9uIEFQSSBnZW5lcmF0ZXMgdGhlIHNhbWUgZGF0YSBidXQgaXMgZWFzaWVyIHRvIHVzZS5cbiAgICpcbiAgICogTm90ZSB0aGF0IHRoaXMgYWN0aW9uIGNhbiBvbmx5IGJlIGNhbGxlZCB3aXRoIGEgVGFwcm9vdCBrZXkuIElmIHlvdXJcbiAgICogZGVwb3NpdCB0cmFuc2FjdGlvbiBzcGVuZHMgVVRYT3MgdGhhdCBhcmUgY29udHJvbGxlZCBieSBvdGhlciBrZXlzLFxuICAgKiB5b3UgY2FuIHN1Ym1pdCB0aGUgJ2RlcG9zaXQnIFBTQlQgdG8gdGhlIFBTQlQgc2lnbmluZyBBUEkgb25lIG9yIG1vcmVcbiAgICogdGltZXMgdG8gZ2VuZXJhdGUgdGhlIHJlcXVpcmVkIHNpZ25hdHVyZXMuXG4gICAqXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBjb25zdWx0IHRoZVxuICAgKiBbQmFieWxvbiBkb2N1bWVudGF0aW9uXShodHRwczovL2dpdGh1Yi5jb20vYmFieWxvbmxhYnMtaW8vYmFieWxvbi9ibG9iL3JlbGVhc2UvdjEueC9kb2NzL3JlZ2lzdGVyLWJpdGNvaW4tc3Rha2UubWQpLlxuICAgKlxuICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICovXG4gIGJhYnlsb25SZWdpc3RyYXRpb246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gYmVjaDMyIGVuY29kaW5nIG9mIHRoZSBwdWJsaWMga2V5XG4gICAgICAgICAqIEBleGFtcGxlIHRiMXBlNGZneW44N3B3a3UyeGRwdGMyZHRhZXF6eXg4d3g4OWNxYTZ5bnR1OHRkNDlmbHB0NXdxNWs2aGF1XG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCYWJ5bG9uUmVnaXN0cmF0aW9uUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkJhYnlsb25SZWdpc3RyYXRpb25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogU2lnbiBCYWJ5bG9uIFN0YWtpbmcgVHJhbnNhY3Rpb25cbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gQmFieWxvbiBTdGFraW5nIFRyYW5zYWN0aW9uXG4gICAqXG4gICAqIENyZWF0ZXMgYW5kIHNpZ25zIHRyYW5zYWN0aW9ucyByZWxhdGVkIHRvIEJhYnlsb24gc3Rha2luZyAoaS5lLixcbiAgICogZGVwb3NpdCwgZWFybHkgdW5ib25kLCB3aXRoZHJhd2FsKS4gVGhlIHJldHVybiB2YWx1ZSBpcyBhIFByZS1TaWduZWRcbiAgICogQml0Y29pbiBUcmFuc2FjdGlvbiAoUFNCVCksIGFzIGRlZmluZWQgaW4gQklQLTE3NCwgd2hpY2ggbWF0Y2hlcyB0aGVcbiAgICogZm9ybWF0IHVzZWQgaW4gbW9zdCBCYWJ5bG9uIHRvb2xpbmcuXG4gICAqXG4gICAqIFRoZSAnZGVwb3NpdCcgYWN0aW9uIGNhbiBiZSB1c2VkIHdpdGggZWl0aGVyIFNlZ3dpdCAoaS5lLiwgU2VjcEJ0Yy9TZWNwQnRjVGVzdClcbiAgICogb3IgVGFwcm9vdCAoaS5lLiwgVGFwcm9vdEJ0Yy9UYXByb290QnRjVGVzdCkga2V5cy4gVGhlIHJlbWFpbmluZyBhY3Rpb25zIGNhbiBiZVxuICAgKiB1c2VkIG9ubHkgd2l0aCBUYXByb290IGtleXMuXG4gICAqXG4gICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgKi9cbiAgYmFieWxvblN0YWtpbmc6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gYmVjaDMyIGVuY29kaW5nIG9mIHRoZSBwdWJsaWMga2V5XG4gICAgICAgICAqIEBleGFtcGxlIHRiMXBlNGZneW44N3B3a3UyeGRwdGMyZHRhZXF6eXg4d3g4OWNxYTZ5bnR1OHRkNDlmbHB0NXdxNWs2aGF1XG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCYWJ5bG9uU3Rha2luZ1JlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJCYWJ5bG9uU3Rha2luZ1Jlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIGEgQml0Y29pbiBtZXNzYWdlLlxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBhIEJpdGNvaW4gbWVzc2FnZS5cbiAgICpcbiAgICogU2lnbnMgYSBtZXNzYWdlIHVzaW5nIEJJUDEzNyBtZXNzYWdlIHNpZ25pbmcgd2l0aCBhIGdpdmVuIFNlY3AyNTZrMSBrZXkuXG4gICAqL1xuICBidGNNZXNzYWdlU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBBZGRyZXNzIG9mIGEgU2Vnd2l0IG9yIExlZ2FjeSBiaXRjb2luIGtleVxuICAgICAgICAgKiBAZXhhbXBsZSBiYzFxM3IzNXU0dGg3OGgwNmQ2NG13bXAzdnB1OHFtenlhMDVwcThmd2xcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJ0Y01lc3NhZ2VTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkJ0Y01lc3NhZ2VTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gYSBQYXJ0aWFsbHkgU2lnbmVkIEJpdGNvaW4gVHJhbnNhY3Rpb24gKFBTQlQpXG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIGEgUGFydGlhbGx5IFNpZ25lZCBCaXRjb2luIFRyYW5zYWN0aW9uIChQU0JUKVxuICAgKlxuICAgKiBTaWducyBhbGwgaW5wdXRzIG9mIHRoZSBzdXBwbGllZCBQU0JUIHYwIChCSVAtMTc0KSB0aGF0IHBlcnRhaW4gdG8gdGhlXG4gICAqICdwdWJrZXknIHNwZWNpZmllZCBpbiB0aGUgcmVxdWVzdCwgd2hpY2ggY2FuIGJlIGVpdGhlciBhIFRhcHJvb3Qgb3IgYVxuICAgKiBTZWd3aXQga2V5LiBGb3IgU2Vnd2l0IGtleXMsIEN1YmVTaWduZXItc3BlY2lmaWMgZGV0ZXJtaW5pc3RpYyB0d2Vha2luZ1xuICAgKiBjYW4gYmUgYXBwbGllZCB0byAncHVia2V5JyBiZWZvcmUgc2lnbmluZywgb24gYSBwZXItaW5wdXQgYmFzaXMuIChTZWUgdGhlXG4gICAqIEN1YmVTaWduZXIgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBTZWd3aXQgdHdlYWtpbmcuKVxuICAgKlxuICAgKiBXaGVuIGNhbGxpbmcgd2l0aCBhIHNlZ3dpdCBrZXkgdGhlIHJlcXVpcmVkIHNjb3BlIGlzICdzaWduOmJ0Yzpwc2J0OnNlZ3dpdCcuXG4gICAqIEZvciBhIHRhcHJvb3Qga2V5LCB0aGUgc2NvcGUgaXMgJ3NpZ246YnRjOnBzYnQ6dGFwcm9vdCcuIEVpdGhlciB0eXBlIG9mIGtleVxuICAgKiBjYW4gYmUgdXNlZCB3aXRoIHRoZSAnc2lnbjpidGM6cHNidCcgc2NvcGUuXG4gICAqXG4gICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgKi9cbiAgcHNidFNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gYmVjaDMyKG0pLWVuY29kZWQgc2Vnd2l0IG9yIHRhcHJvb3QgYWRkcmVzc1xuICAgICAgICAgKiBAZXhhbXBsZSBiYzFwMndzbGRlejVtdWQyeWFtMjlxMjJ3Z2ZoOTQzOXNwZ2R1dmN0ODNrM3BtNTBmY3hhNWRwczU5aDR6NVxuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHNidFNpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUHNidFNpZ25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogU2lnbiBCaXRjb2luIFNlZ3dpdCBUcmFuc2FjdGlvblxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBCaXRjb2luIFNlZ3dpdCBUcmFuc2FjdGlvblxuICAgKlxuICAgKiBTaWducyBhIEJpdGNvaW4gU2Vnd2l0IHRyYW5zYWN0aW9uIHdpdGggYSBnaXZlbiBrZXkuXG4gICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgKi9cbiAgYnRjU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBiZWNoMzItZW5jb2RlZCBzZWd3aXQgYWRkcmVzc1xuICAgICAgICAgKiBAZXhhbXBsZSBiYzFxNXA1cWthZTc3bHk4MGtyNHB5Znl0ZHFtN3JmMDhkZGhkZWpsOWdcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJ0Y1NpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU2lnblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIEJpdGNvaW4gVGFwcm9vdCBUcmFuc2FjdGlvblxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBCaXRjb2luIFRhcHJvb3QgVHJhbnNhY3Rpb25cbiAgICpcbiAgICogU2lnbnMgYSBCaXRjb2luIFRhcHJvb3QgdHJhbnNhY3Rpb24gd2l0aCBhIGdpdmVuIGtleS5cbiAgICogVGhpcyBpcyBhIHByZS1yZWxlYXNlIGZlYXR1cmUuXG4gICAqL1xuICBidGNUYXByb290U2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBiZWNoMzJtLWVuY29kZWQgdGFwcm9vdCBhZGRyZXNzXG4gICAgICAgICAqIEBleGFtcGxlIGJjMXAyd3NsZGV6NW11ZDJ5YW0yOXEyMndnZmg5NDM5c3BnZHV2Y3Q4M2szcG01MGZjeGE1ZHBzNTloNHo1XG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUYXByb290U2lnblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3QgQ29udGFjdHNcbiAgICogQGRlc2NyaXB0aW9uIExpc3QgQ29udGFjdHNcbiAgICpcbiAgICogTGlzdCBhbGwgY29udGFjdHMgaW4gdGhlIG9yZy5cbiAgICogQW55IG9yZyBtZW1iZXIgaXMgYWxsb3dlZCB0byBsaXN0IGFsbCBjb250YWN0cyBpbiB0aGUgb3JnLlxuICAgKlxuICAgKiAjIyBTZWFyY2ggQ29uZGl0aW9uXG4gICAqIFRoZSBzZWFyY2ggY29uZGl0aW9uIGlzIG9wdGlvbmFsLlxuICAgKlxuICAgKiAtIElmIHRoZSBzZWFyY2ggY29uZGl0aW9uIHN0YXJ0cyB3aXRoIFwibGFiZWw6Li4uXCIsIHRoaXMgbGlzdCB3aWxsIG9ubHkgaG9sZCBjb250YWN0cyB3aXRoXG4gICAqIHRoZSBsYWJlbCBwcm92aWRlZCBhZnRlciB0aGUgXCI6XCIuIEZvciBleGFtcGxlLCBcImxhYmVsOmN1YmlzdDplcmMyMF90b2tlblwiIHdvdWxkIHJldHVybiBjb250YWN0cyB0aGF0XG4gICAqIGhvbGQgdGhlIGxhYmVsIFwiY3ViaXN0OmVyYzIwX3Rva2VuXCIuXG4gICAqXG4gICAqIC0gT3RoZXJ3aXNlLCB0aGUgcmVzdWx0IHdpbGwgY29udGFpbiBvbmx5IHRoZSBjb250YWN0cyB3aG8gaGF2ZSBhbiBhZGRyZXNzIHN0YXJ0aW5nIHdpdGgsIG9yXG4gICAqIGVxdWFsaW5nLCB0aGUgZ2l2ZW4gc2VhcmNoIHN0cmluZy4gRm9yIGV4YW1wbGUsIFwiMHhlZVwiIHdvdWxkIHJldHVybiBhbGwgY29udGFjdHMgaG9sZGluZyBhblxuICAgKiBhZGRyZXNzIHN0YXJ0aW5nIHdpdGggXCIweGVlXCIuIFRoZSBzZWFyY2ggaXMgY2FzZS1pbnNlbnNpdGl2ZS5cbiAgICpcbiAgICogSWYgYSBzZWFyY2ggdGVybSBpcyBkZWZpbmVkLCB3ZSBkbyBub3QgZ3VhcmFudGVlXG4gICAqIHRoZSBudW1iZXIgb2YgcmVzdWx0cyBpbiBhIHBhZ2UuIFRoZSBiZWhhdmlvciBvZiB0aGlzIHBhcmFtZXRlciBtYXkgY2hhbmdlXG4gICAqIGluIHRoZSBmdXR1cmUgKGZvciBleGFtcGxlLCBtYWtpbmcgcmVzdWx0cyBtb3JlIHN0cmljdGx5IHBhZ2luYXRlZCBvclxuICAgKiBwZXJmb3JtaW5nIGEgZnV6enkgc2VhcmNoIHJhdGhlciB0aGFuIGEgcHJlZml4IHNlYXJjaCkuXG4gICAqL1xuICBsaXN0Q29udGFjdHM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBFaXRoZXIgJ2xhYmVsOi4uLicsIHdoaWNoIGxpc3RzIGNvbnRhY3RzIHdpdGggdGhlIGxhYmVsIHByb3ZpZGVkIGFmdGVyIHRoZSAnOicuIE9yLCBhbiBlbnRpcmUgYWRkcmVzcywgb3IgcHJlZml4IG9mIGFuIGFkZHJlc3MsIHRoYXQgcmV0dXJuZWQgY29udGFjdHMgbXVzdCBoYXZlLiBXaGVuIHNlYXJjaGluZyBieSBhZGRyZXNzLCBpdCBtdXN0IGJlIGF0IGxlYXN0IDMgY2hhcmFjdGVycy4gKi9cbiAgICAgICAgc2VhcmNoPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRMaXN0Q29udGFjdHNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDcmVhdGUgQ29udGFjdFxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIENvbnRhY3RcbiAgICpcbiAgICogQ3JlYXRlcyBhIG5ldyBjb250YWN0IGluIHRoZSBvcmdhbml6YXRpb24td2lkZSBhZGRyZXNzIGJvb2suIFRoZVxuICAgKiB1c2VyIG1ha2luZyB0aGUgcmVxdWVzdCBpcyB0aGUgb3duZXIgb2YgdGhlIGNvbnRhY3QsIGdpdmluZyB0aGVtIGVkaXQgYWNjZXNzXG4gICAqIHRvIHRoZSBjb250YWN0IGFsb25nIHdpdGggdGhlIG9yZyBvd25lcnMuXG4gICAqL1xuICBjcmVhdGVDb250YWN0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNyZWF0ZUNvbnRhY3RSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQ29udGFjdEluZm9SZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMb29rdXAgQ29udGFjdHMgYnkgQWRkcmVzc1xuICAgKiBAZGVzY3JpcHRpb24gTG9va3VwIENvbnRhY3RzIGJ5IEFkZHJlc3NcbiAgICpcbiAgICogUmV0dXJucyBhbGwgY29udGFjdHMgaW4gdGhlIG9yZyB0aGF0IGhhdmUgdGhlIGdpdmVuIGFkZHJlc3MuXG4gICAqXG4gICAqIFdoZW4gcXVlcnlpbmcgd2l0aCBhbiBFVk0gYWRkcmVzcyB3aXRob3V0IGEgY2hhaW4sIHRoaXMgZW5kcG9pbnQgcmV0dXJuc1xuICAgKiBjb250YWN0cyB3aXRoIHRoYXQgYWRkcmVzcyBvbiAqYW55KiBjaGFpbiwgaW5jbHVkaW5nIHRob3NlIHdpdGhvdXQgYSBjaGFpblxuICAgKiBkZWZpbmVkLlxuICAgKi9cbiAgbG9va3VwQ29udGFjdHNCeUFkZHJlc3M6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ29udGFjdEFkZHJlc3NEYXRhXCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGFnaW5hdGVkTGlzdENvbnRhY3RzUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IENvbnRhY3RcbiAgICogQGRlc2NyaXB0aW9uIEdldCBDb250YWN0XG4gICAqXG4gICAqIFJldHVybnMgdGhlIHByb3BlcnRpZXMgb2YgYSBDb250YWN0LlxuICAgKi9cbiAgZ2V0Q29udGFjdDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBDb250YWN0XG4gICAgICAgICAqIEBleGFtcGxlIENvbnRhY3QjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBjb250YWN0X2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJDb250YWN0SW5mb1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIERlbGV0ZSBDb250YWN0XG4gICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgQ29udGFjdFxuICAgKlxuICAgKiBEZWxldGUgYSBjb250YWN0LCBzcGVjaWZpZWQgYnkgaXRzIElELlxuICAgKlxuICAgKiBPbmx5IHRoZSBjb250YWN0IG93bmVyIGFuZCBvcmcgb3duZXJzIGFyZSBhbGxvd2VkIHRvIGRlbGV0ZSBjb250YWN0cy5cbiAgICogQWRkaXRpb25hbGx5LCB0aGUgY29udGFjdCdzIGVkaXQgcG9saWN5IChpZiBzZXQpIG11c3QgcGVybWl0IHRoZSBkZWxldGlvbi5cbiAgICovXG4gIGRlbGV0ZUNvbnRhY3Q6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgQ29udGFjdFxuICAgICAgICAgKiBAZXhhbXBsZSBDb250YWN0IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgY29udGFjdF9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVtcHR5XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFVwZGF0ZSBDb250YWN0XG4gICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgQ29udGFjdFxuICAgKlxuICAgKiBVcGRhdGVzIGFuIGV4aXN0aW5nIGNvbnRhY3QgaW4gdGhlIG9yZ2FuaXphdGlvbi13aWRlIGFkZHJlc3MgYm9vay4gT25seVxuICAgKiB0aGUgY29udGFjdCBvd25lciBvciBhbiBvcmcgb3duZXIgY2FuIHVwZGF0ZSBjb250YWN0cy5cbiAgICpcbiAgICogKlVwZGF0ZXMgd2lsbCBvdmVyd3JpdGUgdGhlIGV4aXN0aW5nIHZhbHVlIG9mIHRoZSBmaWVsZC4qXG4gICAqL1xuICB1cGRhdGVDb250YWN0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIENvbnRhY3RcbiAgICAgICAgICogQGV4YW1wbGUgQ29udGFjdCMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGNvbnRhY3RfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVcGRhdGVDb250YWN0UmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkNvbnRhY3RJbmZvUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IGN1cnJlbnQgY291bnRzIG9mIHVzZXJzIGFuZCBrZXlzIHdpdGhpbiBhbiBvcmcuXG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgY3VycmVudCBjb3VudHMgb2YgdXNlcnMgYW5kIGtleXMgd2l0aGluIGFuIG9yZy5cbiAgICovXG4gIGNvdW50czoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkNvbXB1dGVDb3VudHNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBEZXJpdmUgS2V5IEZyb20gTG9uZy1MaXZlZCBNbmVtb25pY1xuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBAZGVzY3JpcHRpb24gRGVyaXZlIEtleSBGcm9tIExvbmctTGl2ZWQgTW5lbW9uaWNcbiAgICpcbiAgICogRGVyaXZlcyBhIGtleSBvZiBhIHNwZWNpZmllZCB0eXBlIHVzaW5nIGEgc3VwcGxpZWQgZGVyaXZhdGlvbiBwYXRoIGFuZCBhblxuICAgKiBleGlzdGluZyBsb25nLWxpdmVkIG1uZW1vbmljLlxuICAgKi9cbiAgZGVyaXZlS2V5TGVnYWN5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkRlcml2ZUtleVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJDcmVhdGVLZXlSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBEZXJpdmUgS2V5IEZyb20gTmV3IE9yIEV4aXN0aW5nIExvbmctTGl2ZWQgTW5lbW9uaWNcbiAgICogQGRlc2NyaXB0aW9uIERlcml2ZSBLZXkgRnJvbSBOZXcgT3IgRXhpc3RpbmcgTG9uZy1MaXZlZCBNbmVtb25pY1xuICAgKlxuICAgKiBVc2VzIGVpdGhlciBhIG5ldyBvciBleGlzdGluZyBsb25nLWxpdmVkIG1uZW1vbmljIHRvIGRlcml2ZSBrZXlzIG9mXG4gICAqIG9uZSBvciBtb3JlIHNwZWNpZmllZCB0eXBlcyB2aWEgc3BlY2lmaWVkIGRlcml2YXRpb24gcGF0aHMuXG4gICAqL1xuICBkZXJpdmVLZXk6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRGVyaXZlS2V5c1JlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJDcmVhdGVLZXlSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDb21wdXRlIERpZmZpZSBIZWxsbWFuIHNoYXJlZCBzZWNyZXRcbiAgICogQGRlc2NyaXB0aW9uIENvbXB1dGUgRGlmZmllIEhlbGxtYW4gc2hhcmVkIHNlY3JldFxuICAgKlxuICAgKiBGb3IgYSBzZXQgb2YgZWxsaXB0aWMgY3VydmUgcG9pbnRzIChQXzEsIC4uLiwgUF9pKSwgY29tcHV0ZXMgdGhlIERpZmZpZSBIZWxsbWFuXG4gICAqIHNoYXJlZCBzZWNyZXQgKFFfMSwgLi4uLCBRaSkgPSAoc2sgKiBQXzEsIC4uLiBzayAqIFBfaSksIGZvciBzayB0aGUgc2VjcmV0IGtleS5cbiAgICogUG9pbnRzIGFyZSBzcGVjaWZpZWQgaW4gYSBjdXJ2ZS1kZXBlbmRlbnQgZm9ybWF0LiBTZWUgQ3ViZVNpZ25lciBkb2N1bWVudGF0aW9uXG4gICAqIGZvciBtb3JlIGRldGFpbHMuXG4gICAqXG4gICAqIFRoZSB1c2VyIGNhbiBvcHRpb25hbGx5IHNwZWNpZnkgYSBOSVNUIFAtMjU2IHB1YmxpYyBrZXksIGluIHdoaWNoIGNhc2UgdGhlIHJlc3VsdFxuICAgKiB3aWxsIGJlIGVuY3J5cHRlZCB0byB0aGUgcHVibGljIGtleSB1c2luZyBSRkM5MTgwIEhQS0UoUC0yNTYsIEhLREYtU0hBMjU2KSB3aXRoXG4gICAqIEFFUy0yNTYtR0NNIGFzIHRoZSBzeW1tZXRyaWMgY2lwaGVyLiBJbiB0aGlzIGNhc2UsIHRoZSByZXN1bHRpbmcgY2lwaGVydGV4dCB3aWxsXG4gICAqIGNvbnRhaW4gYSBzZXJpYWxpemVkIEpTT04gYmxvYiBjb250YWluaW5nIHRoZSB2ZWN0b3Igb2Ygc2hhcmVkIHNlY3JldHMgaW4gdGhlIHNhbWVcbiAgICogb3JkZXIgdGhleSB3ZXJlIHNwZWNpZmllZCBpbiB0aGUgcmVxdWVzdC5cbiAgICpcbiAgICogSWYgdGhlIHVzZXIgZG9lcyBub3Qgc3BlY2lmeSBhIHB1YmxpYyBrZXksIHRoZSByZXN1bHRpbmcgc2hhcmVkIHNlY3JldHMgd2lsbCBiZVxuICAgKiByZXR1cm5lZCB1bmVuY3J5cHRlZC4gSW4gdGhpcyBjYXNlLCB0aGUgY2FsbGVyIHNob3VsZCBzYW1wbGUgYSByYW5kb20gdmFsdWUgclxuICAgKiBtb2R1bG8gdGhlIGdyb3VwIG9yZGVyIGFuZCBtYXNrIHRoZSByZXF1ZXN0ZWQgcG9pbnRzIGFzIChyICogUF8xLCAuLi4sIHIgKiBQX2kpLlxuICAgKiBUaGUgcmVzdWx0IHdpbGwgYmUgKHIgKiBzayAqIFBfMSwgLi4uLCByICogc2sgKiBQX2kpLCB3aGljaCBjYW4gYmUgdW5tYXNrZWQgYnlcbiAgICogZmlyc3QgY29tcHV0aW5nIHJeLTEsIHRoZSBtdWx0aXBsaWNhdGl2ZSBpbnZlcnNlIG9mIHIgbW9kdWxvIHRoZSBncm91cCBvcmRlcixcbiAgICogdGhlbiBjb21wdXRpbmcgYSBzY2FsYXIgbXVsdGlwbGljYXRpb24gb2YgZWFjaCByZXR1cm5lZCBwb2ludCB3aXRoIHJeLTEuXG4gICAqXG4gICAqIFRoZXJlIGlzIGxpdHRsZSBwcmFjdGljYWwgc2VjdXJpdHkgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZXNlIHR3byBhcHByb2FjaGVzLiBUaGVcbiAgICogY2xpZW50IGlzIGZyZWUgdG8gY2hvb3NlIHRoZSBvbmUgdGhhdCBpcyBlYXNpZXIgZnJvbSBhbiBpbXBsZW1lbnRhdGlvbiBwZXJzcGVjdGl2ZS5cbiAgICovXG4gIGRpZmZpZUhlbGxtYW5FeGNoYW5nZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBLZXlcbiAgICAgICAgICogQGV4YW1wbGUgS2V5IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRGlmZmllSGVsbG1hblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJEaWZmaWVIZWxsbWFuUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgY29uZmlndXJlRW1haWw6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hpY2ggZW1haWwgdG8gY29uZmlndXJlICovXG4gICAgICAgIHB1cnBvc2U6XG4gICAgICAgICAgfCBcIm90cFwiXG4gICAgICAgICAgfCBcIm1mYV9yZXNldFwiXG4gICAgICAgICAgfCBcIm90cF9tZmFcIlxuICAgICAgICAgIHwgXCJhbGllbl9wYXNzd29yZF9yZXNldFwiXG4gICAgICAgICAgfCBcIm1lbWJlcl9wYXNzd29yZF9yZXNldFwiXG4gICAgICAgICAgfCBcImFsaWVuX2ludml0ZVwiXG4gICAgICAgICAgfCBcIm1lbWJlcl9pbnZpdGVcIlxuICAgICAgICAgIHwgXCJ3ZWxjb21lXCI7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ29uZmlndXJlRW1haWxSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gRUlQLTE5MSBEYXRhXG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIEVJUC0xOTEgRGF0YVxuICAgKlxuICAgKiBTaWducyBhIG1lc3NhZ2UgdXNpbmcgRUlQLTE5MSBwZXJzb25hbF9zaWduIHdpdGggYSBnaXZlbiBTZWNwMjU2azEga2V5LlxuICAgKi9cbiAgZWlwMTkxU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCBFVk0gYWRkcmVzcyBvZiB0aGUgU2VjcDI1NmsxIGtleVxuICAgICAgICAgKiBAZXhhbXBsZSAweDQ5MDExYWRiQ0MzYkM5YzAzMDdCQjA3RjM3RGRhMWExYTljNjlkMkVcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVpcDE5MVNpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU2lnblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIEVJUC03MTIgVHlwZWQgRGF0YVxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBFSVAtNzEyIFR5cGVkIERhdGFcbiAgICpcbiAgICogU2lnbnMgdHlwZWQgZGF0YSBhY2NvcmRpbmcgdG8gRUlQLTcxMiB3aXRoIGEgZ2l2ZW4gU2VjcDI1NmsxIGtleS5cbiAgICovXG4gIGVpcDcxMlNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgRVZNIGFkZHJlc3Mgb2YgdGhlIFNlY3AyNTZrMSBrZXlcbiAgICAgICAgICogQGV4YW1wbGUgMHg0OTAxMWFkYkNDM2JDOWMwMzA3QkIwN0YzN0RkYTFhMWE5YzY5ZDJFXG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFaXA3MTJTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlNpZ25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IGFuIE9yZy1FeHBvcnQgQ2lwaGVydGV4dFxuICAgKiBAZGVzY3JpcHRpb24gR2V0IGFuIE9yZy1FeHBvcnQgQ2lwaGVydGV4dFxuICAgKlxuICAgKiBSZXR1cm5zIHRoZSBleHBvcnQgY2lwaGVydGV4dCBhc3NvY2lhdGVkIHdpdGggdGhlIHByb3ZpZGVkIGtleS1pZC5cbiAgICogSW4gb3JkZXIgdG8gdXNlIHRoaXMgQVBJLCB5b3UgbXVzdCBiZSBhbiBvcmcgb3duZXIgYW5kIHlvdXIgb3JnIG11c3RcbiAgICogYmUgY29uZmlndXJlZCBmb3Igb3JnIGV4cG9ydCBhbmQgZm9yIEFQSS1iYXNlZCBleHBvcnQgZGVsaXZlcnkuXG4gICAqL1xuICBnZXRPcmdFeHBvcnQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgS2V5XG4gICAgICAgICAqIEBleGFtcGxlIEtleSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiT3JnRXhwb3J0UmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBhc3NvY2lhdGVkIE9JREMgaWRlbnRpdGllcyB3aXRoIHRoZSBjdXJyZW50IHVzZXIuXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IGFzc29jaWF0ZWQgT0lEQyBpZGVudGl0aWVzIHdpdGggdGhlIGN1cnJlbnQgdXNlci5cbiAgICovXG4gIGxpc3RPaWRjSWRlbnRpdGllczoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkxpc3RJZGVudGl0aWVzUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQXNzb2NpYXRlIGFuIE9JREMgaWRlbnRpdHkgd2l0aCB0aGUgY3VycmVudCB1c2VyIGluIG9yZyA8c2Vzc2lvbi5vcmc+LlxuICAgKiBAZGVzY3JpcHRpb24gQXNzb2NpYXRlIGFuIE9JREMgaWRlbnRpdHkgd2l0aCB0aGUgY3VycmVudCB1c2VyIGluIG9yZyA8c2Vzc2lvbi5vcmc+LlxuICAgKlxuICAgKiBBbGllbiB1c2VycyBhcmUgYWxsb3dlZCB0byBjYWxsIHRoaXMgZW5kcG9pbnQsIGJ1dCBmb3IgdGhlbSBNRkEgaXMgcmVxdWlyZWRcbiAgICogKHVubGVzcyB0aGV5IGFyZSByZWdpc3RlcmluZyBhbiBlbWFpbC1vdHAgaWRlbnRpdHkgbWF0Y2hpbmcgdGhlaXIgY3VycmVudCBlbWFpbCk7XG4gICAqIGFkZGl0aW9uYWxseSwgbGltaXRzIG1heSBhcHBseSB0byBob3cgbWFueSBpZGVudGl0aWVzIHRoYXQgbWF5IHJlZ2lzdGVyLlxuICAgKi9cbiAgYWRkT2lkY0lkZW50aXR5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFkZElkZW50aXR5UmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmVtb3ZlIGFuIE9JREMgaWRlbnRpdHkgZnJvbSB0aGUgY3VycmVudCB1c2VyJ3MgYWNjb3VudCBpbiBvcmcgPHNlc3Npb24ub3JnPi5cbiAgICogQGRlc2NyaXB0aW9uIFJlbW92ZSBhbiBPSURDIGlkZW50aXR5IGZyb20gdGhlIGN1cnJlbnQgdXNlcidzIGFjY291bnQgaW4gb3JnIDxzZXNzaW9uLm9yZz4uXG4gICAqL1xuICByZW1vdmVPaWRjSWRlbnRpdHk6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT2lkY0lkZW50aXR5XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENyZWF0ZSBbSWRlbnRpdHlQcm9vZl0gZnJvbSBDdWJlU2lnbmVyIHVzZXIgc2Vzc2lvblxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIFtJZGVudGl0eVByb29mXSBmcm9tIEN1YmVTaWduZXIgdXNlciBzZXNzaW9uXG4gICAqXG4gICAqIFRoaXMgcm91dGUgY2FuIGJlIHVzZWQgdG8gcHJvdmUgdG8gYW5vdGhlciBwYXJ0eSB0aGF0IGEgdXNlciBoYXMgYVxuICAgKiB2YWxpZCBDdWJlU2lnbmVyIHNlc3Npb24uXG4gICAqXG4gICAqIENsaWVudHMgYXJlIGludGVuZGVkIHRvIGNhbGwgdGhpcyByb3V0ZSBhbmQgcGFzcyB0aGUgcmV0dXJuZWQgZXZpZGVuY2VcbiAgICogdG8gYW5vdGhlciBzZXJ2aWNlIHdoaWNoIHdpbGwgdmVyaWZ5IGl0IGJ5IG1ha2luZyBhIHJlcXVlc3QgdG8gYC92MC9vcmcvPG9yZ19pZD4vaWRlbnRpdHkvdmVyaWZ5YC5cbiAgICovXG4gIGNyZWF0ZVByb29mQ3ViZVNpZ25lcjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIklkZW50aXR5UHJvb2ZcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIFtJZGVudGl0eVByb29mXSBmcm9tIE9JREMgdG9rZW5cbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBbSWRlbnRpdHlQcm9vZl0gZnJvbSBPSURDIHRva2VuXG4gICAqXG4gICAqIEV4Y2hhbmdlIGFuIE9JREMgSUQgdG9rZW4gKHBhc3NlZCB2aWEgdGhlIGBBdXRob3JpemF0aW9uYCBoZWFkZXIpIGZvciBhIHByb29mIG9mIGF1dGhlbnRpY2F0aW9uLlxuICAgKlxuICAgKiBUaGlzIHJvdXRlIGNhbiBiZSB1c2VkIHRvIHByb3ZlIHRvIGFub3RoZXIgcGFydHkgdGhhdCBhIHVzZXIgaGFzIG1ldCB0aGVcbiAgICogYXV0aGVudGljYXRpb24gcmVxdWlyZW1lbnRzIChhbGxvd2VkIGlzc3VlcnMgJiBhdWRpZW5jZXMpIGZvciBDdWJlU2lnbmVyXG4gICAqIHdpdGhvdXQgbGVha2luZyB0aGVpciBjcmVkZW50aWFscy5cbiAgICpcbiAgICogQ2xpZW50cyBhcmUgaW50ZW5kZWQgdG8gY2FsbCB0aGlzIHJvdXRlIGFuZCBwYXNzIHRoZSByZXR1cm5lZCBldmlkZW5jZSB0byBhbm90aGVyIHNlcnZpY2VcbiAgICogd2hpY2ggd2lsbCB2ZXJpZnkgaXQgYnkgbWFraW5nIGEgcmVxdWVzdCB0byBgL3YwL29yZy88b3JnX2lkPi9pZGVudGl0eS92ZXJpZnlgLlxuICAgKi9cbiAgY3JlYXRlUHJvb2ZPaWRjOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiSWRlbnRpdHlQcm9vZlwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBWZXJpZnkgaWRlbnRpdHkgcHJvb2ZcbiAgICogQGRlc2NyaXB0aW9uIFZlcmlmeSBpZGVudGl0eSBwcm9vZlxuICAgKlxuICAgKiBBbGxvd3MgYSB0aGlyZC1wYXJ0eSB0byB2YWxpZGF0ZSBwcm9vZiBvZiBhdXRoZW50aWNhdGlvbi5cbiAgICpcbiAgICogV2hlbiBhIHRoaXJkLXBhcnR5IGlzIHByb3ZpZGVkIGFuIFtJZGVudGl0eVByb29mXSBvYmplY3QsIHRoZXkgbXVzdCBjaGVjayBpdHNcbiAgICogdmVyYWNpdHkgYnkgY2FsbGluZyB0aGlzIGVuZHBvaW50XG4gICAqL1xuICB2ZXJpZnlQcm9vZjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZGVudGl0eVByb29mXCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge307XG4gIH07XG4gIC8qKlxuICAgKiBBdXRoZW50aWNhdGVcbiAgICogQGRlc2NyaXB0aW9uIEF1dGhlbnRpY2F0ZVxuICAgKlxuICAgKiBUaGlzIGVuZHBvaW50IGV4Y2hhbmdlcyBhbiBlbWFpbCAmIHBhc3N3b3JkIGZvciBhbiBPSURDIHRva2VuXG4gICAqL1xuICBpZHBBdXRoZW50aWNhdGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXV0aGVudGljYXRpb25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQXV0aGVudGljYXRpb25SZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZXF1ZXN0IFBhc3N3b3JkIFJlc2V0XG4gICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IFBhc3N3b3JkIFJlc2V0XG4gICAqXG4gICAqIFRoaXMgZW5kcG9pbnQgZ2VuZXJhdGVzIGFuIE9JREMgdG9rZW4gd2l0aG91dCBhIHNpZ25hdHVyZSAob2YgdGhlIGZvcm0gYHtoZWFkZXJ9LntwYXlsb2FkfS5gKSxcbiAgICogYW5kIHNlbmRzIHRoZSBzaWduYXR1cmUgdG8gdGhlIHVzZXIncyBlbWFpbC4gQ2xpZW50IGFwcGxpY2F0aW9ucyBjYW4gcmVjb25zdHJ1Y3QgdGhlIHRva2VuXG4gICAqIGJ5IGNvbmNhdGVuYXRpbmcgdGhlIGB7aGVhZGVyfS57cGF5bG9hZH0uYCB3aXRoIHRoZSBzaWduYXR1cmUsIHByb2R1Y2luZyBhIHZhbGlkIE9JREMgdG9rZW4gb2ZcbiAgICogdGhlIGZvcm0gYHtoZWFkZXJ9LntwYXlsb2FkfS57c2lnbmF0dXJlfWAuIFRoZSB0b2tlbiBjYW4gdGhlbiBiZSB1c2VkIHRvIGF1dGhlbnRpY2F0ZSB0aGUgdXNlclxuICAgKiB3aGVuIHBlcmZvcm1pbmcgdGhlIGBpZHBfcGFzc3dvcmRfcmVzZXRfY29uZmlybWAgcmVxdWVzdC5cbiAgICovXG4gIGlkcFBhc3N3b3JkUmVzZXRSZXF1ZXN0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBhc3N3b3JkUmVzZXRSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1haWxPdHBSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDb25maXJtIFBhc3N3b3JkIFJlc2V0XG4gICAqIEBkZXNjcmlwdGlvbiBDb25maXJtIFBhc3N3b3JkIFJlc2V0XG4gICAqXG4gICAqIFRoaXMgZW5kcG9pbnQgYWxsb3dzIElEUCB1c2VycyB0byByZXNldCB0aGVpciBwYXNzd29yZFxuICAgKiB1c2luZyBhIHRva2VuIHRoZXkgaGF2ZSByZWNlaXZlZCBpbiB0aGVpciBlbWFpbC5cbiAgICovXG4gIGlkcFBhc3N3b3JkUmVzZXRDb25maXJtOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBhc3N3b3JkUmVzZXRDb25maXJtUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDcmVhdGUgS2V5LUltcG9ydCBLZXlcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBLZXktSW1wb3J0IEtleVxuICAgKlxuICAgKiBHZW5lcmF0ZSBhbiBlcGhlbWVyYWwga2V5IHRoYXQgYSBjbGllbnQgY2FuIHVzZSBmb3Iga2V5LWltcG9ydCBlbmNyeXB0aW9uLlxuICAgKi9cbiAgY3JlYXRlS2V5SW1wb3J0S2V5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQ3JlYXRlS2V5SW1wb3J0S2V5UmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW1wb3J0IEtleVxuICAgKiBAZGVzY3JpcHRpb24gSW1wb3J0IEtleVxuICAgKlxuICAgKiBTZWN1cmVseSBpbXBvcnRzIGFuIGV4aXN0aW5nIGtleSB1c2luZyBhIHByZXZpb3VzbHkgZ2VuZXJhdGVkIGtleS1pbXBvcnQga2V5LlxuICAgKi9cbiAgaW1wb3J0S2V5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkltcG9ydEtleVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJDcmVhdGVLZXlSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBQdWJsaWMgT3JnIEluZm9cbiAgICogQGRlc2NyaXB0aW9uIFB1YmxpYyBPcmcgSW5mb1xuICAgKlxuICAgKiBVbmF1dGhlbnRpY2F0ZWQgZW5kcG9pbnQgdGhhdCByZXR1cm5zIHB1YmxpY2x5LWF2YWlsYWJsZSBpbmZvcm1hdGlvbiBhYm91dCBhbiBvcmdhbml6YXRpb24uXG4gICAqL1xuICBwdWJsaWNfb3JnX2luZm86IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQdWJsaWNPcmdJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIChJTlRFUk5BTCkgQ3VzdG9tIGNoYWluIFJQQyBwcm94eVxuICAgKiBAZGVzY3JpcHRpb24gKElOVEVSTkFMKSBDdXN0b20gY2hhaW4gUlBDIHByb3h5XG4gICAqL1xuICBjdXN0b21DaGFpblJwY0NhbGw6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3VzdG9tQ2hhaW5ScGNSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQ3VzdG9tQ2hhaW5ScGNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiAoSU5URVJOQUwpIEVzcGxvcmEgQVBJIFByb3h5XG4gICAqIEBkZXNjcmlwdGlvbiAoSU5URVJOQUwpIEVzcGxvcmEgQVBJIFByb3h5XG4gICAqL1xuICBlc3Bsb3JhQXBpQ2FsbDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFc3Bsb3JhUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVzcGxvcmFSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiAoSU5URVJOQUwpIEF1dGhlbnRpY2F0ZWQgU2VudHJ5IEFQSSBQcm94eVxuICAgKiBAZGVzY3JpcHRpb24gKElOVEVSTkFMKSBBdXRoZW50aWNhdGVkIFNlbnRyeSBBUEkgUHJveHlcbiAgICovXG4gIHNlbnRyeUFwaUNhbGw6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJ0ZXh0L3BsYWluXCI6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBBY2NlcHQgYW4gaW52aXRhdGlvblxuICAgKiBAZGVzY3JpcHRpb24gQWNjZXB0IGFuIGludml0YXRpb25cbiAgICpcbiAgICogVGhpcyBlbmRwb2ludCBhbGxvd3MgaWRwIHVzZXJzIHRvIHJlZ2lzdGVyIHVzaW5nIGEgdG9rZW4gdGhleSBoYXZlIHJlY2VpdmVkIGluIHRoZWlyIGVtYWlsXG4gICAqL1xuICBpbnZpdGF0aW9uQWNjZXB0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkludml0YXRpb25BY2NlcHRSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge307XG4gIH07XG4gIC8qKlxuICAgKiBJbnZpdGUgVXNlclxuICAgKiBAZGVzY3JpcHRpb24gSW52aXRlIFVzZXJcbiAgICpcbiAgICogQ3JlYXRlcyBhIG5ldyB1c2VyIGluIGFuIGV4aXN0aW5nIG9yZyBhbmQgc2VuZHMgdGhhdCB1c2VyIGFuIGludml0ZSBlbWFpbC5cbiAgICovXG4gIGludml0ZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJbnZpdGVSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3QgS2V5c1xuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBLZXlzXG4gICAqXG4gICAqIEdldHMgdGhlIGxpc3Qgb2YgYWNjZXNzaWJsZSBrZXlzIGluIGEgZ2l2ZW4gb3JnICh0byBvcmcgb3duZXIsIGFsbCBvcmcga2V5c1xuICAgKiBhcmUgYWNjZXNzaWJsZTsgdG8gbWVtYmVycywgb25seSB0aGVpciBvd24ga2V5cyBhcmUgYWNjZXNzaWJsZSkuXG4gICAqXG4gICAqIElmIGEgc2VhcmNoIGNvbmRpdGlvbiBpcywgdGhlIHJlc3VsdCB3aWxsIGNvbnRhaW4gb25seSB0aGUga2V5cyB3aG9zZSBlaXRoZXJcbiAgICogbWF0ZXJpYWwgSUQgb3IgbWV0YWRhdGEgY29udGFpbiB0aGUgc2VhcmNoIGNvbmRpdGlvbiBzdHJpbmcuXG4gICAqXG4gICAqIE5PVEUgdGhhdCBpZiBwYWdpbmF0aW9uIGlzIHVzZWQgYW5kIGEgcGFnZSBsaW1pdCBpcyBzZXQsIHRoZSByZXR1cm5lZCByZXN1bHRcbiAgICogc2V0IG1heSBjb250YWluIGVpdGhlciBGRVdFUiBvciBNT1JFIGVsZW1lbnRzIHRoYW4gdGhlIHJlcXVlc3RlZCBwYWdlIGxpbWl0LlxuICAgKi9cbiAgbGlzdEtleXNJbk9yZzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBJZiB0aGUgYWN0dWFsIG51bWJlciBvZiByZXR1cm5lZCBpdGVtcyBtYXkgYmUgbGVzcyB0aGF0IHRoaXMsIGV2ZW4gaWYgdGhlcmUgZXhpc3QgbW9yZVxuICAgICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgICAqIGluc3BlY3QgdGhlIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnQgb2YgdGhlIHBhZ2UuICBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZzsgb3RoZXJ3aXNlLCBvbmx5IHNwZWNpZnkgYVxuICAgICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnN0YXJ0XCI/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEZpbHRlciBieSBrZXkgdHlwZVxuICAgICAgICAgKiBAZXhhbXBsZSBTZWNwRXRoQWRkclxuICAgICAgICAgKi9cbiAgICAgICAga2V5X3R5cGU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleVR5cGVcIl0gfCBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEZpbHRlciBieSBrZXkgb3duZXJcbiAgICAgICAgICogQGV4YW1wbGUgVXNlciM1MjY5YzU3OS1iNGY5LTQ2MjAtOWU5MC1lNDZhNWEwZmZiNGRcbiAgICAgICAgICovXG4gICAgICAgIGtleV9vd25lcj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl0gfCBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFNlYXJjaCBrZXkgbWV0YWRhdGFcbiAgICAgICAgICogQGV4YW1wbGUgc29tZSB2YWx1ZVxuICAgICAgICAgKi9cbiAgICAgICAgc2VhcmNoPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRMaXN0S2V5c1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENyZWF0ZSBLZXlcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBLZXlcbiAgICpcbiAgICogQ3JlYXRlcyBvbmUgb3IgbW9yZSBuZXcga2V5cyBvZiB0aGUgc3BlY2lmaWVkIHR5cGUuXG4gICAqL1xuICBjcmVhdGVLZXk6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3JlYXRlS2V5UmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkNyZWF0ZUtleVJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCBLZXlcbiAgICogQGRlc2NyaXB0aW9uIEdldCBLZXlcbiAgICpcbiAgICogUmV0dXJucyB0aGUgcHJvcGVydGllcyBvZiBhIGtleS5cbiAgICovXG4gIGdldEtleUluT3JnOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIEtleVxuICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIktleUluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRGVsZXRlIEtleVxuICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIEtleVxuICAgKlxuICAgKiBEZWxldGVzIGEga2V5IHNwZWNpZmllZCBieSBpdHMgSUQuXG4gICAqXG4gICAqIE9ubHkgdGhlIGtleSBvd25lciBhbmQgb3JnIG93bmVycyBhcmUgYWxsb3dlZCB0byBkZWxldGUga2V5cy5cbiAgICogQWRkaXRpb25hbGx5LCB0aGUgcm9sZSdzIGVkaXQgcG9saWN5IChpZiBzZXQpIG11c3QgcGVybWl0IHRoZSB1cGRhdGUuXG4gICAqL1xuICBkZWxldGVLZXk6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgS2V5XG4gICAgICAgICAqIEBleGFtcGxlIEtleSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVtcHR5XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBVcGRhdGUgS2V5XG4gICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgS2V5XG4gICAqXG4gICAqIEVuYWJsZSBvciBkaXNhYmxlIGEga2V5LiAgVGhlIHVzZXIgbXVzdCBiZSB0aGUgb3duZXIgb2YgdGhlIGtleSBvclxuICAgKiBvcmdhbml6YXRpb24gdG8gcGVyZm9ybSB0aGlzIGFjdGlvbi5cbiAgICpcbiAgICogRm9yIGVhY2ggcmVxdWVzdGVkIHVwZGF0ZSwgdGhlIHNlc3Npb24gbXVzdCBoYXZlIHRoZSBjb3JyZXNwb25kaW5nICdtYW5hZ2U6a2V5OnVwZGF0ZTpfJyBzY29wZTtcbiAgICogaWYgbm8gdXBkYXRlcyBhcmUgcmVxdWVzdGVkLCB0aGUgc2Vzc2lvbiBtdXN0IGhhdmUgJ21hbmFnZTprZXk6Z2V0Jy5cbiAgICovXG4gIHVwZGF0ZUtleToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBLZXlcbiAgICAgICAgICogQGV4YW1wbGUgS2V5IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXBkYXRlS2V5UmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIktleUluZm9cIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEF0dGVzdCB0byBLZXkgUHJvcGVydGllc1xuICAgKiBAZGVzY3JpcHRpb24gQXR0ZXN0IHRvIEtleSBQcm9wZXJ0aWVzXG4gICAqXG4gICAqIFRoZSByZXNwb25zZSBpcyBhIEpXVCB3aG9zZSBjbGFpbXMgYXJlIHRoZSBrZXkgcHJvcGVydGllcy5cbiAgICovXG4gIGF0dGVzdEtleToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICBpbmNsdWRlX3JvbGVzPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIEtleVxuICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIktleUluZm9Kd3RcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBLZXkgUm9sZXNcbiAgICogQGRlc2NyaXB0aW9uIExpc3QgS2V5IFJvbGVzXG4gICAqXG4gICAqIEdldCBhbGwgcm9sZXMgdGhlIGtleSBpcyBpblxuICAgKi9cbiAgbGlzdEtleVJvbGVzOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgICAqIGRhdGEgaW4gdGhlIHJlc3VsdCBzZXQuIFRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBtb3JlIGRhdGEgaXMgbGVmdCBpbiB0aGUgcmVzdWx0IHNldCxcbiAgICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc2l6ZVwiPzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgICAqIHRoZSBleGFjdCB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc3RhcnRcIj86IHN0cmluZyB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIEtleVxuICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZExpc3RLZXlSb2xlc1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3QgSGlzdG9yaWNhbCBUcmFuc2FjdGlvbnNcbiAgICogQGRlc2NyaXB0aW9uIExpc3QgSGlzdG9yaWNhbCBUcmFuc2FjdGlvbnNcbiAgICpcbiAgICogUmV0dXJucyBhIHNvcnRlZCwgcGFnaW5hdGVkIGxpc3Qgb2YgdHJhbnNhY3Rpb25zIHNpZ25lZCBieSBhIGdpdmVuIGtleSxcbiAgICogb3JkZXJlZCBmcm9tIG1vc3QgcmVjZW50IGZpcnN0LlxuICAgKi9cbiAgbGlzdEhpc3RvcmljYWxLZXlUeDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBJZiB0aGUgYWN0dWFsIG51bWJlciBvZiByZXR1cm5lZCBpdGVtcyBtYXkgYmUgbGVzcyB0aGF0IHRoaXMsIGV2ZW4gaWYgdGhlcmUgZXhpc3QgbW9yZVxuICAgICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgICAqIGluc3BlY3QgdGhlIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnQgb2YgdGhlIHBhZ2UuICBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZzsgb3RoZXJ3aXNlLCBvbmx5IHNwZWNpZnkgYVxuICAgICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnN0YXJ0XCI/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBLZXlcbiAgICAgICAgICogQGV4YW1wbGUgS2V5IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRMaXN0SGlzdG9yaWNhbFR4UmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IEtleSBieSBNYXRlcmlhbCBJRFxuICAgKiBAZGVzY3JpcHRpb24gR2V0IEtleSBieSBNYXRlcmlhbCBJRFxuICAgKlxuICAgKiBSZXR1cm5zIHRoZSBwcm9wZXJ0aWVzIG9mIGEga2V5LlxuICAgKi9cbiAgZ2V0S2V5QnlNYXRlcmlhbElkOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFR5cGUgb2YgdGhlIGtleSB0byBsb29rIHVwICovXG4gICAgICAgIGtleV90eXBlOiBzdHJpbmc7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gTWF0ZXJpYWwgSUQgb2YgdGhlIGtleSB0byBsb29rIHVwICovXG4gICAgICAgIG1hdGVyaWFsX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJLZXlJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFF1ZXJ5IG9yZyBtZXRyaWNzLlxuICAgKiBAZGVzY3JpcHRpb24gUXVlcnkgb3JnIG1ldHJpY3MuXG4gICAqXG4gICAqIE1ldHJpY3Mgc3VtbWFyaXplIHVzYWdlIGluZm9ybWF0aW9uIGFib3V0IHlvdXIgQ3ViZVNpZ25lciBvcmdhbml6YXRpb24gb3ZlciB0aW1lLiBGb3IgZXhhbXBsZSxcbiAgICogeW91IGNhbiBjYWxsIHRoaXMgZW5kcG9pbnQgZmluZCBvdXQ6XG4gICAqXG4gICAqIC0gdGhlIGF2ZXJhZ2UgbnVtYmVyIG9mIGtleXMgb3ZlciB0aGUgbGFzdCBtb250aCxcbiAgICogLSB0aGUgYXZlcmFnZSBudW1iZXIgbW9udGhseSB1c2VycyBvdmVyIHRoZSBsYXN0IHllYXIsXG4gICAqIC0gdGhlIHRvdGFsIG51bWJlciBvZiB0cmFuc2FjdGlvbnMgc2lnbmVkIGxhc3Qgd2VlayxcbiAgICogLSBob3cgdGhlIG51bWJlciBvZiBkaWZmZXJlbnQgQVBJIHJlcXVlc3RzIHdhcyB0cmVuZGluZyBkYXktYnktZGF5IG92ZXIgdGhlIGxhc3Qgd2Vlay9tb250aC95ZWFyLCBldGMuXG4gICAqXG4gICAqIEVhY2ggbWV0cmljIGtpbmQgY2FuIGhhdmUgb25lIG9yIG1vcmUgZGltZW5zaW9ucywgdG8gZnVydGhlciBzcGVjaWZ5IHRoZSBvcmcgcHJvcGVydHkgaXQgZGVzY3JpYmVzLlxuICAgKiBGb3IgZXhhbXBsZSwgdGhlIGBVc2VyQ291bnRgIG1ldHJpY3MgaGF2ZSBhIG1lbWJlcnNoaXAgZGltZW5zaW9ucyB0byBzcGVjaWZ5IHRoZSBraW5kIG9mIHVzZXIgbWVtYmVyc2hpcFxuICAgKiBpbiB0aGUgb3JnYW5pemF0aW9uIChcIk93bmVyXCIgdnMuIFwiTWVtYmVyXCIgdnMuIFwiQWxpZW5cIikuXG4gICAqL1xuICBxdWVyeU1ldHJpY3M6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUXVlcnlNZXRyaWNzUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZFF1ZXJ5TWV0cmljc1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3QgUGVuZGluZyBNRkEgUmVxdWVzdHNcbiAgICogQGRlc2NyaXB0aW9uIExpc3QgUGVuZGluZyBNRkEgUmVxdWVzdHNcbiAgICpcbiAgICogUmV0cmlldmVzIGFuZCByZXR1cm5zIGFsbCBwZW5kaW5nIE1GQSByZXF1ZXN0cyB0aGF0IGFyZSBhY2Nlc3NpYmxlIHRvIHRoZSBjdXJyZW50IHNlc3Npb24sXG4gICAqIGkuZS4sIHRob3NlIGNyZWF0ZWQgYnkgdGhlIGN1cnJlbnQgc2Vzc2lvbiBpZGVudGl0eSBwbHVzIHRob3NlIGluIHdoaWNoIHRoZSBjdXJyZW50IHVzZXJcbiAgICogaXMgbGlzdGVkIGFzIGFuIGFwcHJvdmVyXG4gICAqL1xuICBtZmFMaXN0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTGlzdE1mYVJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCBQZW5kaW5nIE1GQSBSZXF1ZXN0XG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgUGVuZGluZyBNRkEgUmVxdWVzdFxuICAgKlxuICAgKiBSZXRyaWV2ZXMgYW5kIHJldHVybnMgYSBwZW5kaW5nIE1GQSByZXF1ZXN0IGJ5IGl0cyBpZC5cbiAgICovXG4gIG1mYUdldDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE1mYVJlcXVlc3RcbiAgICAgICAgICogQGV4YW1wbGUgTWZhUmVxdWVzdCMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG1mYV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTWZhUmVxdWVzdEluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQXBwcm92ZSBvciBSZWplY3QgTUZBIFJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIEFwcHJvdmUgb3IgUmVqZWN0IE1GQSBSZXF1ZXN0XG4gICAqXG4gICAqIEFwcHJvdmUgb3IgcmVqZWN0IHJlcXVlc3QgYWZ0ZXIgbG9nZ2luZyBpbiB3aXRoIEN1YmVTaWduZXIuXG4gICAqXG4gICAqIElmIGFwcHJvdmluZywgYWRkcyB0aGUgY3VycmVudGx5LWxvZ2dlZCB1c2VyIGFzIGFuIGFwcHJvdmVyXG4gICAqIG9mIGEgcGVuZGluZyBNRkEgcmVxdWVzdCBvZiB0aGUgW1N0YXR1czo6UmVxdWlyZWRBcHByb3ZlcnNdIGtpbmQuIElmIHRoZSByZXF1aXJlZCBudW1iZXIgb2ZcbiAgICogYXBwcm92ZXJzIGlzIHJlYWNoZWQsIHRoZSBNRkEgcmVxdWVzdCBpcyBhcHByb3ZlZDsgdGhlIGNvbmZpcm1hdGlvbiByZWNlaXB0IGNhbiBiZSB1c2VkIHRvXG4gICAqIHJlc3VtZSB0aGUgb3JpZ2luYWwgSFRUUCByZXF1ZXN0LlxuICAgKlxuICAgKiBJZiByZWplY3RpbmcsIGltbWVkaWF0ZWx5IGRlbGV0ZXMgdGhlIHBlbmRpbmcgTUZBIHJlcXVlc3QuXG4gICAqL1xuICBtZmFWb3RlQ3M6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgbWZhX3ZvdGU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVZvdGVcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE1mYVJlcXVlc3RcbiAgICAgICAgICogQGV4YW1wbGUgTWZhUmVxdWVzdCMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG1mYV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTWZhUmVxdWVzdEluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW5pdGlhdGUgYW4gRW1haWwgT1RQIE1GQSBBcHByb3ZhbC9SZWplY3Rpb25cbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIGFuIEVtYWlsIE9UUCBNRkEgQXBwcm92YWwvUmVqZWN0aW9uXG4gICAqXG4gICAqIEluaXRpYXRlcyB0aGUgYXBwcm92YWwvcmVqZWN0aW9uIHByb2Nlc3Mgb2YgYW4gTUZBIFJlcXVlc3QgdXNpbmcgRW1haWwgT1RQLlxuICAgKi9cbiAgbWZhRW1haWxJbml0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIG1mYV92b3RlPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFWb3RlXCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBNZmFSZXF1ZXN0XG4gICAgICAgICAqIEBleGFtcGxlIE1mYVJlcXVlc3QjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBtZmFfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtYWlsT3RwUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRmluYWxpemUgYSBFbWFpbCBPVFAgTUZBIEFwcHJvdmFsL1JlamVjdGlvbi5cbiAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIGEgRW1haWwgT1RQIE1GQSBBcHByb3ZhbC9SZWplY3Rpb24uXG4gICAqXG4gICAqIFRoZSByZXF1ZXN0IHNob3VsZCBjb250YWluIHRoZSBmdWxsIEpXVCBvYnRhaW5lZCBieSBjb25jYXRlbmF0aW5nIHRoZVxuICAgKiBwYXJ0aWFsIHRva2VuIHJldHVybmVkIGJ5IHRoZSBgbWZhX2VtYWlsX2luaXRgIGVuZHBvaW50IGFuZCB0aGUgc2lnbmF0dXJlXG4gICAqIGVtYWlsZWQgdG8gdGhlIHVzZXIgaXNzdWluZyB0aGUgcmVxdWVzdC5cbiAgICpcbiAgICogSWYgYXBwcm92aW5nLCBhZGRzIGFuIGFwcHJvdmVyIHRvIGEgcGVuZGluZyBNRkEgcmVxdWVzdC5cbiAgICogSWYgdGhlIHJlcXVpcmVkIG51bWJlciBvZiBhcHByb3ZlcnMgaXMgcmVhY2hlZCwgdGhlIE1GQSByZXF1ZXN0IGlzIGFwcHJvdmVkO1xuICAgKiB0aGUgY29uZmlybWF0aW9uIHJlY2VpcHQgY2FuIGJlIHVzZWQgdG8gcmVzdW1lIHRoZSBvcmlnaW5hbCBIVFRQIHJlcXVlc3QuXG4gICAqXG4gICAqIElmIHJlamVjdGluZywgaW1tZWRpYXRlbHkgZGVsZXRlcyB0aGUgcGVuZGluZyBNRkEgcmVxdWVzdC5cbiAgICovXG4gIG1mYVZvdGVFbWFpbENvbXBsZXRlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgTWZhUmVxdWVzdFxuICAgICAgICAgKiBAZXhhbXBsZSBNZmFSZXF1ZXN0IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgbWZhX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRW1haWxPdHBBbnN3ZXJcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJNZmFSZXF1ZXN0SW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBJbml0aWF0ZSBhIEZJRE8gTUZBIEFwcHJvdmFsL1JlamVjdGlvblxuICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgYSBGSURPIE1GQSBBcHByb3ZhbC9SZWplY3Rpb25cbiAgICpcbiAgICogSW5pdGlhdGVzIHRoZSBhcHByb3ZhbC9yZWplY3Rpb24gcHJvY2VzcyBvZiBhbiBNRkEgUmVxdWVzdCB1c2luZyBGSURPLlxuICAgKi9cbiAgbWZhRmlkb0luaXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBNZmFSZXF1ZXN0XG4gICAgICAgICAqIEBleGFtcGxlIE1mYVJlcXVlc3QjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBtZmFfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkZpZG9Bc3NlcnRDaGFsbGVuZ2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRmluYWxpemUgYSBGSURPIE1GQSBBcHByb3ZhbC9SZWplY3Rpb25cbiAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIGEgRklETyBNRkEgQXBwcm92YWwvUmVqZWN0aW9uXG4gICAqXG4gICAqIElmIGFwcHJvdmluZywgYWRkcyBhbiBhcHByb3ZlciB0byBhIHBlbmRpbmcgTUZBIHJlcXVlc3QuXG4gICAqIElmIHRoZSByZXF1aXJlZCBudW1iZXIgb2YgYXBwcm92ZXJzIGlzIHJlYWNoZWQsIHRoZSBNRkEgcmVxdWVzdCBpcyBhcHByb3ZlZDtcbiAgICogdGhlIGNvbmZpcm1hdGlvbiByZWNlaXB0IGNhbiBiZSB1c2VkIHRvIHJlc3VtZSB0aGUgb3JpZ2luYWwgSFRUUCByZXF1ZXN0LlxuICAgKlxuICAgKiBJZiByZWplY3RpbmcsIGltbWVkaWF0ZWx5IGRlbGV0ZXMgdGhlIHBlbmRpbmcgTUZBIHJlcXVlc3QuXG4gICAqL1xuICBtZmFWb3RlRmlkb0NvbXBsZXRlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIG1mYV92b3RlPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFWb3RlXCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBNZmFSZXF1ZXN0XG4gICAgICAgICAqIEBleGFtcGxlIE1mYVJlcXVlc3QjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBtZmFfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJGaWRvQXNzZXJ0QW5zd2VyXCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTWZhUmVxdWVzdEluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQXBwcm92ZS9SZWplY3QgYSBUT1RQIE1GQSBSZXF1ZXN0XG4gICAqIEBkZXNjcmlwdGlvbiBBcHByb3ZlL1JlamVjdCBhIFRPVFAgTUZBIFJlcXVlc3RcbiAgICpcbiAgICogSWYgYXBwcm92aW5nLCBhZGRzIHRoZSBjdXJyZW50IHVzZXIgYXMgYXBwcm92ZXIgdG8gYSBwZW5kaW5nIE1GQSByZXF1ZXN0IGJ5XG4gICAqIHByb3ZpZGluZyBUT1RQIGNvZGUuIElmIHRoZSByZXF1aXJlZCBudW1iZXIgb2YgYXBwcm92ZXJzIGlzIHJlYWNoZWQsIHRoZSBNRkEgcmVxdWVzdCBpc1xuICAgKiBhcHByb3ZlZDsgdGhlIGNvbmZpcm1hdGlvbiByZWNlaXB0IGNhbiBiZSB1c2VkIHRvIHJlc3VtZSB0aGUgb3JpZ2luYWwgSFRUUCByZXF1ZXN0LlxuICAgKlxuICAgKiBJZiByZWplY3RpbmcsIGltbWVkaWF0ZWx5IGRlbGV0ZXMgdGhlIHBlbmRpbmcgTUZBIHJlcXVlc3QuXG4gICAqL1xuICBtZmFWb3RlVG90cDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICBtZmFfdm90ZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhVm90ZVwiXSB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgTWZhUmVxdWVzdFxuICAgICAgICAgKiBAZXhhbXBsZSBNZmFSZXF1ZXN0IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgbWZhX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG90cEFwcHJvdmVSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTWZhUmVxdWVzdEluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBwZW5kaW5nIE1NSSByZXF1ZXN0c1xuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBwZW5kaW5nIE1NSSByZXF1ZXN0c1xuICAgKlxuICAgKiBSZXRyaWV2ZXMgYW5kIHJldHVybnMgYWxsIHBlbmRpbmcgTU1JIG1lc3NhZ2VzIGFjY2Vzc2libGUgdG8gdGhlIGN1cnJlbnQgc2Vzc2lvbiBpZGVudGl0eSwgaS5lLixcbiAgICogLSBhIHJvbGUgc2Vzc2lvbiBjYW4gYWNjZXNzIG9ubHkgdGhlIG1lc3NhZ2VzIGNyZWF0ZWQgYnkgdGhhdCByb2xlXG4gICAqIC0gYSB1c2VyIHNlc3Npb24gY2FuIGFjY2VzcyB0aGUgbWVzc2FnZXMgY3JlYXRlZCBieSBlaXRoZXIgdGhhdCB1c2VyIG9yIGFueSByb2xlIHdoaWNoIHRoZSB1c2VyIGlzIGEgbWVtYmVyIG9mXG4gICAqL1xuICBtbWlNZXNzYWdlTGlzdDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkxpc3RQZW5kaW5nTWVzc2FnZXNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBHZXQgYW4gTU1JIHJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIEdldCBhbiBNTUkgcmVxdWVzdFxuICAgKlxuICAgKiBSZXRyaWV2ZXMgYSBwZW5kaW5nIE1NSSByZXF1ZXN0IGJ5IGl0cyBJRC5cbiAgICovXG4gIG1taU1lc3NhZ2VHZXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBQZW5kaW5nTWVzc2FnZVxuICAgICAgICAgKiBAZXhhbXBsZSBQZW5kaW5nTWVzc2FnZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG1zZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGVuZGluZ01lc3NhZ2VJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIERlbGV0ZSBhbiBNTUkgcmVxdWVzdFxuICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIGFuIE1NSSByZXF1ZXN0XG4gICAqXG4gICAqIFJlamVjdHMgYW4gZXhpc3RpbmcgTU1JIHJlcXVlc3QgYW5kIHRoZW4gZGVsZXRlcyBpdCBmcm9tIHRoZSBkYXRhYmFzZS5cbiAgICovXG4gIG1taU1lc3NhZ2VEZWxldGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBQZW5kaW5nTWVzc2FnZVxuICAgICAgICAgKiBAZXhhbXBsZSBQZW5kaW5nTWVzc2FnZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG1zZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFJlamVjdCBhbiBNTUkgcmVxdWVzdFxuICAgKiBAZGVzY3JpcHRpb24gUmVqZWN0IGFuIE1NSSByZXF1ZXN0XG4gICAqXG4gICAqIFJlamVjdHMgYSBwZW5kaW5nIE1NSSByZXF1ZXN0LiBUaGUgcmVjb3JkIG9mIHRoZSBNTUkgcmVxdWVzdCBpcyBrZXB0IGluXG4gICAqIHRoZSBkYXRhYmFzZSB1bnRpbCBpdCBleHBpcmVzIG9yIGlzIGV4cGxpY2l0bHkgZGVsZXRlZC5cbiAgICpcbiAgICogUmV0dXJucyB0aGUgdXBkYXRlZCByZXF1ZXN0IGluZm9ybWF0aW9uLlxuICAgKi9cbiAgbW1pTWVzc2FnZVJlamVjdDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFBlbmRpbmdNZXNzYWdlXG4gICAgICAgICAqIEBleGFtcGxlIFBlbmRpbmdNZXNzYWdlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgbXNnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk/OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1taVJlamVjdFJlcXVlc3RcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGVuZGluZ01lc3NhZ2VJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEFwcHJvdmUgYW5kIHNpZ24gYW4gTU1JIHJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIEFwcHJvdmUgYW5kIHNpZ24gYW4gTU1JIHJlcXVlc3RcbiAgICpcbiAgICogU2lnbnMgYSBwZW5kaW5nIHJlcXVlc3QgdGhhdCB3YXMgZ2VuZXJhdGVkIHRocm91Z2ggdGhlIE1NSSBKU09OIFJQQyBlbmRwb2ludC5cbiAgICogVGhlIHNpZ25hdHVyZSBpcyBzdG9yZWQgd2l0aCB0aGUgcGVuZGluZyBtZXNzYWdlIGFuZCB0aGUgdXBkYXRlZCByZXF1ZXN0IGluZm8gaXMgcmV0dXJuZWQuXG4gICAqXG4gICAqIFRoZSBtZXNzYWdlIHNob3VsZCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIG9yZ2FuaXphdGlvbiB0aGlzIGlzIGNhbGxlZCBmcm9tLFxuICAgKiBhbmQgdGhlIHVzZXIgc2hvdWxkIGJlIHRoZSBvd25lciBvZiB0aGUgY29ycmVzcG9uZGluZyBtZXNzYWdlJ3Mga2V5LlxuICAgKi9cbiAgbW1pTWVzc2FnZVNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBQZW5kaW5nTWVzc2FnZVxuICAgICAgICAgKiBAZXhhbXBsZSBQZW5kaW5nTWVzc2FnZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG1zZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBlbmRpbmdNZXNzYWdlSW5mb1wiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBlbmRpbmdNZXNzYWdlU2lnblJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIE1pbnQgYW4gT0lEQyBJRCB0b2tlbiBmb3IgVHdpdHRlclxuICAgKiBAZGVzY3JpcHRpb24gTWludCBhbiBPSURDIElEIHRva2VuIGZvciBUd2l0dGVyXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gYWN0cyBpZGVudGljYWxseSB0byBUd2l0dGVyJ3MgW2BvYXV0aDIvdG9rZW5gXShodHRwczovL2RldmVsb3Blci50d2l0dGVyLmNvbS9lbi9kb2NzL2F1dGhlbnRpY2F0aW9uL2FwaS1yZWZlcmVuY2UvdG9rZW4pIGVuZHBvaW50LFxuICAgKiBidXQgZXh0ZW5kcyB0aGUgb3V0cHV0IHdpdGggYW4gYGlkX3Rva2VuYC5cbiAgICpcbiAgICogVGhpcyBgaWRfdG9rZW5gIGNhbiB0aGVuIGJlIHVzZWQgd2l0aCBhbnkgQ3ViZVNpZ25lciBlbmRwb2ludCB0aGF0IHJlcXVpcmVzIGFuIE9JREMgdG9rZW4uXG4gICAqXG4gICAqID4gWyFJTVBPUlRBTlRdXG4gICAqID4gVGhpcyBlbmRwb2ludCB3aWxsIGZhaWwgdW5sZXNzIHRoZSBvcmcgaXMgY29uZmlndXJlZCB0byBhbGxvdyB0aGUgaXNzdWVyIGBodHRwczovL3NoaW0ub2F1dGgyLmN1YmlzdC5kZXYvdHdpdHRlcmAgYW5kIGNsaWVudCBJRCBiZWluZyB1c2VkIGZvciBUd2l0dGVyLlxuICAgKi9cbiAgb2F1dGgyVHdpdHRlcjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIFtrZXk6IHN0cmluZ106IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlRva2VuUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTG9naW4gd2l0aCBPSURDXG4gICAqIEBkZXNjcmlwdGlvbiBMb2dpbiB3aXRoIE9JRENcbiAgICpcbiAgICogRXhjaGFuZ2UgYW4gT0lEQyBJRCB0b2tlbiAocGFzc2VkIHZpYSB0aGUgYEF1dGhvcml6YXRpb25gIGhlYWRlcikgZm9yIGEgc2lnbmVyIHNlc3Npb24uXG4gICAqXG4gICAqIE1GQSBpcyByZXF1aXJlZCB3aGVuOlxuICAgKiAtIGFuIE1GQSBwb2xpY3kgaXMgZXhwbGljaXRseSBhdHRhY2hlZCB0byB0aGUgdXNlciBsb2dnaW5nIGluXG4gICAqIChlLmcuLCBhbiBvcmcgb3duZXIgY2FuIGRvIHRoYXQgYXQgdXNlciBjcmVhdGlvbiB0aW1lIHRvIHJlcXVpcmUgY2VydGFpbiBraW5kIG9mIE1GQSlcbiAgICogLSB0aGUgdXNlciBoYXMgYXQgbGVhc3QgMSBNRkEgZmFjdG9yIGNvbmZpZ3VyZWRcbiAgICovXG4gIG9pZGNBdXRoOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9pZGNMb2dpblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJOZXdTZXNzaW9uUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEluaXRpYXRlIGxvZ2luIHZpYSBlbWFpbCB0b2tlblxuICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgbG9naW4gdmlhIGVtYWlsIHRva2VuXG4gICAqXG4gICAqIFRoaXMgZW5kcG9pbnQgZ2VuZXJhdGVzIGFuIE9JREMgdG9rZW4gd2l0aG91dCBhIHNpZ25hdHVyZSAob2YgdGhlIGZvcm0gYGhlYWRlci5wYXlsb2FkLmApLCBhbmQgc2VuZHMgdGhlIHNpZ25hdHVyZSB0byB0aGUgdXNlcidzIGVtYWlsLlxuICAgKiBDbGllbnQgYXBwbGljYXRpb25zIGNhbiByZWNvbnN0cnVjdCB0aGUgdG9rZW4gYnkgY29uY2F0ZW5hdGluZyB0aGUgYHBhcnRpYWxfdG9rZW5gIHdpdGggdGhlIHNpZ25hdHVyZSwgcHJvZHVjaW5nIGEgdmFsaWQgT0lEQyB0b2tlbiBvZiB0aGUgZm9ybSBgaGVhZGVyLnBheWxvYWQuc2lnbmF0dXJlYFxuICAgKiBUaGUgdG9rZW4gY2FuIHRoZW4gYmUgdXNlZCB0byBhdXRoZW50aWNhdGUgdGhlIHVzZXIuXG4gICAqXG4gICAqID4gWyFJTVBPUlRBTlRdXG4gICAqID4gRm9yIHRoaXMgZW5kcG9pbnQgdG8gc3VjY2VlZCwgdGhlIG9yZyBtdXN0IGJlIGNvbmZpZ3VyZWQgdG86XG4gICAqID4gMS4gQWxsb3cgdGhlIGlzc3VlciBgaHR0cHM6Ly9zaGltLm9hdXRoMi5jdWJpc3QuZGV2L2VtYWlsLW90cGAgYW5kIGNsaWVudCBJRCBiZWluZyB0aGUgT3JnIElEXG4gICAqID4gMi4gSGF2ZSBhbiBlbWFpbCBzZW5kZXIgY29uZmlndXJlZCBmb3IgT1RQc1xuICAgKi9cbiAgZW1haWxPdHBBdXRoOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVtYWlsT3RwUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtYWlsT3RwUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW5pdGlhdGUgbG9naW4gdmlhIFNpZ24taW4gV2l0aCBFdGhlcmV1bSAoU0lXRSkuXG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSBsb2dpbiB2aWEgU2lnbi1pbiBXaXRoIEV0aGVyZXVtIChTSVdFKS5cbiAgICpcbiAgICogVGhpcyBlbmRwb2ludCBnZW5lcmF0ZXMgYSBjaGFsbGVuZ2Ugd2hpY2ggY2FuIGJlIGFuc3dlcmVkICh2aWEgdGhlIGNvcnJlc3BvbmRpbmcgUEFUQ0ggZW5kcG9pbnQpXG4gICAqIHRvIG9idGFpbiBhbiBPSURDIHRva2VuLiBUaGUgT0lEQyB0b2tlbiBjYW4gdGhlbiBiZSBleGNoYW5nZWQgZm9yIGEgdXNlciBzZXNzaW9uIHZpYSB0aGUgc3RhbmRhcmRcbiAgICogT0lEQyBhdXRoIHJvdXRlLlxuICAgKlxuICAgKiA+IFshSU1QT1JUQU5UXVxuICAgKiA+IEZvciB0aGlzIGVuZHBvaW50IHRvIHN1Y2NlZWQsIHRoZSBvcmcgbXVzdCBiZSBjb25maWd1cmVkIHRvOlxuICAgKiA+IEFsbG93IHRoZSBpc3N1ZXIgYGh0dHBzOi8vc2hpbS5vYXV0aDIuY3ViaXN0LmRldi9zaXdlYCB3aXRoIHRoZSBPcmcgSUQgYXMgdGhlIGNsaWVudCBJRFxuICAgKi9cbiAgc2l3ZUluaXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2l3ZUluaXRSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU2l3ZUluaXRSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDb21wbGV0ZSBsb2dpbiB2aWEgU2lnbi1pbiBXaXRoIEV0aGVyZXVtIChTSVdFKVxuICAgKiBAZGVzY3JpcHRpb24gQ29tcGxldGUgbG9naW4gdmlhIFNpZ24taW4gV2l0aCBFdGhlcmV1bSAoU0lXRSlcbiAgICpcbiAgICogSWYgdGhlIGNoYWxsZW5nZSAoaXNzdWVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIFBPU1QgZW5kcG9pbnQpIGlzIGFuc3dlcmVkIGNvcnJlY3RseSwgdGhpcyBlbmRwb2ludFxuICAgKiBnZW5lcmF0ZXMgYW4gT0lEQyB0b2tlbiB0aGF0IGNhbiB0aGVuIGJlIGV4Y2hhbmdlZCBmb3IgYSB1c2VyIHNlc3Npb24gdmlhIHRoZSBzdGFuZGFyZCBPSURDIGF1dGggcm91dGUuXG4gICAqXG4gICAqID4gWyFJTVBPUlRBTlRdXG4gICAqID4gRm9yIHRoaXMgZW5kcG9pbnQgdG8gc3VjY2VlZCwgdGhlIG9yZyBtdXN0IGJlIGNvbmZpZ3VyZWQgdG86XG4gICAqID4gQWxsb3cgdGhlIGlzc3VlciBgaHR0cHM6Ly9zaGltLm9hdXRoMi5jdWJpc3QuZGV2L3Npd2VgIHdpdGggdGhlIE9yZyBJRCBhcyB0aGUgY2xpZW50IElEXG4gICAqL1xuICBzaXdlQ29tcGxldGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2l3ZUNvbXBsZXRlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlNpd2VDb21wbGV0ZVJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEFsbG93cyBhIHVzZXIgdG8gYXV0aGVudGljYXRlIHdpdGggdGhlIHRlbGVncmFtIEFQSSB1c2luZyB0aGUgdGdXZWJBcHBEYXRhIHZhbHVlXG4gICAqIEBkZXNjcmlwdGlvbiBBbGxvd3MgYSB1c2VyIHRvIGF1dGhlbnRpY2F0ZSB3aXRoIHRoZSB0ZWxlZ3JhbSBBUEkgdXNpbmcgdGhlIHRnV2ViQXBwRGF0YSB2YWx1ZVxuICAgKiBUaGUgdG9rZW4gaGFzIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAgICogLSBUaGUgYHN1YmAgZmllbGQgaXMgdGhlIHRlbGVncmFtIHVzZXIgSURcbiAgICogLSBUaGUgYGlzc2AgZmllbGQgZGVwZW5kcyBvbiB0aGUgY2hvc2VuIGVudmlyb25tZW50OlxuICAgKiAtIGBodHRwczovL3NoaW0ub2F1dGgyLmN1YmlzdC5kZXYvdGVsZWdyYW0vcHJvZHVjdGlvbmAgZm9yIHRoZSBwcm9kdWN0aW9uIGVudmlyb25tZW50XG4gICAqIC0gYGh0dHBzOi8vc2hpbS5vYXV0aDIuY3ViaXN0LmRldi90ZWxlZ3JhbS90ZXN0YCBmb3IgdGhlIHRlc3QgZW52aXJvbm1lbnRcbiAgICogLSBUaGUgYGF1ZGAgZmllbGQgaXMgdGhlIHByb3ZpZGVkIHRlbGVncmFtIGJvdCBJRFxuICAgKiAtIFRoZSBgZXhwYCBmaWVsZCBpcyBkZXJpdmVkIGZyb20gdGhlIGBhdXRoX2RhdGVgIGZpZWxkIGluIHRoZSB0ZWxlZ3JhbSBkYXRhXG4gICAqXG4gICAqIEZhaWxzIGlmIHRoZSB0ZWxlZ3JhbSBkYXRhIGlzIGludmFsaWQgb3IgdGhlIHNpZ25hdHVyZSBpcyBpbnZhbGlkXG4gICAqL1xuICB0ZWxlZ3JhbUF1dGg6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVGVsZWdyYW1BdXRoUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlRlbGVncmFtQXV0aFJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENyZWF0ZSBPcmdcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBPcmdcbiAgICpcbiAgICogQ3JlYXRlcyBhIG5ldyBvcmdhbml6YXRpb24uIFRoZSBuZXcgb3JnIGlzIGEgY2hpbGQgb2YgdGhlXG4gICAqIGN1cnJlbnQgb3JnIGFuZCBpbmhlcml0cyBpdHMga2V5LWV4cG9ydCBwb2xpY3kuIFRoZSBuZXcgb3JnXG4gICAqIGlzIGNyZWF0ZWQgd2l0aCBvbmUgb3duZXIsIHRoZSBjYWxsZXIgb2YgdGhpcyBBUEkuXG4gICAqL1xuICBjcmVhdGVPcmc6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3JlYXRlT3JnUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIk9yZ0luZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBQb2xpY2llc1xuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBQb2xpY2llc1xuICAgKlxuICAgKiBSZXR1cm5zIHRoZSBsaXN0IG9mIGFsbCBwb2xpY2llcyBpbiB0aGUgT3JnLlxuICAgKi9cbiAgbGlzdFBvbGljaWVzOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgICAqIGRhdGEgaW4gdGhlIHJlc3VsdCBzZXQuIFRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBtb3JlIGRhdGEgaXMgbGVmdCBpbiB0aGUgcmVzdWx0IHNldCxcbiAgICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc2l6ZVwiPzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgICAqIHRoZSBleGFjdCB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc3RhcnRcIj86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG9wdGlvbmFsIHR5cGUgb2YgcG9saWNpZXMgdG8gcmV0dXJuXG4gICAgICAgICAqIEBleGFtcGxlIEtleVxuICAgICAgICAgKi9cbiAgICAgICAgcG9saWN5X3R5cGU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBvbGljeVR5cGVcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZExpc3RQb2xpY2llc1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENyZWF0ZSBQb2xpY3lcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBQb2xpY3lcbiAgICpcbiAgICogQ3JlYXRlcyBhIG5ldyBuYW1lZCBwb2xpY3kgaW4gdGhlIG9yZ2FuaXphdGlvbi4gVGhlIHVzZXIgbWFraW5nIHRoZSByZXF1ZXN0IGlzIHRoZVxuICAgKiBvd25lciBvZiB0aGUgcG9saWN5LCBnaXZpbmcgdGhlbSBlZGl0IGFjY2VzcyB0byB0aGUgcG9saWN5IGFsb25nIHdpdGggdGhlIG9yZyBvd25lcnMuXG4gICAqL1xuICBjcmVhdGVQb2xpY3k6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3JlYXRlUG9saWN5UmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBvbGljeUluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRGVsZXRlIFBvbGljeVxuICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIFBvbGljeVxuICAgKlxuICAgKiBEZWxldGUgdGhlIG5hbWVkIHBvbGljeSB3aXRoIHRoZSBnaXZlbiBuYW1lIG9yIGlkLlxuICAgKi9cbiAgZGVsZXRlUG9saWN5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgTmFtZWRQb2xpY3lcbiAgICAgICAgICogQGV4YW1wbGUgTmFtZWRQb2xpY3kjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBwb2xpY3lfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFbXB0eVwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogVXBkYXRlIFBvbGljeVxuICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlIFBvbGljeVxuICAgKlxuICAgKiBVcGRhdGVzIHRoZSBwb2xpY3kgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBvciBpZC5cbiAgICovXG4gIHVwZGF0ZVBvbGljeToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE5hbWVkUG9saWN5XG4gICAgICAgICAqIEBleGFtcGxlIE5hbWVkUG9saWN5IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcG9saWN5X2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXBkYXRlUG9saWN5UmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBvbGljeUluZm9cIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCBQb2xpY3kgTG9nc1xuICAgKiBAZGVzY3JpcHRpb24gR2V0IFBvbGljeSBMb2dzXG4gICAqXG4gICAqIFJldHVybnMgdGhlIGxvZ3MgZm9yIHRoZSBnaXZlbiBwb2xpY3ksIHdpdGhpbiB0aGUgZ2l2ZW4gdGltZWZyYW1lLlxuICAgKi9cbiAgZ2V0UG9saWN5TG9nczoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBJZiB0aGUgYWN0dWFsIG51bWJlciBvZiByZXR1cm5lZCBpdGVtcyBtYXkgYmUgbGVzcyB0aGF0IHRoaXMsIGV2ZW4gaWYgdGhlcmUgZXhpc3QgbW9yZVxuICAgICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgICAqIGluc3BlY3QgdGhlIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnQgb2YgdGhlIHBhZ2UuICBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZzsgb3RoZXJ3aXNlLCBvbmx5IHNwZWNpZnkgYVxuICAgICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnN0YXJ0XCI/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE5hbWVkUG9saWN5XG4gICAgICAgICAqIEBleGFtcGxlIE5hbWVkUG9saWN5IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcG9saWN5X2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUG9saWN5TG9nc1JlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRQb2xpY3lMb2dzUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IFBvbGljeVxuICAgKiBAZGVzY3JpcHRpb24gR2V0IFBvbGljeVxuICAgKlxuICAgKiBSZXR1cm5zIHRoZSBzcGVjaWZpZWQgdmVyc2lvbiBvciBsYXRlc3Qgb2YgYSBuYW1lZCBwb2xpY3kgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBvciBpZC5cbiAgICovXG4gIGdldFBvbGljeToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE5hbWVkUG9saWN5XG4gICAgICAgICAqIEBleGFtcGxlIE5hbWVkUG9saWN5IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcG9saWN5X2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHBvbGljeSB2ZXJzaW9uLCBlaXRoZXIgJ2xhdGVzdCcgb3IgJ3Y8bnVtYmVyPicuXG4gICAgICAgICAqIEBleGFtcGxlIGxhdGVzdFxuICAgICAgICAgKi9cbiAgICAgICAgdmVyc2lvbjogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUG9saWN5SW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBJbnZva2UgUG9saWN5XG4gICAqIEBkZXNjcmlwdGlvbiBJbnZva2UgUG9saWN5XG4gICAqXG4gICAqIEludm9rZXMgdGhlIFtOYW1lZFBvbGljeV0gd2l0aCB0aGUgZ2l2ZW4gSUQgd2l0aCB0aGUgZ2l2ZW4gcmVxdWVzdCBpbmZvcm1hdGlvbi5cbiAgICogSXQgaXMgb25seSBzdXBwb3J0ZWQgZm9yIFdhc20gcG9saWNpZXMuXG4gICAqL1xuICBpbnZva2VQb2xpY3k6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBOYW1lZFBvbGljeVxuICAgICAgICAgKiBAZXhhbXBsZSBOYW1lZFBvbGljeSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHBvbGljeV9pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwb2xpY3kgdmVyc2lvbiwgZWl0aGVyICdsYXRlc3QnIG9yICd2PG51bWJlcj4nLlxuICAgICAgICAgKiBAZXhhbXBsZSBsYXRlc3RcbiAgICAgICAgICovXG4gICAgICAgIHZlcnNpb246IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJbnZva2VQb2xpY3lSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiSW52b2tlUG9saWN5UmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIFBvbGljeSBJbXBvcnQgS2V5XG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgUG9saWN5IEltcG9ydCBLZXlcbiAgICpcbiAgICogR2VuZXJhdGUgYW4gZXBoZW1lcmFsIGtleSB0aGF0IGEgY2xpZW50IGNhbiB1c2UgZm9yIGVuY3J5cHRpbmcgZGF0YSByZWxhdGVkIHRvIFdhc21cbiAgICogcG9saWNpZXMgKGUuZy4sIHBvbGljeSBzZWNyZXRzKS5cbiAgICovXG4gIGNyZWF0ZVBvbGljeUltcG9ydEtleToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkNyZWF0ZVBvbGljeUltcG9ydEtleVJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCB0aGUgb3JnLXdpZGUgcG9saWN5IHNlY3JldHMuXG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgdGhlIG9yZy13aWRlIHBvbGljeSBzZWNyZXRzLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgdGhpcyBvbmx5IHJldHVybnMgdGhlIGtleXMgZm9yIHRoZSBzZWNyZXRzLCBvbWl0aW5nIHRoZSB2YWx1ZXMuXG4gICAqIFRoZSB2YWx1ZXMgYXJlIHNlY3JldCBhbmQgYXJlIG5vdCBhY2Nlc3NpYmxlIG91dHNpZGUgV2FzbSBwb2xpY3kgZXhlY3V0aW9uLlxuICAgKi9cbiAgZ2V0UG9saWN5U2VjcmV0czoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBvbGljeVNlY3JldHNJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFVwZGF0ZSBvcmctbGV2ZWwgcG9saWN5IHNlY3JldHNcbiAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBvcmctbGV2ZWwgcG9saWN5IHNlY3JldHNcbiAgICpcbiAgICogVGhlIHByb3ZpZGVkIHNlY3JldHMgd2lsbCByZXBsYWNlIGFueSBleGlzdGluZyBvcmctbGV2ZWwgc2VjcmV0cy5cbiAgICogSXQgZmFpbHMgaWYgdGhlIHNlY3JldHMgd2VyZW4ndCBwcmV2aW91c2x5IGNyZWF0ZWQuXG4gICAqL1xuICB1cGRhdGVQb2xpY3lTZWNyZXRzOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVwZGF0ZVBvbGljeVNlY3JldHNSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUG9saWN5U2VjcmV0c0luZm9cIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENyZWF0ZSBvciBvdmVyd3JpdGUgYW4gb3JnLWxldmVsIHBvbGljeSBzZWNyZXRcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBvciBvdmVyd3JpdGUgYW4gb3JnLWxldmVsIHBvbGljeSBzZWNyZXRcbiAgICovXG4gIHNldFBvbGljeVNlY3JldDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgc2VjcmV0X25hbWU6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZXRQb2xpY3lTZWNyZXRSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUG9saWN5U2VjcmV0c0luZm9cIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIERlbGV0ZSBhbiBvcmctbGV2ZWwgcG9saWN5IHNlY3JldFxuICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIGFuIG9yZy1sZXZlbCBwb2xpY3kgc2VjcmV0XG4gICAqL1xuICBkZWxldGVQb2xpY3lTZWNyZXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIHNlY3JldF9uYW1lOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRW1wdHlcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQb2xpY3lTZWNyZXRzSW5mb1wiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogVXBsb2FkIFdhc20gUG9saWN5XG4gICAqIEBkZXNjcmlwdGlvbiBVcGxvYWQgV2FzbSBQb2xpY3lcbiAgICpcbiAgICogUmV0dXJucyBhIHNpZ25lZCBVUkwgZm9yIHVwbG9hZGluZyBhIHdhc20gcG9saWN5IHRvIEN1YmVTaWduZXIuIFRoZSBwb2xpY3kgd2lsbCBiZVxuICAgKiBkZWxldGVkIGlmIG5vdCBhdHRhY2hlZCB0byBhIFtOYW1lZFBvbGljeV0gc29vbiBhZnRlciB0aGUgdXBsb2FkIGhhcyBiZWVuIGNvbXBsZXRlZC5cbiAgICovXG4gIHVwbG9hZFdhc21Qb2xpY3k6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXBsb2FkV2FzbVBvbGljeVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJVcGxvYWRXYXNtUG9saWN5UmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBSb2xlc1xuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBSb2xlc1xuICAgKlxuICAgKiBSZXRyaWV2ZXMgYWxsIHJvbGVzIGluIGFuIG9yZ2FuaXphdGlvbiB0aGF0IHRoZSBjdXJyZW50IHVzZXIgaXMgYWxsb3dlZCB0byBhY2Nlc3MuXG4gICAqL1xuICBsaXN0Um9sZXM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEb24ndCBpbmNsdWRlIGtleXMgYW5kIHVzZXJzIGZvciBlYWNoIHJvbGUgKi9cbiAgICAgICAgc3VtbWFyaXplPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGFnaW5hdGVkTGlzdFJvbGVzUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIFJvbGVcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBSb2xlXG4gICAqXG4gICAqIENyZWF0ZXMgYSBuZXcgcm9sZSBpbiBhbiBvcmdhbml6YXRpb24uIFVubGVzcyB0aGUgbG9nZ2VkLWluIHVzZXJcbiAgICogaXMgdGhlIG93bmVyLCB0aGV5IGFyZSBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBuZXdseSBjcmVhdGVkIHJvbGUuXG4gICAqL1xuICBjcmVhdGVSb2xlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcmVxdWVzdCBib2R5IHRvIHNldCB0aGUgcm9sZSBuYW1lICovXG4gICAgcmVxdWVzdEJvZHk/OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNyZWF0ZVJvbGVSZXF1ZXN0XCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkNyZWF0ZVJvbGVSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBHZXQgUm9sZVxuICAgKiBAZGVzY3JpcHRpb24gR2V0IFJvbGVcbiAgICpcbiAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IGEgcm9sZSBpbiBhbiBvcmdhbml6YXRpb25cbiAgICovXG4gIGdldFJvbGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgc3VtbWFyaXplPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUm9sZUluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRGVsZXRlIFJvbGVcbiAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBSb2xlXG4gICAqXG4gICAqIERlbGV0ZXMgYSByb2xlIGluIGFuIG9yZ2FuaXphdGlvbi5cbiAgICpcbiAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBjYW4gcGVyZm9ybSB0aGlzIGFjdGlvbi5cbiAgICogQWRkaXRpb25hbGx5LCB0aGUgcm9sZSdzIGVkaXQgcG9saWN5IChpZiBzZXQpIG11c3QgcGVybWl0IHRoZSB1cGRhdGUuXG4gICAqL1xuICBkZWxldGVSb2xlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVtcHR5XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBVcGRhdGUgUm9sZVxuICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlIFJvbGVcbiAgICpcbiAgICogRW5hYmxlcyBvciBkaXNhYmxlcyBhIHJvbGUgKHRoaXMgcmVxdWlyZXMgdGhlIGBtYW5hZ2U6cm9sZTp1cGRhdGU6ZW5hYmxlYCBzY29wZSkuXG4gICAqIFVwZGF0ZXMgdGhlIHJvbGUncyBwb2xpY2llcyAodGhpcyByZXF1aXJlcyB0aGUgYG1hbmFnZTpyb2xlOnVwZGF0ZTpwb2xpY3lgIHNjb3BlKS5cbiAgICogVXBkYXRlcyB0aGUgcm9sZSdzIGVkaXQgcG9saWNpZXMgKHRoaXMgcmVxdWlyZXMgdGhlIGBtYW5hZ2U6cm9sZTp1cGRhdGU6ZWRpdFBvbGljeWAgc2NvcGUpLlxuICAgKlxuICAgKiBUaGUgdXNlciBtdXN0IGJlIGluIHRoZSByb2xlIG9yIGFuIG93bmVyIG9mIHRoZSBvcmdhbml6YXRpb24uXG4gICAqIEFkZGl0aW9uYWxseSwgdGhlIHJvbGUncyBlZGl0IHBvbGljeSAoaWYgc2V0KSBtdXN0IHBlcm1pdCB0aGUgdXBkYXRlLlxuICAgKi9cbiAgdXBkYXRlUm9sZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVcGRhdGVSb2xlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlJvbGVJbmZvXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBBZGQgS2V5c1xuICAgKiBAZGVzY3JpcHRpb24gQWRkIEtleXNcbiAgICpcbiAgICogQWRkcyBhIGxpc3Qgb2YgZXhpc3Rpbmcga2V5cyB0byBhbiBleGlzdGluZyByb2xlLlxuICAgKlxuICAgKiBUaGUga2V5IG93bmVyIGlzIGFsbG93ZWQgdG8gYWRkIHRoZWlyIGtleSB0byBhbnkgcm9sZSB0aGF0IHRoZXkgYXJlIGluLlxuICAgKlxuICAgKiBJbiBcIm9yZyBjdXN0b2R5XCIgbW9kZWwgb25seSwgb3JnIG93bmVycyBhcmUgYWxsb3dlZCB0byBhZGQgYW55IGtleSB0byBhbnkgcm9sZS5cbiAgICpcbiAgICogSW4gYWxsIGNhc2VzOiB0aGUgcm9sZSdzIGVkaXQgcG9saWN5LCBhcyB3ZWxsIGFzIHRoZSBlZGl0IHBvbGljeSBvZiBlYWNoIG9mIHRoZSBrZXlzLCBtdXN0IHBlcm1pdCB0aGUgdXBkYXRlLlxuICAgKlxuICAgKiBFYWNoIHJlcXVlc3QgdG8gdGhpcyBlbmRwb2ludCBjYW4gYWRkLCBhdCBtYXhpbXVtLCAzMiBrZXlzLlxuICAgKi9cbiAgYWRkS2V5c1RvUm9sZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBZGRLZXlzVG9Sb2xlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQWRkIFVzZXJcbiAgICogQGRlc2NyaXB0aW9uIEFkZCBVc2VyXG4gICAqXG4gICAqIEFkZHMgYW4gZXhpc3RpbmcgdXNlciB0byBhbiBleGlzdGluZyByb2xlLlxuICAgKlxuICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIG9yIG9yZyBvd25lcnMgY2FuIGFkZCB1c2VycyB0byBhIHJvbGUuXG4gICAqIEFkZGl0aW9uYWxseSwgdGhlIHJvbGUncyBlZGl0IHBvbGljeSAoaWYgc2V0KSBtdXN0IHBlcm1pdCB0aGUgdXBkYXRlLlxuICAgKi9cbiAgYWRkVXNlclRvUm9sZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBVc2VyXG4gICAgICAgICAqIEBleGFtcGxlIFVzZXIjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRW1wdHlcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEF0dGVzdCB0byBSb2xlIFByb3BlcnRpZXNcbiAgICogQGRlc2NyaXB0aW9uIEF0dGVzdCB0byBSb2xlIFByb3BlcnRpZXNcbiAgICpcbiAgICogVGhlIHJlc3BvbnNlIGlzIGEgSldUIHdob3NlIGNsYWltcyBhcmUgdGhlIHJlcXVlc3RlZCByb2xlIHByb3BlcnRpZXMuXG4gICAqL1xuICBhdHRlc3RSb2xlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gUm9sZSBwcm9wZXJ0aWVzIHRvIGluY2x1ZGUgaW4gYW4gYXR0ZXN0YXRpb24uIERlZmF1bHRzIHRvIGJhc2ljIHJvbGVcbiAgICAgICAgICogcHJvcGVydGllcywgaW5jbHVkaW5nIGFzc29jaWF0ZWQgdXNlcnMsIGJ1dCBleGNsdWRpbmcgYXNzb2NpYXRlZCBrZXlzLlxuICAgICAgICAgKi9cbiAgICAgICAgdmVyYm9zaXR5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSb2xlQXR0ZXN0YXRpb25WZXJib3NpdHlcIl07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gQXNzb2NpYXRlZCBrZXlzIGZpbHRlciwgaS5lLiwgd2hlbiBzcGVjaWZpZWQsIG91dCBhbGwgb3RoZXIgYXNzb2NpYXRlZFxuICAgICAgICAgKiBrZXlzIGFyZSBmaWx0ZXJlZCBvdXQuIERlZmF1bHRzIHRvIGluY2x1ZGluZyBhbGwgYXNzb2NpYXRlZCBrZXlzLlxuICAgICAgICAgKi9cbiAgICAgICAga2V5X2ZpbHRlcj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlJvbGVJbmZvSnd0XCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3QgUm9sZSBLZXlzXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IFJvbGUgS2V5c1xuICAgKlxuICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIGFsbCBrZXlzIGluIGEgcm9sZS5cbiAgICovXG4gIGxpc3RSb2xlS2V5czoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBJZiB0aGUgYWN0dWFsIG51bWJlciBvZiByZXR1cm5lZCBpdGVtcyBtYXkgYmUgbGVzcyB0aGF0IHRoaXMsIGV2ZW4gaWYgdGhlcmUgZXhpc3QgbW9yZVxuICAgICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgICAqIGluc3BlY3QgdGhlIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnQgb2YgdGhlIHBhZ2UuICBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZzsgb3RoZXJ3aXNlLCBvbmx5IHNwZWNpZnkgYVxuICAgICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnN0YXJ0XCI/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZExpc3RSb2xlS2V5c1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCBhIEtleSBpbiBSb2xlXG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgYSBLZXkgaW4gUm9sZVxuICAgKlxuICAgKiBSZXR1cm5zIHRoZSBrZXktaW4tcm9sZSBpbmZvcm1hdGlvbiBmb3IgYSBnaXZlbiBrZXkgYW5kIHJvbGUuIElmIGBkZXRhaWxzYCBpcyBzZXQgdG8gYHRydWVgLFxuICAgKiB0aGlzIGVuZHBvaW50IHJldHVybnMgZGV0YWlsZWQga2V5IGluZm9ybWF0aW9uLlxuICAgKi9cbiAgZ2V0Um9sZUtleToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdG8gaW5jbHVkZSBkZXRhaWxlZCBrZXkgaW5mb3JtYXRpb25cbiAgICAgICAgICogQGV4YW1wbGUgdHJ1ZVxuICAgICAgICAgKi9cbiAgICAgICAgZGV0YWlscz86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBLZXlcbiAgICAgICAgICogQGV4YW1wbGUgS2V5IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJLZXlJblJvbGVJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFJlbW92ZSBLZXlcbiAgICogQGRlc2NyaXB0aW9uIFJlbW92ZSBLZXlcbiAgICpcbiAgICogUmVtb3ZlcyBhIGdpdmVuIGtleSBmcm9tIGEgcm9sZS5cbiAgICpcbiAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBvciBvcmcgb3duZXJzIGNhbiByZW1vdmUga2V5cyBmcm9tIGEgcm9sZS5cbiAgICogQWRkaXRpb25hbGx5LCBib3RoIHRoZSByb2xlJ3MgYW5kIHRoZSBrZXkncyBlZGl0IHBvbGljeSBtdXN0IHBlcm1pdCB0aGUgdXBkYXRlLlxuICAgKi9cbiAgcmVtb3ZlS2V5RnJvbVJvbGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgS2V5XG4gICAgICAgICAqIEBleGFtcGxlIEtleSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVtcHR5XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDcmVhdGUgVG9rZW5cbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBUb2tlblxuICAgKlxuICAgKiBDcmVhdGVzIGEgbmV3IGFjY2VzcyB0b2tlbiBmb3IgYSBnaXZlbiByb2xlICh0byBiZSB1c2VkIGFzIFwiQVBJIEtleVwiIGZvciBhbGwgc2lnbmluZyBhY3Rpb25zKS5cbiAgICogVGhlIGByZXN0cmljdGVkX2FjdGlvbnNgIGZpZWxkIG9uIHRoZSBbUm9sZV0gZGV0ZXJtaW5lcyB0aGUgbWVtYmVyc2hpcCByb2xlIHRoYXQgaXMgcmVxdWlyZWQgdG9cbiAgICogY3JlYXRlIHRva2Vucy5cbiAgICovXG4gIGNyZWF0ZVJvbGVUb2tlbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDcmVhdGVUb2tlblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJOZXdTZXNzaW9uUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBIaXN0b3JpY2FsIFRyYW5zYWN0aW9uc1xuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBIaXN0b3JpY2FsIFRyYW5zYWN0aW9uc1xuICAgKlxuICAgKiBSZXR1cm5zIGEgc29ydGVkLCBwYWdpbmF0ZWQgbGlzdCBvZiB0cmFuc2FjdGlvbnMgc2lnbmVkIGJ5IHRoZSBnaXZlbiByb2xlLFxuICAgKiBvcmRlcmVkIGZyb20gbW9zdCByZWNlbnQgZmlyc3QuXG4gICAqL1xuICBsaXN0SGlzdG9yaWNhbFJvbGVUeDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBJZiB0aGUgYWN0dWFsIG51bWJlciBvZiByZXR1cm5lZCBpdGVtcyBtYXkgYmUgbGVzcyB0aGF0IHRoaXMsIGV2ZW4gaWYgdGhlcmUgZXhpc3QgbW9yZVxuICAgICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgICAqIGluc3BlY3QgdGhlIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnQgb2YgdGhlIHBhZ2UuICBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZzsgb3RoZXJ3aXNlLCBvbmx5IHNwZWNpZnkgYVxuICAgICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnN0YXJ0XCI/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZExpc3RIaXN0b3JpY2FsVHhSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IFJvbGUgVXNlcnMuXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IFJvbGUgVXNlcnMuXG4gICAqXG4gICAqIFJldHVybnMgYW4gYXJyYXkgb2YgYWxsIHVzZXJzIHdobyBoYXZlIGFjY2VzcyB0byBhIHJvbGUuXG4gICAqL1xuICBsaXN0Um9sZVVzZXJzOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgICAqIGRhdGEgaW4gdGhlIHJlc3VsdCBzZXQuIFRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBtb3JlIGRhdGEgaXMgbGVmdCBpbiB0aGUgcmVzdWx0IHNldCxcbiAgICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc2l6ZVwiPzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgICAqIHRoZSBleGFjdCB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc3RhcnRcIj86IHN0cmluZyB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGFnaW5hdGVkTGlzdFJvbGVVc2Vyc1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFJlbW92ZSBVc2VyXG4gICAqIEBkZXNjcmlwdGlvbiBSZW1vdmUgVXNlclxuICAgKlxuICAgKiBSZW1vdmVzIGFuIGV4aXN0aW5nIHVzZXIgZnJvbSBhbiBleGlzdGluZyByb2xlLlxuICAgKlxuICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIG9yIG9yZyBvd25lcnMgY2FuIHJlbW92ZSB1c2VycyBmcm9tIGEgcm9sZS5cbiAgICogQWRkaXRpb25hbGx5LCB0aGUgcm9sZSdzIGVkaXQgcG9saWN5IChpZiBzZXQpIG11c3QgcGVybWl0IHRoZSB1cGRhdGUuXG4gICAqL1xuICByZW1vdmVVc2VyRnJvbVJvbGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgVXNlclxuICAgICAgICAgKiBAZXhhbXBsZSBVc2VyIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVtcHR5XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IHNlc3Npb25zXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IHNlc3Npb25zXG4gICAqXG4gICAqIElmIG5vIHF1ZXJ5IHBhcmFtZXRlcnMgYXJlIHByb3ZpZGVkLCBhbGwgYWN0aXZlIHNlc3Npb25zIGZvciB0aGUgY3VycmVudCB1c2VyIGFyZSByZXR1cm5lZC5cbiAgICpcbiAgICogSWYgYSBgcm9sZWAgcXVlcnkgcGFyYW1ldGVyIGlzIHByb3ZpZGVkLCBhbGwgYWN0aXZlIHNlc3Npb25zIGZvciB0aGUgc2VsZWN0ZWQgcm9sZSBhcmUgcmV0dXJuZWRcbiAgICogKGFzc2VydGluZyBmaXJzdCB0aGF0IHRoZSBjdXJyZW50IHVzZXIgaGFzIHBlcm1pc3Npb25zIHRvIHJlYWQgc2Vzc2lvbnMgZm9yIHRoYXQgcm9sZSkuXG4gICAqL1xuICBsaXN0U2Vzc2lvbnM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBwcm92aWRlZCwgdGhlIG5hbWUgb3IgSUQgb2YgYSByb2xlIHRvIG9wZXJhdGUgb24uXG4gICAgICAgICAqIENhbm5vdCBiZSBzcGVjaWZpZWQgdG9nZXRoZXIgd2l0aCBgdXNlcmAuXG4gICAgICAgICAqIEBleGFtcGxlIG15LXJvbGVcbiAgICAgICAgICovXG4gICAgICAgIHJvbGU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHByb3ZpZGVkLCB0aGUgSUQgb2YgYSB1c2VyIHRvIG9wZXJhdGUgb24uXG4gICAgICAgICAqIENhbm5vdCBiZSBzcGVjaWZpZWQgdG9nZXRoZXIgd2l0aCBgcm9sZWAuXG4gICAgICAgICAqIEBleGFtcGxlIFVzZXIjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICB1c2VyPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRTZXNzaW9uc1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENyZWF0ZSBuZXcgdXNlciBzZXNzaW9uIChtYW5hZ2VtZW50IGFuZC9vciBzaWduaW5nKVxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIG5ldyB1c2VyIHNlc3Npb24gKG1hbmFnZW1lbnQgYW5kL29yIHNpZ25pbmcpXG4gICAqXG4gICAqIENyZWF0ZXMgYSBuZXcgdXNlciBzZXNzaW9uLCBzaWxlbnRseSB0cnVuY2F0aW5nIHJlcXVlc3RlZCBzZXNzaW9uIGFuZCBhdXRoIGxpZmV0aW1lcyB0byBiZSBhdFxuICAgKiBtb3N0IHJlcXVlc3RvcidzIHNlc3Npb24gYW5kIGF1dGggbGlmZXRpbWUsIHJlc3BlY3RpdmVseS4gVG8gZXh0ZW5kIHRoZSByZXF1ZXN0ZWQgbGlmZXRpbWVzIHBhc3RcbiAgICogdGhlIHJlcXVlc3RvcidzLCBzZXQgdGhlIGBleHRlbmRfbGlmZXRpbWVzYCBmbGFnIGluIHRoZSByZXF1ZXN0IGJvZHkgKGluIHdoaWNoIGNhc2UgTUZBIHdpbGxcbiAgICogYmUgcmVxdWlyZWQpLlxuICAgKi9cbiAgY3JlYXRlU2Vzc2lvbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDcmVhdGVTZXNzaW9uUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIk5ld1Nlc3Npb25SZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZXZva2UgQUxMIGV4aXN0aW5nIHVzZXIgb3Igcm9sZSBzZXNzaW9uKHMpXG4gICAqIEBkZXNjcmlwdGlvbiBSZXZva2UgQUxMIGV4aXN0aW5nIHVzZXIgb3Igcm9sZSBzZXNzaW9uKHMpXG4gICAqXG4gICAqIEltbWVkaWF0ZWx5IHJldm9rZXMgZXhpc3Rpbmcgc2Vzc2lvbnMsIHByZXZlbnRpbmcgdGhlbSBmcm9tIGJlaW5nIHVzZWQgb3IgcmVmcmVzaGVkLlxuICAgKlxuICAgKiBJZiBubyBxdWVyeSBwYXJhbXMgYXJlIHByb3ZpZGVkLCAqKkFMTCoqIHNlc3Npb25zIGZvciB0aGUgKipDVVJSRU5UIFVTRVIqKiBhcmUgcmV2b2tlZFxuICAgKiAodG8gcmV2b2tlIGp1c3QgdGhlIGN1cnJlbnQgdXNlciBzZXNzaW9uLCB1c2UgYERFTEVURSAvdjAvb3JnLzxvcmdfaWQ+L3Nlc3Npb24vc2VsZmApXG4gICAqXG4gICAqIElmIGEgYHJvbGVgIHF1ZXJ5IHBhcmFtZXRlciBpcyBwcm92aWRlZCwgKipBTEwqKiBzZXNzaW9uIGZvciAqKlRIQVQgUk9MRSoqIGFyZSByZXZva2VkXG4gICAqIChpZiB0aGUgY3VycmVudCB1c2VyIGhhcyBwZXJtaXNzaW9ucyB0byByZXZva2Ugc2Vzc2lvbnMgZm9yIHRoZSByb2xlKS5cbiAgICovXG4gIHJldm9rZVNlc3Npb25zOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgcHJvdmlkZWQsIHRoZSBuYW1lIG9yIElEIG9mIGEgcm9sZSB0byBvcGVyYXRlIG9uLlxuICAgICAgICAgKiBDYW5ub3QgYmUgc3BlY2lmaWVkIHRvZ2V0aGVyIHdpdGggYHVzZXJgLlxuICAgICAgICAgKiBAZXhhbXBsZSBteS1yb2xlXG4gICAgICAgICAqL1xuICAgICAgICByb2xlPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBwcm92aWRlZCwgdGhlIElEIG9mIGEgdXNlciB0byBvcGVyYXRlIG9uLlxuICAgICAgICAgKiBDYW5ub3QgYmUgc3BlY2lmaWVkIHRvZ2V0aGVyIHdpdGggYHJvbGVgLlxuICAgICAgICAgKiBAZXhhbXBsZSBVc2VyIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgdXNlcj86IHN0cmluZyB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU2Vzc2lvbnNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZXZva2UgY3VycmVudCBzZXNzaW9uXG4gICAqIEBkZXNjcmlwdGlvbiBSZXZva2UgY3VycmVudCBzZXNzaW9uXG4gICAqXG4gICAqIEltbWVkaWF0ZWx5IHJldm9rZXMgdGhlIGN1cnJlbnQgc2Vzc2lvbiwgcHJldmVudGluZyBpdCBmcm9tIGJlaW5nIHVzZWQgb3IgcmVmcmVzaGVkXG4gICAqL1xuICByZXZva2VDdXJyZW50U2Vzc2lvbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBHZXQgc2Vzc2lvbiBpbmZvcm1hdGlvblxuICAgKiBAZGVzY3JpcHRpb24gR2V0IHNlc3Npb24gaW5mb3JtYXRpb25cbiAgICovXG4gIGdldFNlc3Npb246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBzZXNzaW9uIHRvIGdldCBvciAnc2VsZicgZm9yIGN1cnJlbnQgc2Vzc2lvblxuICAgICAgICAgKiBAZXhhbXBsZSAxYzBkODUzZC1jMTVmLTQyZGMtYTgyYy05ODc0ZTU4OWJjNzVcbiAgICAgICAgICovXG4gICAgICAgIHNlc3Npb25faWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlNlc3Npb25JbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFJldm9rZSBhIHNlc3Npb25cbiAgICogQGRlc2NyaXB0aW9uIFJldm9rZSBhIHNlc3Npb25cbiAgICpcbiAgICogSW1tZWRpYXRlbHkgcmV2b2tlcyBhbiBleGlzdGluZyBzZXNzaW9uLCBwcmV2ZW50aW5nIGl0IGZyb20gYmVpbmcgdXNlZCBvciByZWZyZXNoZWRcbiAgICovXG4gIHJldm9rZVNlc3Npb246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBzZXNzaW9uIHRvIHJldm9rZVxuICAgICAgICAgKiBAZXhhbXBsZSA3N2FhZDIxMDBjMzYxZjQ5NzYzNWRkMDA1YzRkMTU3ODFlMmU1ZGY0YjlmNDVkOGU3NGYzNzQyNWNiYzMwYjllXG4gICAgICAgICAqL1xuICAgICAgICBzZXNzaW9uX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJTZXNzaW9uSW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIFNvbGFuYSBNZXNzYWdlXG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIFNvbGFuYSBNZXNzYWdlXG4gICAqXG4gICAqIFNpZ25zIGEgU29sYW5hIG1lc3NhZ2Ugd2l0aCBhIGdpdmVuIGtleS5cbiAgICogVGhpcyBpcyBhIHByZS1yZWxlYXNlIGZlYXR1cmUuXG4gICAqL1xuICBzb2xhbmFTaWduOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBiYXNlNTgtZW5jb2RlZCBwdWJsaWMga2V5XG4gICAgICAgICAqIEBleGFtcGxlIDg2WlJQc3pCcDVFb1BqN3dSM2JIbjd3bkFaNWlZZnBhc1JjN0RLRlBUVWFaXG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTb2xhbmFTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlNpZ25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogU2lnbiBhIHNlcmlhbGl6ZWQgU1VJIHRyYW5zYWN0aW9uLlxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBhIHNlcmlhbGl6ZWQgU1VJIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICovXG4gIHN1aVNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgU1VJIGtleSBhZGRyZXNzXG4gICAgICAgICAqIEBleGFtcGxlIDB4ZGQ2OGQzNWE3NzhkYjFlMzEyM2M5NTBlNWRiNTM2MTMzM2Y1NzczM2E3NzQ4NmE3MDRkZDhjOTk0ZDk2NzYxZFxuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU3VpU2lnblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gYSB0ZW5kZXJtaW50IG1lc3NhZ2UuXG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIGEgdGVuZGVybWludCBtZXNzYWdlLlxuICAgKlxuICAgKiBTaWducyB0aGUgZ2l2ZW4gYmFzZS02NCBlbmNvZGVkIHZvdGUgb3IgcHJvcG9zYWwgd2l0aCB0aGUgZ2l2ZW4gdGVuZGVybWludCBrZXkuXG4gICAqL1xuICB0ZW5kZXJtaW50U2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCB2YWxpZGF0b3IgcHVibGljIGtleSB3aXRoIDB4IHByZWZpeFxuICAgICAgICAgKiBAZXhhbXBsZSAweDdkOGQzNDRlNmU1MzE1MTY5MmZhNzhhMDk4NjMwNzk5OTQ2YWQ0ZDZhMDI3YWU2YmNkN2E3OGRjNzgyODE2NTBcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRlbmRlcm1pbnRTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlNpZ25SZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBHZXQgVG9rZW4tQWNjZXNzaWJsZSBLZXlzXG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgVG9rZW4tQWNjZXNzaWJsZSBLZXlzXG4gICAqXG4gICAqIFJldHJpZXZlcyB0aGUga2V5cyB0aGF0IGEgdXNlciBvciByb2xlIHNlc3Npb24gY2FuIGFjY2Vzcy5cbiAgICovXG4gIGxpc3RUb2tlbktleXM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJLZXlJbmZvc1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBVc2VyIEluZm9cbiAgICogQGRlc2NyaXB0aW9uIFVzZXIgSW5mb1xuICAgKlxuICAgKiBSZXRyaWV2ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgdXNlci5cbiAgICovXG4gIGFib3V0TWU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJVc2VySW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBJbml0aWF0ZSBSZXNldCBWZXJpZmllZCBFbWFpbCBGbG93XG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSBSZXNldCBWZXJpZmllZCBFbWFpbCBGbG93XG4gICAqL1xuICB1c2VyUmVzZXRFbWFpbEluaXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRW1haWxSZXNldFJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbWFpbE90cFJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEZpbmFsaXplIGEgUmVzZXQgVmVyaWZpZWQgRW1haWwgRmxvd1xuICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgYSBSZXNldCBWZXJpZmllZCBFbWFpbCBGbG93XG4gICAqL1xuICB1c2VyUmVzZXRFbWFpbENvbXBsZXRlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVtYWlsT3RwQW5zd2VyXCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3Qgb3V0c3RhbmRpbmcgdXNlci1leHBvcnQgcmVxdWVzdHNcbiAgICogQGRlc2NyaXB0aW9uIExpc3Qgb3V0c3RhbmRpbmcgdXNlci1leHBvcnQgcmVxdWVzdHNcbiAgICovXG4gIHVzZXJFeHBvcnRMaXN0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgICAqIGRhdGEgaW4gdGhlIHJlc3VsdCBzZXQuIFRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBtb3JlIGRhdGEgaXMgbGVmdCBpbiB0aGUgcmVzdWx0IHNldCxcbiAgICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc2l6ZVwiPzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgICAqIHRoZSBleGFjdCB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc3RhcnRcIj86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgcHJvdmlkZWQsIHRoZSB1c2VyLWlkIHdob3NlIHVzZXItZXhwb3J0IHJlcXVlc3RzIHRvIGxpc3QuIERlZmF1bHRzIHRvIHRoZVxuICAgICAgICAgKiBjdXJyZW50IHVzZXIuICBPbmx5IHRoZSBvcmcgb3duZXIgbWF5IGxpc3QgcmVxdWVzdHMgZm9yIGFub3RoZXIgdXNlci5cbiAgICAgICAgICogQGV4YW1wbGUgVXNlciM4MDZjOTU0NC1mMWZhLTRiYWQtOGQ0ZC0xMDk3YTE4NDQ3MjZcbiAgICAgICAgICovXG4gICAgICAgIHVzZXJfaWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHByb3ZpZGVkLCB0aGUga2V5LWlkIGZvciB3aGljaCB0byBsaXN0IGFuIGV4aXN0aW5nIHVzZXItZXhwb3J0IHJlcXVlc3QuXG4gICAgICAgICAqIEBleGFtcGxlIEtleSMweDNjNGQ5MENjNUFmMTY0NEMzQTNCMDEzQmFhNTQ4ODk5NzM4MUQ3QzhcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZD86IHN0cmluZyB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGFnaW5hdGVkVXNlckV4cG9ydExpc3RSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBJbml0aWF0ZSBhIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIGEgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgKlxuICAgKiBUaGlzIHN0YXJ0cyBhIGRlbGF5ICh3aG9zZSBsZW5ndGggaXMgZGV0ZXJtaW5lZCBieSBPcmctd2lkZSBzZXR0aW5ncylcbiAgICogYmVmb3JlIGV4cG9ydCBjYW4gYmUgY29tcGxldGVkLCBhbmQgcmV0dXJucyBhIHRpY2tldCB0aGF0IGNhbiBiZSB1c2VkXG4gICAqIHRvIGNvbXBsZXRlIHRoZSBleHBvcnQgb25jZSB0aGUgdGltZXIgaGFzIGV4cGlyZWQuXG4gICAqXG4gICAqIE9ubHkgb25lIHVzZXItZXhwb3J0IHJlcXVlc3QgY2FuIGJlIGFjdGl2ZSBmb3IgYSBnaXZlbiBrZXkuIElmIHRoZXJlXG4gICAqIGlzIGFscmVhZHkgYW4gYWN0aXZlIGV4cG9ydCwgdGhpcyBlbmRwb2ludCB3aWxsIHJldHVybiBhbiBlcnJvci4gVG9cbiAgICogY3JlYXRlIGEgbmV3IHJlcXVlc3QsIGZpcnN0IGRlbGV0ZSB0aGUgZXhpc3Rpbmcgb25lLlxuICAgKi9cbiAgdXNlckV4cG9ydEluaXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckV4cG9ydEluaXRSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVXNlckV4cG9ydEluaXRSZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRGVsZXRlIGFuIGV4aXN0aW5nIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBhbiBleGlzdGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAqL1xuICB1c2VyRXhwb3J0RGVsZXRlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUga2V5LWlkIHdob3NlIGV4cG9ydCByZXF1ZXN0IHNob3VsZCBiZSBkZWxldGVkXG4gICAgICAgICAqIEBleGFtcGxlIEtleSMweDNjNGQ5MENjNUFmMTY0NEMzQTNCMDEzQmFhNTQ4ODk5NzM4MUQ3QzhcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1c2VyLWlkIHdobyBvd25zIHRoaXMgcmVxdWVzdC4gSWYgb21pdHRlZCwgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgdXNlci5cbiAgICAgICAgICogT25seSB0aGUgb3JnIG93bmVyIG1heSBkZWxldGUgdXNlci1leHBvcnQgcmVxdWVzdHMgZm9yIGFub3RoZXIgdXNlci5cbiAgICAgICAgICogQGV4YW1wbGUgVXNlciM4MDZjOTU0NC1mMWZhLTRiYWQtOGQ0ZC0xMDk3YTE4NDQ3MjZcbiAgICAgICAgICovXG4gICAgICAgIHVzZXJfaWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDb21wbGV0ZSBhIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIENvbXBsZXRlIGEgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgKlxuICAgKiBUaGlzIGVuZHBvaW50IGNhbiBiZSBjYWxsZWQgb25seSBhZnRlciBpbml0aWF0aW5nIGEgdXNlci1leHBvcnQgcmVxdWVzdCB2aWFcbiAgICogdGhlIGB1c2VyX2V4cG9ydF9pbml0YCBBUEksIGFuZCBvbmx5IHdpdGhpbiB0aGUgc3Vic2VxdWVudCBleHBvcnQgd2luZG93XG4gICAqIChpLmUuLCBhZnRlciB0aGUgZXhwb3J0IGRlbGF5IGhhcyBwYXNzZWQgYW5kIGJlZm9yZSB0aGUgcmVxdWVzdCBoYXMgZXhwaXJlZCkuXG4gICAqXG4gICAqIFRvIGNoZWNrIG9uIHRoZSBzdGF0dXMgb2YgYW4gZXhwb3J0IHJlcXVlc3QsIHNlZSB0aGUgYHVzZXJfZXhwb3J0X2xpc3RgIEFQSS5cbiAgICovXG4gIHVzZXJFeHBvcnRDb21wbGV0ZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VyRXhwb3J0Q29tcGxldGVSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVXNlckV4cG9ydENvbXBsZXRlUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEluaXRpYXRlIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5LlxuICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXkuXG4gICAqXG4gICAqIElmIGEgZGlzY292ZXJhYmxlIGtleSBpcyByZXF1ZXN0ZWQsIHVzZXIgdmVyaWZpY2F0aW9uIChQSU4pIGlzIHJlcXVpcmVkLlxuICAgKlxuICAgKiBHZW5lcmF0ZXMgYSBjaGFsbGVuZ2UgdGhhdCBtdXN0IGJlIGFuc3dlcmVkIHRvIHByb3ZlIG93bmVyc2hpcCBvZiBhIGtleS5cbiAgICovXG4gIHVzZXJSZWdpc3RlckZpZG9Jbml0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkZpZG9DcmVhdGVSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRmlkb0NyZWF0ZUNoYWxsZW5nZVJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBGaW5hbGl6ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICpcbiAgICogQWNjZXB0cyB0aGUgcmVzcG9uc2UgdG8gdGhlIGNoYWxsZW5nZSBnZW5lcmF0ZWQgYnkgdGhlIFBPU1QgdG8gdGhpcyBlbmRwb2ludC5cbiAgICovXG4gIHVzZXJSZWdpc3RlckZpZG9Db21wbGV0ZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJGaWRvQ3JlYXRlQ2hhbGxlbmdlQW5zd2VyXCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIERlbGV0ZSBGSURPIGtleVxuICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIEZJRE8ga2V5XG4gICAqXG4gICAqIERlbGV0ZXMgYSBGSURPIGtleSBmcm9tIHRoZSB1c2VyJ3MgYWNjb3VudCAoaWYgdGhlIGtleSBpcyBub3QgdGhlIHNvbGUgTUZBIGZhY3RvcikuIE1GQSBpcyBhbHdheXMgcmVxdWlyZWQuXG4gICAqL1xuICB1c2VyRGVsZXRlRmlkbzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIEZpZG9LZXlcbiAgICAgICAgICogQGV4YW1wbGUgRmlkb0tleSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGZpZG9faWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFbXB0eVwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW5pdGlhbGl6ZSBUT1RQIFJlc2V0XG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWFsaXplIFRPVFAgUmVzZXRcbiAgICpcbiAgICogQ3JlYXRlcyBhIG5ldyBUT1RQIGNoYWxsZW5nZSB0aGF0IG11c3QgYmUgYW5zd2VyZWQgdG8gcHJvdmUgdGhhdCB0aGUgbmV3IFRPVFBcbiAgICogd2FzIHN1Y2Nlc3NmdWxseSBpbXBvcnRlZCBpbnRvIGFuIGF1dGhlbnRpY2F0b3IgYXBwLlxuICAgKlxuICAgKiBUaGlzIG9wZXJhdGlvbiBpcyBhbGxvd2VkIGlmIEVJVEhFUlxuICAgKiAtIHRoZSB1c2VyIGFjY291bnQgaXMgbm90IHlldCBpbml0aWFsaXplZCBhbmQgbm8gVE9UUCBpcyBhbHJlYWR5IHNldCwgT1JcbiAgICogLSB0aGUgdXNlciBoYXMgbm90IGNvbmZpZ3VyZWQgYW55IGF1dGggZmFjdG9ycztcbiAgICogb3RoZXJ3aXNlLCBNRkEgaXMgcmVxdWlyZWQuXG4gICAqL1xuICB1c2VyUmVzZXRUb3RwSW5pdDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keT86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG90cFJlc2V0UmVxdWVzdFwiXSB8IG51bGw7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJUb3RwSW5mb1wiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRGVsZXRlIFRPVFBcbiAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBUT1RQXG4gICAqXG4gICAqIERlbGV0ZXMgVE9UUCBmcm9tIHRoZSB1c2VyJ3MgYWNjb3VudCAoaWYgVE9UUCBpcyBub3QgdGhlIHNvbGUgTUZBIGZhY3RvcikuIE1GQSBpcyBhbHdheXMgcmVxdWlyZWQuXG4gICAqL1xuICB1c2VyRGVsZXRlVG90cDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFbXB0eVwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRmluYWxpemUgcmVzZXR0aW5nIFRPVFBcbiAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIHJlc2V0dGluZyBUT1RQXG4gICAqXG4gICAqIENoZWNrcyBpZiB0aGUgcmVzcG9uc2UgY29udGFpbnMgdGhlIGNvcnJlY3QgVE9UUCBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlXG4gICAqIGNoYWxsZW5nZSBnZW5lcmF0ZWQgYnkgdGhlIFBPU1QgbWV0aG9kIG9mIHRoaXMgZW5kcG9pbnQuXG4gICAqL1xuICB1c2VyUmVzZXRUb3RwQ29tcGxldGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG90cENoYWxsZW5nZUFuc3dlclwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBWZXJpZnkgVE9UUFxuICAgKiBAZGVzY3JpcHRpb24gVmVyaWZ5IFRPVFBcbiAgICpcbiAgICogQ2hlY2tzIGlmIGEgZ2l2ZW4gY29kZSBtYXRjaGVzIHRoZSBjdXJyZW50IFRPVFAgY29kZSBmb3IgdGhlIGN1cnJlbnQgdXNlci5cbiAgICogRXJyb3JzIHdpdGggNDAzIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIG5vdCBzZXQgdXAgVE9UUCBvciB0aGUgY29kZSBmYWlscyB2ZXJpZmljYXRpb24uXG4gICAqL1xuICB1c2VyVmVyaWZ5VG90cDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb3RwQXBwcm92ZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCB1c2VycyBpbiBvcmdhbml6YXRpb25cbiAgICogQGRlc2NyaXB0aW9uIExpc3QgdXNlcnMgaW4gb3JnYW5pemF0aW9uXG4gICAqXG4gICAqIElmIGEgcXVlcnkgaXMgZGVmaW5lZCwgdGhlIHJlc3VsdCB3aWxsIGNvbnRhaW4gb25seSB0aGUgdXNlcnMgd2hvc2UgbmFtZSBvclxuICAgKiBlbWFpbCBjb250YWluIHRoZSBxdWVyeSBzdHJpbmcuIE5PVEUgdGhhdCBpZiBwYWdpbmF0aW9uIGlzIHVzZWQgYW5kIGEgcGFnZVxuICAgKiBsaW1pdCBpcyBzZXQsIHRoZSByZXR1cm5lZCByZXN1bHQgc2V0IG1heSBjb250YWluIEZFV0VSIGVsZW1lbnRzIHRoYW4gdGhlXG4gICAqIHJlcXVlc3RlZCBwYWdlIGxpbWl0LlxuICAgKi9cbiAgbGlzdFVzZXJzSW5Pcmc6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIHF1ZXJ5IHN0cmluZy4gSWYgZGVmaW5lZCwgYWxsIHJldHVybmVkIHVzZXJzIHdpbGwgY29udGFpbiB0aGlzIHN0cmluZyBpbiB0aGVpciBuYW1lIG9yIGVtYWlsLiAqL1xuICAgICAgICBxPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRHZXRVc2Vyc0luT3JnUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQWRkIGEgdGhpcmQtcGFydHkgdXNlciB0byB0aGUgb3JnXG4gICAqIEBkZXNjcmlwdGlvbiBBZGQgYSB0aGlyZC1wYXJ0eSB1c2VyIHRvIHRoZSBvcmdcbiAgICovXG4gIGNyZWF0ZU9pZGNVc2VyOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFkZFRoaXJkUGFydHlVc2VyUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkFkZFRoaXJkUGFydHlVc2VyUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IHVzZXIgYnkgZW1haWwuXG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgdXNlciBieSBlbWFpbC5cbiAgICpcbiAgICogVGhlIHNlYXJjaCBpbmNsdWRlcyBhbGwgdXNlcnMgYW5kIHRoZWlyIHRoaXJkLXBhcnR5IGlkZW50aXRpZXMuXG4gICAqL1xuICBnZXRVc2VySW5PcmdCeUVtYWlsOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBlbWFpbCBhc3NvY2lhdGVkIHdpdGggdGhlIHVzZXIuICovXG4gICAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJHZXRVc2VyQnlFbWFpbFJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFJlbW92ZSBhIHRoaXJkLXBhcnR5IHVzZXIgZnJvbSB0aGUgb3JnXG4gICAqIEBkZXNjcmlwdGlvbiBSZW1vdmUgYSB0aGlyZC1wYXJ0eSB1c2VyIGZyb20gdGhlIG9yZ1xuICAgKi9cbiAgZGVsZXRlT2lkY1VzZXI6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT2lkY0lkZW50aXR5XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCBhIHVzZXIgYnkgdGhlaXIgT0lEQyBpZGVudGl0eVxuICAgKiBAZGVzY3JpcHRpb24gR2V0IGEgdXNlciBieSB0aGVpciBPSURDIGlkZW50aXR5XG4gICAqXG4gICAqIFJldHJpZXZlcyBhIHVzZXIgaW4gdGhlIG9yZ2FuaXphdGlvbiBieSB0aGVpciBPSURDIGlzc3VlciBhbmQgc3ViamVjdC5cbiAgICovXG4gIGdldFVzZXJJbk9yZ0J5T2lkYzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgT0lEQyBpc3N1ZXIuICovXG4gICAgICAgIGlzczogc3RyaW5nO1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBPSURDIHN1YmplY3QuICovXG4gICAgICAgIHN1Yjogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiR2V0VXNlckJ5T2lkY1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEluaXRpYWxpemUgTUZBIHJlc2V0IGZvciB1c2VyXG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWFsaXplIE1GQSByZXNldCBmb3IgdXNlclxuICAgKi9cbiAgcmVzZXRNZW1iZXJNZmE6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhUmVzZXRSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENvbXBsZXRlIE1GQSByZXNldCBmb3IgdXNlclxuICAgKiBAZGVzY3JpcHRpb24gQ29tcGxldGUgTUZBIHJlc2V0IGZvciB1c2VyXG4gICAqL1xuICBjb21wbGV0ZVJlc2V0TWVtYmVyTWZhOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbXBsZXRlTWZhUmVzZXRSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCB1c2VyIGJ5IGlkXG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgdXNlciBieSBpZFxuICAgKi9cbiAgZ2V0VXNlckluT3JnOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIFVzZXJcbiAgICAgICAgICogQGV4YW1wbGUgVXNlciMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlVzZXJJbk9yZ0luZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmVtb3ZlIGEgdXNlciBmcm9tIHRoZSBvcmdcbiAgICogQGRlc2NyaXB0aW9uIFJlbW92ZSBhIHVzZXIgZnJvbSB0aGUgb3JnXG4gICAqL1xuICBkZWxldGVVc2VyOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIFVzZXJcbiAgICAgICAgICogQGV4YW1wbGUgVXNlciMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBVcGRhdGUgYSB1c2VyJ3MgbWVtYmVyc2hpcCBpbiB0aGUgb3JnXG4gICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgYSB1c2VyJ3MgbWVtYmVyc2hpcCBpbiB0aGUgb3JnXG4gICAqXG4gICAqIEVuYWJsZS9kaXNhYmxlIGFub3RoZXIgdXNlciBpbiB0aGUgb3JnLCBvciBjaGFuZ2UgdGhlaXIgbWVtYmVyc2hpcCByb2xlLlxuICAgKi9cbiAgdXBkYXRlVXNlck1lbWJlcnNoaXA6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgVXNlclxuICAgICAgICAgKiBAZXhhbXBsZSBVc2VyIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVwZGF0ZVVzZXJNZW1iZXJzaGlwUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlVzZXJJbk9yZ0luZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW5pdGlhdGUgTG9naW4gd2l0aCBQYXNza2V5XG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSBMb2dpbiB3aXRoIFBhc3NrZXlcbiAgICpcbiAgICogVGhlIHJlc3BvbnNlIGNvbnRhaW5zIGEgRklETyBjaGFsbGVuZ2UgdGhhdCB0aGUgY2xpZW50IG11c3QgYW5zd2VyIHdpdGggYW55IG9mIHRoZWlyXG4gICAqIGRpc2NvdmVyYWJsZSBjcmVkZW50aWFscy4gIFRoZSBhbnN3ZXIgc2hvdWxkIGJlIHN1Ym1pdHRlZCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIFBBVENIIHJlcXVlc3QuXG4gICAqL1xuICBwYXNza2V5QXV0aEluaXQ6IHtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJMb2dpblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYXNza2V5QXNzZXJ0Q2hhbGxlbmdlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENvbXBsZXRlIExvZ2luIHdpdGggUGFzc2tleVxuICAgKiBAZGVzY3JpcHRpb24gQ29tcGxldGUgTG9naW4gd2l0aCBQYXNza2V5XG4gICAqXG4gICAqIFRoZSByZXF1ZXN0IHNob3VsZCBjb250YWluIGFuIGFuc3dlciB0byB0aGUgY2hhbGxlbmdlIGlzc3VlZCBieSB0aGUgY29ycmVzcG9uZGluZyBQT1NUIHJlcXVlc3QuXG4gICAqIFRoZSBjaGFsbGVuZ2UgbWF5IGJlIGFuc3dlcmVkIHdpdGggYW55IG9mIHRoZSB1c2VyJ3MgZGlzY292ZXJhYmxlIGNyZWRlbnRpYWxzOyBpZiB0aGUgY3JlZGVudGlhbFxuICAgKiBpbmNsdWRlZCBpbiB0aGUgYW5zd2VyIGlzIHJlZ2lzdGVyZWQgd2l0aCBhIHVzZXIgYW5kIGFuIG9yZ2FuaXphdGlvbiwgdGhlIHJlc3BvbnNlIHdpbGwgY29udGFpblxuICAgKiBhIEN1YmVTaWduZXIgc2Vzc2lvbiAod2l0aCB0aGUgcGFyYW1ldGVycyBzdXBwbGllZCBpbiB0aGUgcHJldmlvdXMgUE9TVCByZXF1ZXN0KSBmb3IgdGhhdCB1c2VyXG4gICAqIGluIHRoYXQgb3JnYW5pemF0aW9uLlxuICAgKi9cbiAgcGFzc2tleUF1dGhDb21wbGV0ZToge1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBhc3NrZXlBc3NlcnRBbnN3ZXJcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJOZXdTZXNzaW9uUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogVGhlIHBvbGljeV9leGVjdXRlIEFQSSBlbmRwb2ludCBpcyBpbnRlbmRlZCB0byBkZW1vbnN0cmF0ZSB0aGF0IHRoZSBzaWduZXJcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBwb2xpY3lfZXhlY3V0ZSBBUEkgZW5kcG9pbnQgaXMgaW50ZW5kZWQgdG8gZGVtb25zdHJhdGUgdGhhdCB0aGUgc2lnbmVyXG4gICAqIGNhbiB1c2UgdGhlIHBvbGljeSBlbmdpbmUsIGJ5IHdheSBvZiB0aGUgUG9saWN5RW5naW5lQ2xpZW50LlxuICAgKi9cbiAgXCJwb2xpY3ktZXhlY3V0ZVwiOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEJhc2U2NFVybC1ub3BhZCBvZiB0aGUgc2hhMjU2IGRpZ2VzdCBvZiB0aGUgcG9saWN5IGJpbmFyeVxuICAgICAgICAgKiBAZXhhbXBsZSAxMjM0NTZcbiAgICAgICAgICovXG4gICAgICAgIHBvbGljeV9uYW1lOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBvbGljeVJlc3VsdFJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEluaXRpYXRlIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAqIEBkZXByZWNhdGVkXG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgKlxuICAgKiBERVBSRUNBVEVELiBVc2UgYFBPU1QgL3YwL29yZy97b3JnX2lkfS91c2VyL21lL2ZpZG9gIGluc3RlYWQuXG4gICAqXG4gICAqIEdlbmVyYXRlcyBhIGNoYWxsZW5nZSB0aGF0IG11c3QgYmUgYW5zd2VyZWQgdG8gcHJvdmUgb3duZXJzaGlwIG9mIGEga2V5XG4gICAqL1xuICByZWdpc3RlckZpZG9Jbml0TGVnYWN5OiB7XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRmlkb0NyZWF0ZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJGaWRvQ3JlYXRlQ2hhbGxlbmdlUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEZpbmFsaXplIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAqIEBkZXByZWNhdGVkXG4gICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgKlxuICAgKiBERVBSRUNBVEVELiBVc2UgYFBBVENIIC92MC9vcmcve29yZ19pZH0vdXNlci9tZS9maWRvYCBpbnN0ZWFkLlxuICAgKlxuICAgKiBBY2NlcHRzIHRoZSByZXNwb25zZSB0byB0aGUgY2hhbGxlbmdlIGdlbmVyYXRlZCBieSB0aGUgUE9TVCB0byB0aGlzIGVuZHBvaW50LlxuICAgKi9cbiAgcmVnaXN0ZXJGaWRvQ29tcGxldGVMZWdhY3k6IHtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJGaWRvQ3JlYXRlQ2hhbGxlbmdlQW5zd2VyXCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEluaXRpYWxpemUgVE9UUCBSZXNldFxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhbGl6ZSBUT1RQIFJlc2V0XG4gICAqXG4gICAqIERFUFJFQ0FURUQuIFVzZSBgUE9TVCAvdjAvb3JnL3tvcmdfaWR9L3VzZXIvbWUvdG90cGAgaW5zdGVhZC5cbiAgICpcbiAgICogQ3JlYXRlcyBhIG5ldyBUT1RQIGNoYWxsZW5nZSB0aGF0IG11c3QgYmUgYW5zd2VyZWQgdG8gcHJvdmUgdGhhdCB0aGUgbmV3IFRPVFBcbiAgICogd2FzIHN1Y2Nlc3NmdWxseSBpbXBvcnRlZCBpbnRvIGFuIGF1dGhlbnRpY2F0b3IgYXBwLlxuICAgKlxuICAgKiBUaGlzIG9wZXJhdGlvbiBpcyBhbGxvd2VkIGlmIEVJVEhFUlxuICAgKiAtIHRoZSB1c2VyIGFjY291bnQgaXMgbm90IHlldCBpbml0aWFsaXplZCBhbmQgbm8gVE9UUCBpcyBhbHJlYWR5IHNldCwgT1JcbiAgICogLSB0aGUgdXNlciBoYXMgbm90IGNvbmZpZ3VyZWQgYW55IGF1dGggZmFjdG9ycztcbiAgICogb3RoZXJ3aXNlLCBNRkEgaXMgcmVxdWlyZWQuXG4gICAqL1xuICByZXNldFRvdHBJbml0TGVnYWN5OiB7XG4gICAgcmVxdWVzdEJvZHk/OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRvdHBSZXNldFJlcXVlc3RcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVG90cEluZm9cIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEZpbmFsaXplIHJlc2V0dGluZyBUT1RQXG4gICAqIEBkZXByZWNhdGVkXG4gICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSByZXNldHRpbmcgVE9UUFxuICAgKlxuICAgKiBERVBSRUNBVEVELiBVc2UgYFBBVENIIC92MC9vcmcve29yZ19pZH0vdXNlci9tZS90b3RwYCBpbnN0ZWFkLlxuICAgKlxuICAgKiBDaGVja3MgaWYgdGhlIHJlc3BvbnNlIGNvbnRhaW5zIHRoZSBjb3JyZWN0IFRPVFAgY29kZSBjb3JyZXNwb25kaW5nIHRvIHRoZVxuICAgKiBjaGFsbGVuZ2UgZ2VuZXJhdGVkIGJ5IHRoZSBQT1NUIG1ldGhvZCBvZiB0aGlzIGVuZHBvaW50LlxuICAgKi9cbiAgcmVzZXRUb3RwQ29tcGxldGVMZWdhY3k6IHtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb3RwQ2hhbGxlbmdlQW5zd2VyXCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFZlcmlmeSBUT1RQXG4gICAqIEBkZXByZWNhdGVkXG4gICAqIEBkZXNjcmlwdGlvbiBWZXJpZnkgVE9UUFxuICAgKlxuICAgKiBERVBSRUNBVEVELiBVc2UgYFBPU1QgL3YwL29yZy97b3JnX2lkfS91c2VyL21lL3RvdHAvdmVyaWZ5YCBpbnN0ZWFkLlxuICAgKlxuICAgKiBDaGVja3MgaWYgYSBnaXZlbiBjb2RlIG1hdGNoZXMgdGhlIGN1cnJlbnQgVE9UUCBjb2RlIGZvciB0aGUgY3VycmVudCB1c2VyLlxuICAgKiBFcnJvcnMgd2l0aCA0MDMgaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgbm90IHNldCB1cCBUT1RQIG9yIHRoZSBjb2RlIGZhaWxzIHZlcmlmaWNhdGlvbi5cbiAgICovXG4gIHZlcmlmeVRvdHBMZWdhY3k6IHtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb3RwQXBwcm92ZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmV0cmlldmVzIGFsbCB0aGUgb3JncyB0aGUgdXNlciBpcyBhIHBhcnQgb2ZcbiAgICogQGRlc2NyaXB0aW9uIFJldHJpZXZlcyBhbGwgdGhlIG9yZ3MgdGhlIHVzZXIgaXMgYSBwYXJ0IG9mXG4gICAqL1xuICB1c2VyT3Jnczoge1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVXNlck9yZ3NSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIFJhdyBCbG9iXG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIFJhdyBCbG9iXG4gICAqXG4gICAqIFNpZ25zIGFuIGFyYml0cmFyeSBibG9iIHdpdGggYSBnaXZlbiBrZXkuXG4gICAqXG4gICAqIC0gRUNEU0Egc2lnbmF0dXJlcyBhcmUgc2VyaWFsaXplZCBhcyBiaWctZW5kaWFuIHIgYW5kIHMgcGx1cyByZWNvdmVyeS1pZFxuICAgKiBieXRlIHYsIHdoaWNoIGNhbiBpbiBnZW5lcmFsIHRha2UgYW55IG9mIHRoZSB2YWx1ZXMgMCwgMSwgMiwgb3IgMy5cbiAgICpcbiAgICogLSBFZERTQSBzaWduYXR1cmVzIGFyZSBzZXJpYWxpemVkIGluIHRoZSBzdGFuZGFyZCBmb3JtYXQuXG4gICAqXG4gICAqIC0gQkxTIHNpZ25hdHVyZXMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gdGhlIGJsb2Itc2lnbiBlbmRwb2ludC5cbiAgICovXG4gIGJsb2JTaWduOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIEtleVxuICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCbG9iU2lnblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFJlY29yZCBoZWFydGJlYXRcbiAgICogQGRlc2NyaXB0aW9uIFJlY29yZCBoZWFydGJlYXRcbiAgICpcbiAgICogVGhpcyBlbmRwb2ludCBpcyBjYWxsZWQgYnkgdGhlIGN1YmUzc2lnbmVyIHByb3h5IHRvIHJlY29yZCB2YXJpb3VzIG1ldHJpY3MgdG8gQ2xvdWRXYXRjaC5cbiAgICovXG4gIGN1YmUzc2lnbmVySGVhcnRiZWF0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5Pzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJIZWFydGJlYXRSZXF1ZXN0XCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIEVWTSBUcmFuc2FjdGlvblxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBFVk0gVHJhbnNhY3Rpb25cbiAgICpcbiAgICogU2lnbnMgYW4gRXRoZXJldW0gKGFuZCBvdGhlciBFVk0pIHRyYW5zYWN0aW9uIHdpdGggYSBnaXZlbiBTZWNwMjU2azEga2V5LlxuICAgKiBSZXR1cm5zIGFuIFJMUC1lbmNvZGVkIHRyYW5zYWN0aW9uIHdpdGggRUlQLTE1NSBzaWduYXR1cmUuXG4gICAqXG4gICAqIFRoZSBrZXkgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIHJvbGUgYW5kIG9yZ2FuaXphdGlvbiBvbiB3aG9zZSBiZWhhbGYgdGhpcyBhY3Rpb24gaXMgY2FsbGVkLlxuICAgKi9cbiAgZXRoMVNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgZXRoZXJldW0gYWRkcmVzcyBvZiB0aGUgc2VjcCBrZXlcbiAgICAgICAgICogQGV4YW1wbGUgMHg0OTAxMWFkYkNDM2JDOWMwMzA3QkIwN0YzN0RkYTFhMWE5YzY5ZDJFXG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFdGgxU2lnblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFdGgxU2lnblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIFZhbGlkYXRvciBSZXF1ZXN0XG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIFZhbGlkYXRvciBSZXF1ZXN0XG4gICAqXG4gICAqIFNpZ25zIGFuIGV0aDIgdmFsaWRhdG9yIHJlcXVlc3Qgd2l0aCBhIGdpdmVuIEJMUyBrZXkuXG4gICAqXG4gICAqIFRoZSBrZXkgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIHJvbGUgYW5kIG9yZ2FuaXphdGlvbiBvbiB3aG9zZSBiZWhhbGYgdGhpcyBhY3Rpb24gaXMgY2FsbGVkLlxuICAgKi9cbiAgZXRoMlNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgdmFsaWRhdG9yIChCTFMpIHB1YmxpYyBrZXkgd2l0aCAweCBwcmVmaXhcbiAgICAgICAgICogQGV4YW1wbGUgMHg5NzAwZmJiOGM5MDY5NDI0NDJjMmE1YjNhZDc0OThmMjdhZWRkYTI1Mzc4NmE2ZmJhYThmZWY0N2ZiN2FmMjM0ZTUwY2YyY2NlODE1YTU1MzA4Nzk5MmFlNTY1ZDQ4ZGFcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkV0aDJTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlNpZ25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogU2lnbiBTdGFrZSBEZXBvc2l0XG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIFN0YWtlIERlcG9zaXRcbiAgICpcbiAgICogU2lnbnMgYSBkZXBvc2l0IHRyYW5zYWN0aW9uIHdpdGggYSBgdmFsaWRhdG9yX2tleWAuIElmIGB2YWxpZGF0b3Jfa2V5YCBpcyBzZXQgdG8gYSBwcmVnZW5lcmF0ZWQga2V5LCB3ZSB1c2UgdGhlXG4gICAqIHByb3ZpZGVkIHZhbGlkYXRvciBrZXkuIE90aGVyd2lzZSwgd2UgZ2VuZXJhdGUgYSBuZXcgQkxTIGtleS5cbiAgICpcbiAgICogV2hlbiB1c2luZyBhIHByZWdlbmVyYXRlZCBrZXksIHRoZSBrZXkgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIHJvbGUgYW5kIG9yZ2FuaXphdGlvbiBvbiB3aG9zZVxuICAgKiBiZWhhbGYgdGhpcyBhY3Rpb24gaXMgY2FsbGVkLlxuICAgKi9cbiAgc3Rha2U6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU3Rha2VSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU3Rha2VSZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogU2lnbiBVbnN0YWtlIFJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gVW5zdGFrZSBSZXF1ZXN0XG4gICAqXG4gICAqIEhhbmRsZSB1bnN0YWtpbmcgcmVxdWVzdCwgcHJvZHVjaW5nIGEgc2lnbmVkIHZvbHVudGFyeSBleGl0IG1lc3NhZ2VcbiAgICogdGhhdCBjYW4gYmUgcG9zdGVkIGRpcmVjdGx5IHRvIHRoZSBCZWFjb24gY2hhaW4uXG4gICAqXG4gICAqIFRoZSBrZXkgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIHJvbGUgYW5kIG9yZ2FuaXphdGlvbiBvbiB3aG9zZSBiZWhhbGYgdGhpcyBhY3Rpb24gaXMgY2FsbGVkLlxuICAgKi9cbiAgdW5zdGFrZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCB2YWxpZGF0b3IgKEJMUykgcHVibGljIGtleVxuICAgICAgICAgKiBAZXhhbXBsZSAweGE5OWE3NmVkNzc5NmY3YmUyMmQ1YjdlODVkZWViN2M1Njc3ZTg4ZTUxMWUwYjMzNzYxOGY4YzRlYjYxMzQ5YjRiZjJkMTUzZjY0OWY3YjUzMzU5ZmU4Yjk0YTM4ZTQ0Y1xuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVW5zdGFrZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJVbnN0YWtlUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFJlZnJlc2ggU2lnbmVyIFNlc3Npb25cbiAgICogQGRlc2NyaXB0aW9uIFJlZnJlc2ggU2lnbmVyIFNlc3Npb25cbiAgICovXG4gIHNpZ25lclNlc3Npb25SZWZyZXNoOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBvcmdhbml6YXRpb24gb3duaW5nIHRoZSBrZXlcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXV0aERhdGFcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJOZXdTZXNzaW9uUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xufVxuIl19