@pipeline-builder/api-core 3.4.97 → 3.4.100

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.
@@ -155,4 +155,4 @@ export function createLogger(serviceName) {
155
155
  */
156
156
  export const logger = createLogger(process.env.SERVICE_NAME || 'api');
157
157
  export default logger;
158
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sT0FBTyxNQUFNLFNBQVMsQ0FBQztBQUM5QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUV0RCxNQUFNLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO0FBRTlFLDBFQUEwRTtBQUMxRSw0RUFBNEU7QUFDNUUsNkVBQTZFO0FBQzdFLHVEQUF1RDtBQUN2RCxNQUFNLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRW5EOztHQUVHO0FBQ0gsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxFQUFFO0lBQy9FLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2xELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzNFLE9BQU8sR0FBRyxTQUFTLElBQUksS0FBSyxJQUFJLFdBQVcsSUFBSSxPQUFPLEdBQUcsT0FBTyxFQUFFLENBQUM7QUFDckUsQ0FBQyxDQUFDLENBQUM7QUFFSDs7OztHQUlHO0FBQ0gsSUFBSSxRQUFnSCxDQUFDO0FB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LE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFDMUIsS0FBSyxFQUFFLFFBQVE7UUFDZixXQUFXLEVBQUUsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFO1FBQ3JDLE1BQU0sRUFBRSxPQUFPLENBQUMsR0FBRyxXQUFXLENBQUM7UUFDL0IsVUFBVSxFQUFFO1lBQ1YsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQztnQkFDN0IsTUFBTSxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxhQUFhLENBQUM7YUFDM0MsQ0FBQztTQUNIO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksSUFBSSxLQUFLLENBQUMsQ0FBQztBQUV0RSxlQUFlLE1BQU0sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgd2luc3RvbiBmcm9tICd3aW5zdG9uJztcbmltcG9ydCB7IHNhZmVDcmVhdGVSZXF1aXJlIH0gZnJvbSAnLi9zYWZlLXJlcXVpcmUuanMnO1xuXG5jb25zdCB7IGNvbWJpbmUsIHRpbWVzdGFtcCwgcHJpbnRmLCBjb2xvcml6ZSwgZXJyb3JzLCBqc29uIH0gPSB3aW5zdG9uLmZvcm1hdDtcblxuLy8gRVNNIGhhcyBubyBnbG9iYWwgYHJlcXVpcmVgOyBzYWZlQ3JlYXRlUmVxdWlyZSBlbmFibGVzIHRoZSBzeW5jaHJvbm91cyxcbi8vIE9QVElPTkFMIGxhenktbG9hZCBvZiBAb3BlbnRlbGVtZXRyeS9hcGkgaW4gZ2V0Q3VycmVudFRyYWNlSWQoKSBiZWxvdyDigJQgYVxuLy8gd2luc3RvbiBmb3JtYXQgY2FsbGJhY2sgbXVzdCBzdGF5IHN5bmNocm9ub3VzLCBzbyBhIGR5bmFtaWMgaW1wb3J0KCkgd29uJ3Rcbi8vIHdvcmsgdGhlcmUuIChDSlMtYnVuZGxlIHNhZmUg4oCUIHNlZSBzYWZlLXJlcXVpcmUudHMuKVxuY29uc3QgcmVxdWlyZSA9IHNhZmVDcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybCk7XG5cbi8qKlxuICogQ3VzdG9tIGxvZyBmb3JtYXQgZm9yIGh1bWFuLXJlYWRhYmxlIGNvbnNvbGUgb3V0cHV0LlxuICovXG5jb25zdCBjb25zb2xlRm9ybWF0ID0gcHJpbnRmKCh7IGxldmVsLCBtZXNzYWdlLCB0aW1lc3RhbXAsIHNlcnZpY2UsIC4uLm1ldGEgfSkgPT4ge1xuICBjb25zdCBzZXJ2aWNlTmFtZSA9IHNlcnZpY2UgPyBgWyR7c2VydmljZX1dYCA6ICcnO1xuICBjb25zdCBtZXRhU3RyID0gT2JqZWN0LmtleXMobWV0YSkubGVuZ3RoID8gYCAke0pTT04uc3RyaW5naWZ5KG1ldGEpfWAgOiAnJztcbiAgcmV0dXJuIGAke3RpbWVzdGFtcH0gJHtsZXZlbH0gJHtzZXJ2aWNlTmFtZX0gJHttZXNzYWdlfSR7bWV0YVN0cn1gO1xufSk7XG5cbi8qKlxuICogTGF6eSBsb29rdXAgb2YgT3BlblRlbGVtZXRyeSB0cmFjZSBJRC4gUmV0dXJucyB1bmRlZmluZWQgd2hlbiB0cmFjaW5nXG4gKiBpc24ndCBpbml0aWFsaXplZCBvciBAb3BlbnRlbGVtZXRyeS9hcGkgaXNuJ3QgaW5zdGFsbGVkIOKAlCBuZXZlciB0aHJvd3MuXG4gKiBDaGVhcDogYSBzaW5nbGUgcHJvcGVydHkgcmVhZCBhZnRlciB0aGUgZmlyc3Qgc3VjY2Vzc2Z1bCBsb29rdXAuXG4gKi9cbmxldCBfb3RlbEFwaTogeyB0cmFjZT86IHsgZ2V0QWN0aXZlU3BhbigpOiB7IHNwYW5Db250ZXh0KCk6IHsgdHJhY2VJZDogc3RyaW5nIH0gfSB8IHVuZGVmaW5lZCB9IH0gfCBudWxsIHwgdW5kZWZpbmVkO1xuZnVuY3Rpb24gZ2V0Q3VycmVudFRyYWNlSWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKF9vdGVsQXBpID09PSB1bmRlZmluZWQpIHtcbiAgICB0cnkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbiAgICAgIF9vdGVsQXBpID0gcmVxdWlyZSgnQG9wZW50ZWxlbWV0cnkvYXBpJyk7XG4gICAgfSBjYXRjaCB7XG4gICAgICBfb3RlbEFwaSA9IG51bGw7XG4gICAgfVxuICB9XG4gIGlmICghX290ZWxBcGkpIHJldHVybiB1bmRlZmluZWQ7XG4gIHRyeSB7XG4gICAgcmV0dXJuIF9vdGVsQXBpLnRyYWNlPy5nZXRBY3RpdmVTcGFuKCk/LnNwYW5Db250ZXh0KCkudHJhY2VJZDtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKiogV2luc3RvbiBmb3JtYXQgdGhhdCBzdGFtcHMgYHRyYWNlX2lkYCBvbiBldmVyeSBlbnRyeSB3aGVuIGFuIE9UZWwgc3BhbiBpcyBhY3RpdmUuICovXG5jb25zdCB0cmFjZUlkRm9ybWF0ID0gd2luc3Rvbi5mb3JtYXQoKGluZm8pID0+IHtcbiAgY29uc3QgdHJhY2VJZCA9IGdldEN1cnJlbnRUcmFjZUlkKCk7XG4gIGlmICh0cmFjZUlkKSBpbmZvLnRyYWNlX2lkID0gdHJhY2VJZDtcbiAgcmV0dXJuIGluZm87XG59KSgpO1xuXG4vKipcbiAqIEtleXMgdGhhdCBzaG91bGQgbmV2ZXIgYXBwZWFyIGluIGxvZ3MuIE1hdGNoIGlzIGNhc2UtaW5zZW5zaXRpdmUgYW5kXG4gKiBhbmNob3JlZCBzdWJzdHJpbmcg4oCUIGBBdXRob3JpemF0aW9uYCwgYGF1dGhfaGVhZGVyYCwgYE1ZX1BBU1NXT1JEYCBhbGwgaGl0LlxuICogQWRkIGEgbmV3IHRlcm0gaGVyZSBvbmx5IGlmIHlvdSd2ZSBzZWVuIHJlYWwtd29ybGQgbGVha2FnZTsgb3Zlci1yZWRhY3Rpb25cbiAqIG1ha2VzIGluY2lkZW50IGRlYnVnZ2luZyBoYXJkZXIuXG4gKi9cbmNvbnN0IFNFTlNJVElWRV9LRVlfUEFUVEVSTiA9IC9wYXNzd29yZHxzZWNyZXR8YmVhcmVyfGFwaVtfLV0/a2V5fGNvb2tpZXx0b2tlbnxeYXV0aChvcml6YXRpb258X2hlYWRlcik/JHxzdHJpcGVbXy1dPyhrZXl8c2VjcmV0KXxtb25nbyhkYik/W18tXT91cmkvaTtcbmNvbnN0IFJFREFDVEVEID0gJ1tSRURBQ1RFRF0nO1xuXG5mdW5jdGlvbiByZWRhY3REZWVwKHZhbHVlOiB1bmtub3duLCBkZXB0aCA9IDApOiB1bmtub3duIHtcbiAgLy8gQ2FwIGRlcHRoIHNvIGEgbWFsaWNpb3VzIC8gcGF0aG9sb2dpY2FsIGNpcmN1bGFyIG9iamVjdCBjYW4ndCBsb2NrIHRoZSBsb2dnZXIuXG4gIGlmIChkZXB0aCA+IDYpIHJldHVybiB2YWx1ZTtcbiAgaWYgKHZhbHVlID09IG51bGwgfHwgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JykgcmV0dXJuIHZhbHVlO1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHJldHVybiB2YWx1ZS5tYXAoKHYpID0+IHJlZGFjdERlZXAodiwgZGVwdGggKyAxKSk7XG4gIGNvbnN0IG91dDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXModmFsdWUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pKSB7XG4gICAgaWYgKFNFTlNJVElWRV9LRVlfUEFUVEVSTi50ZXN0KGspKSB7XG4gICAgICBvdXRba10gPSBSRURBQ1RFRDtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0W2tdID0gcmVkYWN0RGVlcCh2LCBkZXB0aCArIDEpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0O1xufVxuXG4vKiogV2luc3RvbiBmb3JtYXQgdGhhdCBtYXNrcyB2YWx1ZXMgZm9yIHNlbnNpdGl2ZS1sb29raW5nIGtleXMgKFBJSSAvIHNlY3JldHMpLlxuICogTXV0YXRlcyBgaW5mb2AgaW4gcGxhY2Ugc28gd2luc3RvbidzIGludGVybmFsIFN5bWJvbC1rZXllZCBwcm9wZXJ0aWVzXG4gKiAoYFN5bWJvbC5mb3IoJ2xldmVsJylgLCBgU3ltYm9sLmZvcignbWVzc2FnZScpYCwgYFN5bWJvbC5mb3IoJ3NwbGF0JylgKSBzdXJ2aXZlXG4gKiDigJQgcmVidWlsZGluZyBhIGZyZXNoIG9iamVjdCB2aWEgYE9iamVjdC5lbnRyaWVzYC9zcHJlYWQgc2lsZW50bHkgc3RyaXBzIHRoZW0sXG4gKiB3aGljaCBtYWtlcyB0aGUgQ29uc29sZSB0cmFuc3BvcnQgZHJvcCBldmVyeSBlbnRyeSB3aXRob3V0IHdhcm5pbmcuICovXG5jb25zdCBQUkVTRVJWRURfS0VZUyA9IG5ldyBTZXQoWydsZXZlbCcsICdtZXNzYWdlJywgJ3RpbWVzdGFtcCcsICdzZXJ2aWNlJywgJ3RyYWNlX2lkJ10pO1xuY29uc3QgcmVkYWN0Rm9ybWF0ID0gd2luc3Rvbi5mb3JtYXQoKGluZm8pID0+IHtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoaW5mbykpIHtcbiAgICBpZiAoUFJFU0VSVkVEX0tFWVMuaGFzKGtleSkpIGNvbnRpbnVlO1xuICAgIGlmIChTRU5TSVRJVkVfS0VZX1BBVFRFUk4udGVzdChrZXkpKSB7XG4gICAgICBpbmZvW2tleV0gPSBSRURBQ1RFRDtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5mb1trZXldID0gcmVkYWN0RGVlcChpbmZvW2tleV0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaW5mbztcbn0pKCk7XG5cbi8qKlxuICogQ3JlYXRlIGEgbG9nZ2VyIGluc3RhbmNlIGZvciBhIHNlcnZpY2UuXG4gKlxuICogV2hlbiBMT0dfRk9STUFUPWpzb24gKGRlZmF1bHQpLCBvdXRwdXRzIHN0cnVjdHVyZWQgSlNPTiBmb3IgTG9raSBpbmdlc3Rpb246XG4gKiAgIHtcImxldmVsXCI6XCJpbmZvXCIsXCJtZXNzYWdlXCI6XCJTZXJ2ZXIgc3RhcnRlZFwiLFwic2VydmljZVwiOlwicGlwZWxpbmVcIixcInRpbWVzdGFtcFwiOlwiLi4uXCJ9XG4gKlxuICogV2hlbiBMT0dfRk9STUFUPXRleHQsIG91dHB1dHMgY29sb3JpemVkIGh1bWFuLXJlYWRhYmxlIGZvcm1hdDpcbiAqICAgMjAyNi0wMi0xM1QxMDozMDowMC4wMDBaIGluZm8gW3BpcGVsaW5lXSBTZXJ2ZXIgc3RhcnRlZFxuICpcbiAqIEBwYXJhbSBzZXJ2aWNlTmFtZSAtIE5hbWUgb2YgdGhlIHNlcnZpY2UgZm9yIGxvZyBpZGVudGlmaWNhdGlvblxuICogQHJldHVybnMgQ29uZmlndXJlZCBXaW5zdG9uIGxvZ2dlciBpbnN0YW5jZVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG4gKlxuICogY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKCdnZXQtcGx1Z2luJyk7XG4gKiBsb2dnZXIuaW5mbygnU2VydmVyIHN0YXJ0ZWQnLCB7IHBvcnQ6IDMwMDAgfSk7XG4gKiBsb2dnZXIuZXJyb3IoJ0RhdGFiYXNlIGVycm9yJywgeyBlcnJvcjogZXJyLm1lc3NhZ2UgfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxvZ2dlcihzZXJ2aWNlTmFtZTogc3RyaW5nKTogd2luc3Rvbi5Mb2dnZXIge1xuICBjb25zdCBsb2dMZXZlbCA9IHByb2Nlc3MuZW52LkxPR19MRVZFTCB8fCAnaW5mbyc7XG4gIGNvbnN0IGxvZ0Zvcm1hdCA9IHByb2Nlc3MuZW52LkxPR19GT1JNQVQgfHwgJ2pzb24nO1xuICBpZiAobG9nRm9ybWF0ICE9PSAnanNvbicgJiYgbG9nRm9ybWF0ICE9PSAndGV4dCcpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZSAtLSBzdGFydHVwIHdhcm5pbmcgYmVmb3JlIGxvZ2dlciBpcyBhdmFpbGFibGVcbiAgICBjb25zb2xlLndhcm4oYEludmFsaWQgTE9HX0ZPUk1BVD1cIiR7bG9nRm9ybWF0fVwiLCBleHBlY3RlZCBcImpzb25cIiBvciBcInRleHRcIi4gRGVmYXVsdGluZyB0byBcImpzb25cIi5gKTtcbiAgfVxuICBjb25zdCB1c2VKc29uID0gbG9nRm9ybWF0ICE9PSAndGV4dCc7XG5cbiAgLy8gT3JkZXIgbWF0dGVyczogcmVkYWN0IEJFRk9SRSBzZXJpYWxpemF0aW9uIHNvIG1hc2tlZCBrZXlzIG5ldmVyIHJlYWNoXG4gIC8vIHRoZSBvdXRwdXQuIHRyYWNlX2lkIGlzIHN0YW1wZWQgZmlyc3Qgc28gaXQgc3Vydml2ZXMgcmVkYWN0aW9uLlxuICBjb25zdCBiYXNlRm9ybWF0cyA9IFtcbiAgICBlcnJvcnMoeyBzdGFjazogdHJ1ZSB9KSxcbiAgICB0aW1lc3RhbXAoeyBmb3JtYXQ6ICdZWVlZLU1NLUREVEhIOm1tOnNzLlNTU1onIH0pLFxuICAgIHRyYWNlSWRGb3JtYXQsXG4gICAgcmVkYWN0Rm9ybWF0LFxuICBdO1xuXG4gIGlmICh1c2VKc29uKSB7XG4gICAgcmV0dXJuIHdpbnN0b24uY3JlYXRlTG9nZ2VyKHtcbiAgICAgIGxldmVsOiBsb2dMZXZlbCxcbiAgICAgIGRlZmF1bHRNZXRhOiB7IHNlcnZpY2U6IHNlcnZpY2VOYW1lIH0sXG4gICAgICBmb3JtYXQ6IGNvbWJpbmUoLi4uYmFzZUZvcm1hdHMsIGpzb24oKSksXG4gICAgICB0cmFuc3BvcnRzOiBbbmV3IHdpbnN0b24udHJhbnNwb3J0cy5Db25zb2xlKCldLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHdpbnN0b24uY3JlYXRlTG9nZ2VyKHtcbiAgICBsZXZlbDogbG9nTGV2ZWwsXG4gICAgZGVmYXVsdE1ldGE6IHsgc2VydmljZTogc2VydmljZU5hbWUgfSxcbiAgICBmb3JtYXQ6IGNvbWJpbmUoLi4uYmFzZUZvcm1hdHMpLFxuICAgIHRyYW5zcG9ydHM6IFtcbiAgICAgIG5ldyB3aW5zdG9uLnRyYW5zcG9ydHMuQ29uc29sZSh7XG4gICAgICAgIGZvcm1hdDogY29tYmluZShjb2xvcml6ZSgpLCBjb25zb2xlRm9ybWF0KSxcbiAgICAgIH0pLFxuICAgIF0sXG4gIH0pO1xufVxuXG4vKipcbiAqIERlZmF1bHQgbG9nZ2VyIGluc3RhbmNlIChzZXJ2aWNlIG5hbWUgZnJvbSBTRVJWSUNFX05BTUUgZW52IHZhciBvciAnYXBpJykuXG4gKi9cbmV4cG9ydCBjb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIocHJvY2Vzcy5lbnYuU0VSVklDRV9OQU1FIHx8ICdhcGknKTtcblxuZXhwb3J0IGRlZmF1bHQgbG9nZ2VyO1xuIl19
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sT0FBTyxNQUFNLFNBQVMsQ0FBQztBQUM5QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUV0RCxNQUFNLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO0FBRTlFLDBFQUEwRTtBQUMxRSw0RUFBNEU7QUFDNUUsNkVBQTZFO0FBQzdFLHVEQUF1RDtBQUN2RCxNQUFNLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUVuRDs7R0FFRztBQUNILE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUUsRUFBRTtJQUMvRSxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNsRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMzRSxPQUFPLEdBQUcsU0FBUyxJQUFJLEtBQUssSUFBSSxXQUFXLElBQUksT0FBTyxHQUFHLE9BQU8sRUFBRSxDQUFDO0FBQ3JFLENBQUMsQ0FBQyxDQUFDO0FBRUg7Ozs7R0FJRztBQUNILElBQUksUUFBZ0gsQ0FBQztBQUNySCxT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LENBQUMsWUFBWSxDQUFDO1FBQzFCLEtBQUssRUFBRSxRQUFRO1FBQ2YsV0FBVyxFQUFFLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRTtRQUNyQyxNQUFNLEVBQUUsT0FBTyxDQUFDLEdBQUcsV0FBVyxDQUFDO1FBQy9CLFVBQVUsRUFBRTtZQUNWLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUM7Z0JBQzdCLE1BQU0sRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsYUFBYSxDQUFDO2FBQzNDLENBQUM7U0FDSDtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLElBQUksS0FBSyxDQUFDLENBQUM7QUFFdEUsZUFBZSxNQUFNLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHdpbnN0b24gZnJvbSAnd2luc3Rvbic7XG5pbXBvcnQgeyBzYWZlQ3JlYXRlUmVxdWlyZSB9IGZyb20gJy4vc2FmZS1yZXF1aXJlLmpzJztcblxuY29uc3QgeyBjb21iaW5lLCB0aW1lc3RhbXAsIHByaW50ZiwgY29sb3JpemUsIGVycm9ycywganNvbiB9ID0gd2luc3Rvbi5mb3JtYXQ7XG5cbi8vIEVTTSBoYXMgbm8gZ2xvYmFsIGByZXF1aXJlYDsgc2FmZUNyZWF0ZVJlcXVpcmUgZW5hYmxlcyB0aGUgc3luY2hyb25vdXMsXG4vLyBPUFRJT05BTCBsYXp5LWxvYWQgb2YgQG9wZW50ZWxlbWV0cnkvYXBpIGluIGdldEN1cnJlbnRUcmFjZUlkKCkgYmVsb3cg4oCUIGFcbi8vIHdpbnN0b24gZm9ybWF0IGNhbGxiYWNrIG11c3Qgc3RheSBzeW5jaHJvbm91cywgc28gYSBkeW5hbWljIGltcG9ydCgpIHdvbid0XG4vLyB3b3JrIHRoZXJlLiAoQ0pTLWJ1bmRsZSBzYWZlIOKAlCBzZWUgc2FmZS1yZXF1aXJlLnRzLilcbmNvbnN0IHJlcXVpcmUgPSBzYWZlQ3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpO1xuXG4vKipcbiAqIEN1c3RvbSBsb2cgZm9ybWF0IGZvciBodW1hbi1yZWFkYWJsZSBjb25zb2xlIG91dHB1dC5cbiAqL1xuY29uc3QgY29uc29sZUZvcm1hdCA9IHByaW50ZigoeyBsZXZlbCwgbWVzc2FnZSwgdGltZXN0YW1wLCBzZXJ2aWNlLCAuLi5tZXRhIH0pID0+IHtcbiAgY29uc3Qgc2VydmljZU5hbWUgPSBzZXJ2aWNlID8gYFske3NlcnZpY2V9XWAgOiAnJztcbiAgY29uc3QgbWV0YVN0ciA9IE9iamVjdC5rZXlzKG1ldGEpLmxlbmd0aCA/IGAgJHtKU09OLnN0cmluZ2lmeShtZXRhKX1gIDogJyc7XG4gIHJldHVybiBgJHt0aW1lc3RhbXB9ICR7bGV2ZWx9ICR7c2VydmljZU5hbWV9ICR7bWVzc2FnZX0ke21ldGFTdHJ9YDtcbn0pO1xuXG4vKipcbiAqIExhenkgbG9va3VwIG9mIE9wZW5UZWxlbWV0cnkgdHJhY2UgSUQuIFJldHVybnMgdW5kZWZpbmVkIHdoZW4gdHJhY2luZ1xuICogaXNuJ3QgaW5pdGlhbGl6ZWQgb3IgQG9wZW50ZWxlbWV0cnkvYXBpIGlzbid0IGluc3RhbGxlZCDigJQgbmV2ZXIgdGhyb3dzLlxuICogQ2hlYXA6IGEgc2luZ2xlIHByb3BlcnR5IHJlYWQgYWZ0ZXIgdGhlIGZpcnN0IHN1Y2Nlc3NmdWwgbG9va3VwLlxuICovXG5sZXQgX290ZWxBcGk6IHsgdHJhY2U/OiB7IGdldEFjdGl2ZVNwYW4oKTogeyBzcGFuQ29udGV4dCgpOiB7IHRyYWNlSWQ6IHN0cmluZyB9IH0gfCB1bmRlZmluZWQgfSB9IHwgbnVsbCB8IHVuZGVmaW5lZDtcbmZ1bmN0aW9uIGdldEN1cnJlbnRUcmFjZUlkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmIChfb3RlbEFwaSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gICAgICBfb3RlbEFwaSA9IHJlcXVpcmUoJ0BvcGVudGVsZW1ldHJ5L2FwaScpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgX290ZWxBcGkgPSBudWxsO1xuICAgIH1cbiAgfVxuICBpZiAoIV9vdGVsQXBpKSByZXR1cm4gdW5kZWZpbmVkO1xuICB0cnkge1xuICAgIHJldHVybiBfb3RlbEFwaS50cmFjZT8uZ2V0QWN0aXZlU3BhbigpPy5zcGFuQ29udGV4dCgpLnRyYWNlSWQ7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqIFdpbnN0b24gZm9ybWF0IHRoYXQgc3RhbXBzIGB0cmFjZV9pZGAgb24gZXZlcnkgZW50cnkgd2hlbiBhbiBPVGVsIHNwYW4gaXMgYWN0aXZlLiAqL1xuY29uc3QgdHJhY2VJZEZvcm1hdCA9IHdpbnN0b24uZm9ybWF0KChpbmZvKSA9PiB7XG4gIGNvbnN0IHRyYWNlSWQgPSBnZXRDdXJyZW50VHJhY2VJZCgpO1xuICBpZiAodHJhY2VJZCkgaW5mby50cmFjZV9pZCA9IHRyYWNlSWQ7XG4gIHJldHVybiBpbmZvO1xufSkoKTtcblxuLyoqXG4gKiBLZXlzIHRoYXQgc2hvdWxkIG5ldmVyIGFwcGVhciBpbiBsb2dzLiBNYXRjaCBpcyBjYXNlLWluc2Vuc2l0aXZlIGFuZFxuICogYW5jaG9yZWQgc3Vic3RyaW5nIOKAlCBgQXV0aG9yaXphdGlvbmAsIGBhdXRoX2hlYWRlcmAsIGBNWV9QQVNTV09SRGAgYWxsIGhpdC5cbiAqIEFkZCBhIG5ldyB0ZXJtIGhlcmUgb25seSBpZiB5b3UndmUgc2VlbiByZWFsLXdvcmxkIGxlYWthZ2U7IG92ZXItcmVkYWN0aW9uXG4gKiBtYWtlcyBpbmNpZGVudCBkZWJ1Z2dpbmcgaGFyZGVyLlxuICovXG5jb25zdCBTRU5TSVRJVkVfS0VZX1BBVFRFUk4gPSAvcGFzc3dvcmR8c2VjcmV0fGJlYXJlcnxhcGlbXy1dP2tleXxjb29raWV8dG9rZW58XmF1dGgob3JpemF0aW9ufF9oZWFkZXIpPyR8c3RyaXBlW18tXT8oa2V5fHNlY3JldCl8bW9uZ28oZGIpP1tfLV0/dXJpL2k7XG5jb25zdCBSRURBQ1RFRCA9ICdbUkVEQUNURURdJztcblxuZnVuY3Rpb24gcmVkYWN0RGVlcCh2YWx1ZTogdW5rbm93biwgZGVwdGggPSAwKTogdW5rbm93biB7XG4gIC8vIENhcCBkZXB0aCBzbyBhIG1hbGljaW91cyAvIHBhdGhvbG9naWNhbCBjaXJjdWxhciBvYmplY3QgY2FuJ3QgbG9jayB0aGUgbG9nZ2VyLlxuICBpZiAoZGVwdGggPiA2KSByZXR1cm4gdmFsdWU7XG4gIGlmICh2YWx1ZSA9PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHJldHVybiB2YWx1ZTtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSByZXR1cm4gdmFsdWUubWFwKCh2KSA9PiByZWRhY3REZWVwKHYsIGRlcHRoICsgMSkpO1xuICBjb25zdCBvdXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSkge1xuICAgIGlmIChTRU5TSVRJVkVfS0VZX1BBVFRFUk4udGVzdChrKSkge1xuICAgICAgb3V0W2tdID0gUkVEQUNURUQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dFtrXSA9IHJlZGFjdERlZXAodiwgZGVwdGggKyAxKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cblxuLyoqIFdpbnN0b24gZm9ybWF0IHRoYXQgbWFza3MgdmFsdWVzIGZvciBzZW5zaXRpdmUtbG9va2luZyBrZXlzIChQSUkgLyBzZWNyZXRzKS5cbiAqIE11dGF0ZXMgYGluZm9gIGluIHBsYWNlIHNvIHdpbnN0b24ncyBpbnRlcm5hbCBTeW1ib2wta2V5ZWQgcHJvcGVydGllc1xuICogKGBTeW1ib2wuZm9yKCdsZXZlbCcpYCwgYFN5bWJvbC5mb3IoJ21lc3NhZ2UnKWAsIGBTeW1ib2wuZm9yKCdzcGxhdCcpYCkgc3Vydml2ZVxuICog4oCUIHJlYnVpbGRpbmcgYSBmcmVzaCBvYmplY3QgdmlhIGBPYmplY3QuZW50cmllc2Avc3ByZWFkIHNpbGVudGx5IHN0cmlwcyB0aGVtLFxuICogd2hpY2ggbWFrZXMgdGhlIENvbnNvbGUgdHJhbnNwb3J0IGRyb3AgZXZlcnkgZW50cnkgd2l0aG91dCB3YXJuaW5nLiAqL1xuY29uc3QgUFJFU0VSVkVEX0tFWVMgPSBuZXcgU2V0KFsnbGV2ZWwnLCAnbWVzc2FnZScsICd0aW1lc3RhbXAnLCAnc2VydmljZScsICd0cmFjZV9pZCddKTtcbmNvbnN0IHJlZGFjdEZvcm1hdCA9IHdpbnN0b24uZm9ybWF0KChpbmZvKSA9PiB7XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGluZm8pKSB7XG4gICAgaWYgKFBSRVNFUlZFRF9LRVlTLmhhcyhrZXkpKSBjb250aW51ZTtcbiAgICBpZiAoU0VOU0lUSVZFX0tFWV9QQVRURVJOLnRlc3Qoa2V5KSkge1xuICAgICAgaW5mb1trZXldID0gUkVEQUNURUQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGluZm9ba2V5XSA9IHJlZGFjdERlZXAoaW5mb1trZXldKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGluZm87XG59KSgpO1xuXG4vKipcbiAqIENyZWF0ZSBhIGxvZ2dlciBpbnN0YW5jZSBmb3IgYSBzZXJ2aWNlLlxuICpcbiAqIFdoZW4gTE9HX0ZPUk1BVD1qc29uIChkZWZhdWx0KSwgb3V0cHV0cyBzdHJ1Y3R1cmVkIEpTT04gZm9yIExva2kgaW5nZXN0aW9uOlxuICogICB7XCJsZXZlbFwiOlwiaW5mb1wiLFwibWVzc2FnZVwiOlwiU2VydmVyIHN0YXJ0ZWRcIixcInNlcnZpY2VcIjpcInBpcGVsaW5lXCIsXCJ0aW1lc3RhbXBcIjpcIi4uLlwifVxuICpcbiAqIFdoZW4gTE9HX0ZPUk1BVD10ZXh0LCBvdXRwdXRzIGNvbG9yaXplZCBodW1hbi1yZWFkYWJsZSBmb3JtYXQ6XG4gKiAgIDIwMjYtMDItMTNUMTA6MzA6MDAuMDAwWiBpbmZvIFtwaXBlbGluZV0gU2VydmVyIHN0YXJ0ZWRcbiAqXG4gKiBAcGFyYW0gc2VydmljZU5hbWUgLSBOYW1lIG9mIHRoZSBzZXJ2aWNlIGZvciBsb2cgaWRlbnRpZmljYXRpb25cbiAqIEByZXR1cm5zIENvbmZpZ3VyZWQgV2luc3RvbiBsb2dnZXIgaW5zdGFuY2VcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuICpcbiAqIGNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcignZ2V0LXBsdWdpbicpO1xuICogbG9nZ2VyLmluZm8oJ1NlcnZlciBzdGFydGVkJywgeyBwb3J0OiAzMDAwIH0pO1xuICogbG9nZ2VyLmVycm9yKCdEYXRhYmFzZSBlcnJvcicsIHsgZXJyb3I6IGVyci5tZXNzYWdlIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMb2dnZXIoc2VydmljZU5hbWU6IHN0cmluZyk6IHdpbnN0b24uTG9nZ2VyIHtcbiAgY29uc3QgbG9nTGV2ZWwgPSBwcm9jZXNzLmVudi5MT0dfTEVWRUwgfHwgJ2luZm8nO1xuICBjb25zdCBsb2dGb3JtYXQgPSBwcm9jZXNzLmVudi5MT0dfRk9STUFUIHx8ICdqc29uJztcbiAgaWYgKGxvZ0Zvcm1hdCAhPT0gJ2pzb24nICYmIGxvZ0Zvcm1hdCAhPT0gJ3RleHQnKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUgLS0gc3RhcnR1cCB3YXJuaW5nIGJlZm9yZSBsb2dnZXIgaXMgYXZhaWxhYmxlXG4gICAgY29uc29sZS53YXJuKGBJbnZhbGlkIExPR19GT1JNQVQ9XCIke2xvZ0Zvcm1hdH1cIiwgZXhwZWN0ZWQgXCJqc29uXCIgb3IgXCJ0ZXh0XCIuIERlZmF1bHRpbmcgdG8gXCJqc29uXCIuYCk7XG4gIH1cbiAgY29uc3QgdXNlSnNvbiA9IGxvZ0Zvcm1hdCAhPT0gJ3RleHQnO1xuXG4gIC8vIE9yZGVyIG1hdHRlcnM6IHJlZGFjdCBCRUZPUkUgc2VyaWFsaXphdGlvbiBzbyBtYXNrZWQga2V5cyBuZXZlciByZWFjaFxuICAvLyB0aGUgb3V0cHV0LiB0cmFjZV9pZCBpcyBzdGFtcGVkIGZpcnN0IHNvIGl0IHN1cnZpdmVzIHJlZGFjdGlvbi5cbiAgY29uc3QgYmFzZUZvcm1hdHMgPSBbXG4gICAgZXJyb3JzKHsgc3RhY2s6IHRydWUgfSksXG4gICAgdGltZXN0YW1wKHsgZm9ybWF0OiAnWVlZWS1NTS1ERFRISDptbTpzcy5TU1NaJyB9KSxcbiAgICB0cmFjZUlkRm9ybWF0LFxuICAgIHJlZGFjdEZvcm1hdCxcbiAgXTtcblxuICBpZiAodXNlSnNvbikge1xuICAgIHJldHVybiB3aW5zdG9uLmNyZWF0ZUxvZ2dlcih7XG4gICAgICBsZXZlbDogbG9nTGV2ZWwsXG4gICAgICBkZWZhdWx0TWV0YTogeyBzZXJ2aWNlOiBzZXJ2aWNlTmFtZSB9LFxuICAgICAgZm9ybWF0OiBjb21iaW5lKC4uLmJhc2VGb3JtYXRzLCBqc29uKCkpLFxuICAgICAgdHJhbnNwb3J0czogW25ldyB3aW5zdG9uLnRyYW5zcG9ydHMuQ29uc29sZSgpXSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB3aW5zdG9uLmNyZWF0ZUxvZ2dlcih7XG4gICAgbGV2ZWw6IGxvZ0xldmVsLFxuICAgIGRlZmF1bHRNZXRhOiB7IHNlcnZpY2U6IHNlcnZpY2VOYW1lIH0sXG4gICAgZm9ybWF0OiBjb21iaW5lKC4uLmJhc2VGb3JtYXRzKSxcbiAgICB0cmFuc3BvcnRzOiBbXG4gICAgICBuZXcgd2luc3Rvbi50cmFuc3BvcnRzLkNvbnNvbGUoe1xuICAgICAgICBmb3JtYXQ6IGNvbWJpbmUoY29sb3JpemUoKSwgY29uc29sZUZvcm1hdCksXG4gICAgICB9KSxcbiAgICBdLFxuICB9KTtcbn1cblxuLyoqXG4gKiBEZWZhdWx0IGxvZ2dlciBpbnN0YW5jZSAoc2VydmljZSBuYW1lIGZyb20gU0VSVklDRV9OQU1FIGVudiB2YXIgb3IgJ2FwaScpLlxuICovXG5leHBvcnQgY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKHByb2Nlc3MuZW52LlNFUlZJQ0VfTkFNRSB8fCAnYXBpJyk7XG5cbmV4cG9ydCBkZWZhdWx0IGxvZ2dlcjtcbiJdfQ==
@@ -29,4 +29,4 @@ export function emitCounter(name, labels = {}, value = 1) {
29
29
  // emitter shouldn't be able to take down quota checks (or anything else).
30
30
  }
31
31
  }
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljLWVtaXR0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvbWV0cmljLWVtaXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQTRCdEMsSUFBSSxPQUFPLEdBQW1CLEdBQUcsRUFBRTtJQUNqQyx1RUFBdUU7SUFDdkUsd0VBQXdFO0lBQ3hFLDBFQUEwRTtBQUM1RSxDQUFDLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsRUFBa0I7SUFDbEQsT0FBTyxHQUFHLEVBQUUsQ0FBQztBQUNmLENBQUM7QUFFRCwyRUFBMkU7QUFDM0UsTUFBTSxVQUFVLG1CQUFtQjtJQUNqQyxPQUFPLEdBQUcsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDO0FBQzVCLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLElBQVksRUFBRSxTQUFpQyxFQUFFLEVBQUUsS0FBSyxHQUFHLENBQUM7SUFDdEYsSUFBSSxDQUFDO1FBQ0gsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLGtFQUFrRTtRQUNsRSwwRUFBMEU7SUFDNUUsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBQbHVnZ2FibGUgY291bnRlci1lbWl0IHNoaW0uXG4gKlxuICogQmFja2dyb3VuZDogc2V2ZXJhbCBhcGktY29yZSBwcmltaXRpdmVzIChxdW90YSBjbGllbnQgZmFpbC1vcGVuLCBmdXR1cmVcbiAqIHNlY3VyaXR5LWV2ZW50IGhvb2tzKSB3YW50IHRvIHJlY29yZCBQcm9tZXRoZXVzIGNvdW50ZXJzIHdoZW4gc29tZXRoaW5nXG4gKiBub3RhYmxlIGhhcHBlbnMuIFRoZSBhY3R1YWwgYHByb20tY2xpZW50YCBDb3VudGVyIHJlZ2lzdHJhdGlvbiBsaXZlcyBpblxuICogYXBpLXNlcnZlciwgYW5kIGFwaS1jb3JlIG11c3Qgbm90IGRlcGVuZCBvbiBhcGktc2VydmVyIChhcGktY29yZSBpc1xuICogdXBzdHJlYW0g4oCUIEV4cHJlc3MgaW5mcmFzdHJ1Y3R1cmUgaW1wb3J0cyBpdCwgbm90IHRoZSBvdGhlciB3YXkgYXJvdW5kKS5cbiAqXG4gKiBUaGlzIG1vZHVsZSBpcyB0aGUgc2VhbS4gYXBpLWNvcmUgY29kZSBjYWxscyBgZW1pdENvdW50ZXIobmFtZSwgbGFiZWxzKWA7XG4gKiBieSBkZWZhdWx0IGl0J3MgYSBuby1vcCAodGVzdHMsIENMSXMsIGVudmlyb25tZW50cyB3aXRob3V0IFByb21ldGhldXMpLlxuICogYXBpLXNlcnZlcidzIGFwcC1mYWN0b3J5IGNhbGxzIGBzZXRDb3VudGVyRW1pdHRlcihpbmNDb3VudGVyKWAgYXQgc3RhcnR1cFxuICogc28gcHJvZHVjdGlvbiBwcm9jZXNzZXMgc3RhcnQgaW5jcmVtZW50aW5nIHRoZSByZWFsIGNvdW50ZXIgb24gdGhlXG4gKiBzaGFyZWQgcmVnaXN0cnkuXG4gKlxuICogV2h5IGEgY2FsbGJhY2sgaW5zdGVhZCBvZiBhbiBpbnRlcmZhY2UgcmVnaXN0ZXJlZCB2aWEgREk/IFRoZSBjYWxsIHNpdGVzXG4gKiAocXVvdGEgZmFpbC1vcGVuLCBldGMuKSBzaXQgaW4gZGVlcCBoZWxwZXJzIHRoYXQgbmV2ZXIgdG91Y2ggdGhlIEV4cHJlc3NcbiAqIGNvbnRleHQsIHNvIHJlcXVpcmluZyBhIGBtZXRyaWNzYCBwYXJhbWV0ZXIgb24gZXZlcnkgY2FsbCB3b3VsZCBtZWFuXG4gKiB0aHJlYWRpbmcgaXQgdGhyb3VnaCBkb3plbnMgb2YgdW5yZWxhdGVkIGZ1bmN0aW9ucy4gQSBwcm9jZXNzLXNpbmdsZXRvblxuICogY2FsbGJhY2sgaXMgdGhlIHNpbXBsZXN0IG5vbi1pbnZhc2l2ZSBvcHRpb247IHRoZSB0cmFkZS1vZmYgaXMgb25lXG4gKiBzaGFyZWQgZ2xvYmFsLCB3aGljaCBpcyBhY2NlcHRhYmxlIGZvciBhIHNpbmsgdGhhdCdzIHN0cmljdGx5IHdyaXRlLW9ubHkuXG4gKi9cblxuLyoqIENhbGxhYmxlIHNpZ25hdHVyZSBtaXJyb3JpbmcgYXBpLXNlcnZlcidzIGBpbmNDb3VudGVyYC4gKi9cbmV4cG9ydCB0eXBlIENvdW50ZXJFbWl0dGVyID0gKG5hbWU6IHN0cmluZywgbGFiZWxzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiwgdmFsdWU/OiBudW1iZXIpID0+IHZvaWQ7XG5cbmxldCBlbWl0dGVyOiBDb3VudGVyRW1pdHRlciA9ICgpID0+IHtcbiAgLy8gRGVmYXVsdCBuby1vcC4gYXBpLXNlcnZlciB3aXJlcyB0aGlzIHRvIGEgcmVhbCBQcm9tZXRoZXVzIGNvdW50ZXIgYXRcbiAgLy8gc3RhcnR1cDsgdW50aWwgdGhlbiwgY2FsbHMgZnJvbSBhcGktY29yZSBoZWxwZXJzIGFyZSBzaWxlbnRseSBkcm9wcGVkXG4gIC8vICh3aGljaCBpcyB3aGF0IHdlIHdhbnQgaW4gdGVzdHMgYW5kIENMSXMgdGhhdCBkb24ndCBydW4gYSBQcm9tIHNlcnZlcikuXG59O1xuXG4vKipcbiAqIFJlZ2lzdGVyIHRoZSByZWFsIGNvdW50ZXIgaW1wbGVtZW50YXRpb24uIElkZW1wb3RlbnQg4oCUIHRoZSBsYXN0IGNhbGwgd2lucztcbiAqIHR5cGljYWxseSBjYWxsZWQgb25jZSBhdCBzZXJ2aWNlIHN0YXJ0dXAgZnJvbSBhcGktc2VydmVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0Q291bnRlckVtaXR0ZXIoZm46IENvdW50ZXJFbWl0dGVyKTogdm9pZCB7XG4gIGVtaXR0ZXIgPSBmbjtcbn1cblxuLyoqIFJlc2V0IHRvIHRoZSBuby1vcCBlbWl0dGVyLiBGb3IgdGVzdHMgdGhhdCB3YW50IHRvIGNsZWFyIGFueSB3aXJpbmcuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRDb3VudGVyRW1pdHRlcigpOiB2b2lkIHtcbiAgZW1pdHRlciA9ICgpID0+IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBSZWNvcmQgYSBjb3VudGVyIGV2ZW50LiBTYWZlIHRvIGNhbGwgZnJvbSBhbnkgYXBpLWNvcmUgbW9kdWxlIOKAlCBpZiBub1xuICogZW1pdHRlciBpcyB3aXJlZCwgdGhpcyBpcyBhIG5vLW9wLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW1pdENvdW50ZXIobmFtZTogc3RyaW5nLCBsYWJlbHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fSwgdmFsdWUgPSAxKTogdm9pZCB7XG4gIHRyeSB7XG4gICAgZW1pdHRlcihuYW1lLCBsYWJlbHMsIHZhbHVlKTtcbiAgfSBjYXRjaCB7XG4gICAgLy8gTmV2ZXIgbGV0IG1ldHJpYyBlbWlzc2lvbiBicmVhayB0aGUgY2FsbGluZyBwYXRoLiBBIG1pc2JlaGF2aW5nXG4gICAgLy8gZW1pdHRlciBzaG91bGRuJ3QgYmUgYWJsZSB0byB0YWtlIGRvd24gcXVvdGEgY2hlY2tzIChvciBhbnl0aGluZyBlbHNlKS5cbiAgfVxufVxuIl19
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljLWVtaXR0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvbWV0cmljLWVtaXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQTRCdEMsSUFBSSxPQUFPLEdBQW1CLEdBQUcsRUFBRTtJQUNqQyx1RUFBdUU7SUFDdkUsd0VBQXdFO0lBQ3hFLDBFQUEwRTtBQUM1RSxDQUFDLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsRUFBa0I7SUFDbEQsT0FBTyxHQUFHLEVBQUUsQ0FBQztBQUNmLENBQUM7QUFFRCwyRUFBMkU7QUFDM0UsTUFBTSxVQUFVLG1CQUFtQjtJQUNqQyxPQUFPLEdBQUcsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDO0FBQzVCLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLElBQVksRUFBRSxNQUFNLEdBQTJCLEVBQUUsRUFBRSxLQUFLLEdBQUcsQ0FBQztJQUN0RixJQUFJLENBQUM7UUFDSCxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1Asa0VBQWtFO1FBQ2xFLDBFQUEwRTtJQUM1RSxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFBsdWdnYWJsZSBjb3VudGVyLWVtaXQgc2hpbS5cbiAqXG4gKiBCYWNrZ3JvdW5kOiBzZXZlcmFsIGFwaS1jb3JlIHByaW1pdGl2ZXMgKHF1b3RhIGNsaWVudCBmYWlsLW9wZW4sIGZ1dHVyZVxuICogc2VjdXJpdHktZXZlbnQgaG9va3MpIHdhbnQgdG8gcmVjb3JkIFByb21ldGhldXMgY291bnRlcnMgd2hlbiBzb21ldGhpbmdcbiAqIG5vdGFibGUgaGFwcGVucy4gVGhlIGFjdHVhbCBgcHJvbS1jbGllbnRgIENvdW50ZXIgcmVnaXN0cmF0aW9uIGxpdmVzIGluXG4gKiBhcGktc2VydmVyLCBhbmQgYXBpLWNvcmUgbXVzdCBub3QgZGVwZW5kIG9uIGFwaS1zZXJ2ZXIgKGFwaS1jb3JlIGlzXG4gKiB1cHN0cmVhbSDigJQgRXhwcmVzcyBpbmZyYXN0cnVjdHVyZSBpbXBvcnRzIGl0LCBub3QgdGhlIG90aGVyIHdheSBhcm91bmQpLlxuICpcbiAqIFRoaXMgbW9kdWxlIGlzIHRoZSBzZWFtLiBhcGktY29yZSBjb2RlIGNhbGxzIGBlbWl0Q291bnRlcihuYW1lLCBsYWJlbHMpYDtcbiAqIGJ5IGRlZmF1bHQgaXQncyBhIG5vLW9wICh0ZXN0cywgQ0xJcywgZW52aXJvbm1lbnRzIHdpdGhvdXQgUHJvbWV0aGV1cykuXG4gKiBhcGktc2VydmVyJ3MgYXBwLWZhY3RvcnkgY2FsbHMgYHNldENvdW50ZXJFbWl0dGVyKGluY0NvdW50ZXIpYCBhdCBzdGFydHVwXG4gKiBzbyBwcm9kdWN0aW9uIHByb2Nlc3NlcyBzdGFydCBpbmNyZW1lbnRpbmcgdGhlIHJlYWwgY291bnRlciBvbiB0aGVcbiAqIHNoYXJlZCByZWdpc3RyeS5cbiAqXG4gKiBXaHkgYSBjYWxsYmFjayBpbnN0ZWFkIG9mIGFuIGludGVyZmFjZSByZWdpc3RlcmVkIHZpYSBEST8gVGhlIGNhbGwgc2l0ZXNcbiAqIChxdW90YSBmYWlsLW9wZW4sIGV0Yy4pIHNpdCBpbiBkZWVwIGhlbHBlcnMgdGhhdCBuZXZlciB0b3VjaCB0aGUgRXhwcmVzc1xuICogY29udGV4dCwgc28gcmVxdWlyaW5nIGEgYG1ldHJpY3NgIHBhcmFtZXRlciBvbiBldmVyeSBjYWxsIHdvdWxkIG1lYW5cbiAqIHRocmVhZGluZyBpdCB0aHJvdWdoIGRvemVucyBvZiB1bnJlbGF0ZWQgZnVuY3Rpb25zLiBBIHByb2Nlc3Mtc2luZ2xldG9uXG4gKiBjYWxsYmFjayBpcyB0aGUgc2ltcGxlc3Qgbm9uLWludmFzaXZlIG9wdGlvbjsgdGhlIHRyYWRlLW9mZiBpcyBvbmVcbiAqIHNoYXJlZCBnbG9iYWwsIHdoaWNoIGlzIGFjY2VwdGFibGUgZm9yIGEgc2luayB0aGF0J3Mgc3RyaWN0bHkgd3JpdGUtb25seS5cbiAqL1xuXG4vKiogQ2FsbGFibGUgc2lnbmF0dXJlIG1pcnJvcmluZyBhcGktc2VydmVyJ3MgYGluY0NvdW50ZXJgLiAqL1xuZXhwb3J0IHR5cGUgQ291bnRlckVtaXR0ZXIgPSAobmFtZTogc3RyaW5nLCBsYWJlbHM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LCB2YWx1ZT86IG51bWJlcikgPT4gdm9pZDtcblxubGV0IGVtaXR0ZXI6IENvdW50ZXJFbWl0dGVyID0gKCkgPT4ge1xuICAvLyBEZWZhdWx0IG5vLW9wLiBhcGktc2VydmVyIHdpcmVzIHRoaXMgdG8gYSByZWFsIFByb21ldGhldXMgY291bnRlciBhdFxuICAvLyBzdGFydHVwOyB1bnRpbCB0aGVuLCBjYWxscyBmcm9tIGFwaS1jb3JlIGhlbHBlcnMgYXJlIHNpbGVudGx5IGRyb3BwZWRcbiAgLy8gKHdoaWNoIGlzIHdoYXQgd2Ugd2FudCBpbiB0ZXN0cyBhbmQgQ0xJcyB0aGF0IGRvbid0IHJ1biBhIFByb20gc2VydmVyKS5cbn07XG5cbi8qKlxuICogUmVnaXN0ZXIgdGhlIHJlYWwgY291bnRlciBpbXBsZW1lbnRhdGlvbi4gSWRlbXBvdGVudCDigJQgdGhlIGxhc3QgY2FsbCB3aW5zO1xuICogdHlwaWNhbGx5IGNhbGxlZCBvbmNlIGF0IHNlcnZpY2Ugc3RhcnR1cCBmcm9tIGFwaS1zZXJ2ZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRDb3VudGVyRW1pdHRlcihmbjogQ291bnRlckVtaXR0ZXIpOiB2b2lkIHtcbiAgZW1pdHRlciA9IGZuO1xufVxuXG4vKiogUmVzZXQgdG8gdGhlIG5vLW9wIGVtaXR0ZXIuIEZvciB0ZXN0cyB0aGF0IHdhbnQgdG8gY2xlYXIgYW55IHdpcmluZy4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNldENvdW50ZXJFbWl0dGVyKCk6IHZvaWQge1xuICBlbWl0dGVyID0gKCkgPT4gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFJlY29yZCBhIGNvdW50ZXIgZXZlbnQuIFNhZmUgdG8gY2FsbCBmcm9tIGFueSBhcGktY29yZSBtb2R1bGUg4oCUIGlmIG5vXG4gKiBlbWl0dGVyIGlzIHdpcmVkLCB0aGlzIGlzIGEgbm8tb3AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbWl0Q291bnRlcihuYW1lOiBzdHJpbmcsIGxhYmVsczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9LCB2YWx1ZSA9IDEpOiB2b2lkIHtcbiAgdHJ5IHtcbiAgICBlbWl0dGVyKG5hbWUsIGxhYmVscywgdmFsdWUpO1xuICB9IGNhdGNoIHtcbiAgICAvLyBOZXZlciBsZXQgbWV0cmljIGVtaXNzaW9uIGJyZWFrIHRoZSBjYWxsaW5nIHBhdGguIEEgbWlzYmVoYXZpbmdcbiAgICAvLyBlbWl0dGVyIHNob3VsZG4ndCBiZSBhYmxlIHRvIHRha2UgZG93biBxdW90YSBjaGVja3MgKG9yIGFueXRoaW5nIGVsc2UpLlxuICB9XG59XG4iXX0=
@@ -100,7 +100,7 @@ export declare function validateBulkArray<T = unknown>(value: unknown, fieldName
100
100
  * `DATE_TRUNC` first argument in Postgres; restricted to a fixed enum so
101
101
  * the value can never be injected into raw SQL.
102
102
  */
103
- export declare const REPORT_INTERVALS: readonly ["day", "week", "month"];
103
+ export declare const REPORT_INTERVALS: readonly ['day', 'week', 'month'];
104
104
  export type ReportInterval = (typeof REPORT_INTERVALS)[number];
105
105
  /**
106
106
  * Parse + validate a `?interval=` report bucket (defaults to 'week'). Returns the
@@ -203,4 +203,4 @@ export function parseDateRange(query, options = {}) {
203
203
  }
204
204
  return { from: fromStr, to: toStr };
205
205
  }
206
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3BhcmFtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBR3RDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFPL0M7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FDdEIsTUFBa0MsRUFDbEMsR0FBVztJQUVYLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQixJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN4QixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNqRCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUFDLEdBQVk7SUFDbkMsNkVBQTZFO0lBQzdFLDJFQUEyRTtJQUMzRSw2REFBNkQ7SUFDN0QseUVBQXlFO0lBQ3pFLDREQUE0RDtJQUM1RCxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNuRCxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELHNFQUFzRTtJQUN0RSxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNqRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2YsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUs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QUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLHFDQUFxQyxFQUFFLENBQUM7SUFDdEYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxtQ0FBbUMsRUFBRSxDQUFDO0lBQ2xGLElBQUksTUFBTSxHQUFHLElBQUk7UUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLGtDQUFrQyxFQUFFLENBQUM7SUFDeEUsSUFBSSxVQUFVLEtBQUssU0FBUyxJQUFJLElBQUksR0FBRyxNQUFNLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFDM0QsT0FBTyxFQUFFLEtBQUssRUFBRSxpQ0FBaUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMzRyxDQUFDO0lBRUQsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ3RDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHR5cGUgeyBSZXF1ZXN0IH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgeyBnZXRIZWFkZXJTdHJpbmcgfSBmcm9tICcuL2hlYWRlcnMuanMnO1xuXG4vKipcbiAqIEV4cHJlc3MgNSBwYXJhbWV0ZXIgdHlwZS5cbiAqL1xudHlwZSBQYXJhbVZhbHVlID0gc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQ7XG5cbi8qKlxuICogRXh0cmFjdCBhIHNpbmdsZSBzdHJpbmcgcGFyYW1ldGVyIGZyb20gRXhwcmVzcyA1IHJvdXRlIHBhcmFtcy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gUmVxdWVzdCBwYXJhbXMgb2JqZWN0XG4gKiBAcGFyYW0ga2V5IC0gUGFyYW1ldGVyIGtleVxuICogQHJldHVybnMgVGhlIHBhcmFtZXRlciB2YWx1ZSBhcyBhIHN0cmluZywgb3IgdW5kZWZpbmVkIGlmIG5vdCBwcmVzZW50XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIFJvdXRlOiBHRVQgL3BsdWdpbnMvOmlkXG4gKiBjb25zdCBpZCA9IGdldFBhcmFtKHJlcS5wYXJhbXMsICdpZCcpO1xuICogaWYgKCFpZCkge1xuICogICByZXR1cm4gc2VuZEVycm9yKHJlcywgNDAwLCAnTWlzc2luZyBpZCBwYXJhbWV0ZXInKTtcbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFyYW0oXG4gIHBhcmFtczogUmVjb3JkPHN0cmluZywgUGFyYW1WYWx1ZT4sXG4gIGtleTogc3RyaW5nLFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgdmFsdWUgPSBwYXJhbXNba2V5XTtcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlWzBdIDogdmFsdWU7XG59XG5cbi8qKlxuICogRXh0cmFjdCB0aGUgb3JnYW5pemF0aW9uIElEIGZyb20gcmVxdWVzdC5cbiAqIENoZWNrcyBwYXJhbXMsIGhlYWRlcnMsIGFuZCB1c2VyIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gcmVxIC0gRXhwcmVzcyByZXF1ZXN0IG9iamVjdFxuICogQHJldHVybnMgT3JnYW5pemF0aW9uIElEIG9yIHVuZGVmaW5lZFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBvcmdJZCA9IGdldE9yZ0lkKHJlcSk7XG4gKiBpZiAoIW9yZ0lkKSB7XG4gKiAgIHJldHVybiBzZW5kRXJyb3IocmVzLCA0MDAsICdPcmdhbml6YXRpb24gSUQgcmVxdWlyZWQnKTtcbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3JnSWQocmVxOiBSZXF1ZXN0KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgLy8gUHJlZmVyIHRoZSBWRVJJRklFRCBKV1QgaWRlbnRpdHkgZmlyc3QuIEEgc3Bvb2ZhYmxlIGB4LW9yZy1pZGAgaGVhZGVyIG11c3RcbiAgLy8gbmV2ZXIgb3ZlcnJpZGUgYW4gYXV0aGVudGljYXRlZCB1c2VyJ3Mgb3JnIChjcm9zcy10ZW5hbnQgZm9vdGd1bikuIEZvciBhXG4gIC8vIHN1cGVyYWRtaW4gYWN0aW5nIGNyb3NzLW9yZywgcmVxdWlyZUF1dGggYWxyZWFkeSByZS1wb2ludHNcbiAgLy8gYHJlcS51c2VyLm9yZ2FuaXphdGlvbklkYCB0byB0aGUgY2hvc2VuIG9yZyB2aWEgdGhlIGlzU3VwZXJBZG1pbi1nYXRlZFxuICAvLyBoZWFkZXIgb3ZlcnJpZGUsIHNvIHRoaXMgc3RpbGwgeWllbGRzIHRoZSBpbnRlbmRlZCBzY29wZS5cbiAgY29uc3QgdXNlck9yZ0lkID0gcmVxLnVzZXI/Lm9yZ2FuaXphdGlvbklkPy50cmltKCk7XG4gIGlmICh1c2VyT3JnSWQpIHtcbiAgICByZXR1cm4gdXNlck9yZ0lkO1xuICB9XG5cbiAgLy8gUHJlLWF1dGggZmFsbGJhY2tzIG9ubHkgKHJlcS51c2VyIHVuc2V0KTogcm91dGUgcGFyYW0sIHRoZW4gaGVhZGVyLlxuICBjb25zdCBwYXJhbU9yZ0lkID0gZ2V0UGFyYW0ocmVxLnBhcmFtcywgJ29yZ0lkJyk7XG4gIGlmIChwYXJhbU9yZ0lkKSB7XG4gICAgcmV0dXJuIHBhcmFtT3JnSWQ7XG4gIH1cblxuICBjb25zdCBoZWFkZXJPcmdJZCA9IGdldEhlYWRlclN0cmluZyhyZXEuaGVhZGVyc1sneC1vcmctaWQnXSk/LnRyaW0oKTtcbiAgaWYgKGhlYWRlck9yZ0lkKSB7XG4gICAgcmV0dXJuIGhlYWRlck9yZ0lkO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBQYXJzZSBhIHF1ZXJ5IHBhcmFtZXRlciBhcyBhbiBpbnRlZ2VyLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFF1ZXJ5IHBhcmFtZXRlciB2YWx1ZVxuICogQHBhcmFtIGRlZmF1bHRWYWx1ZSAtIERlZmF1bHQgdmFsdWUgaWYgcGFyc2luZyBmYWlsc1xuICogQHJldHVybnMgUGFyc2VkIGludGVnZXJcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbGltaXQgPSBwYXJzZVF1ZXJ5SW50KHJlcS5xdWVyeS5saW1pdCwgMTApO1xuICogY29uc3Qgb2Zmc2V0ID0gcGFyc2VRdWVyeUludChyZXEucXVlcnkub2Zmc2V0LCAwKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VRdWVyeUludCh2YWx1ZTogdW5rbm93biwgZGVmYXVsdFZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gIGNvbnN0IHBhcnNlZCA9IHBhcnNlSW50KFN0cmluZyh2YWx1ZSksIDEwKTtcbiAgcmV0dXJuIGlzTmFOKHBhcnNlZCkgPyBkZWZhdWx0VmFsdWUgOiBwYXJzZWQ7XG59XG5cbi8qKlxuICogUGFyc2UgYSBxdWVyeSBwYXJhbWV0ZXIgYXMgYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gUXVlcnkgcGFyYW1ldGVyIHZhbHVlXG4gKiBAcmV0dXJucyBTdHJpbmcgdmFsdWUgb3IgdW5kZWZpbmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHNlYXJjaCA9IHBhcnNlUXVlcnlTdHJpbmcocmVxLnF1ZXJ5LnNlYXJjaCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUXVlcnlTdHJpbmcodmFsdWU6IHVua25vd24pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHJldHVybiB1bmRlZmluZWQ7XG4gIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuXG4vKipcbiAqIFBhcnNlIGEgc3RyaW5nIHRvIGEgcG9zaXRpdmUgaW50ZWdlciwgcmV0dXJuaW5nIGEgZmFsbGJhY2sgaWYgaW52YWxpZC5cbiAqIFVzZWZ1bCBmb3IgcGFyc2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2l0aCBudW1lcmljIGRlZmF1bHRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQb3NpdGl2ZUludCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkLCBmYWxsYmFjazogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIGZhbGxiYWNrO1xuICBjb25zdCBwYXJzZWQgPSBwYXJzZUludCh2YWx1ZSwgMTApO1xuICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkgJiYgcGFyc2VkID4gMCA/IHBhcnNlZCA6IGZhbGxiYWNrO1xufVxuXG4vKipcbiAqIFBhcnNlIGEgcXVlcnkgaW50LCB0aGVuIGNsYW1wIHRvIGBbMSwgbWF4XWAuIFJldHVybnMgYGRlZmF1bHRWYWx1ZWAgKGFmdGVyXG4gKiB0aGUgc2FtZSBjbGFtcCkgd2hlbiB0aGUgaW5wdXQgaXMgbWlzc2luZy9pbnZhbGlkLiBVc2UgZm9yIGBsaW1pdGAtc3R5bGVcbiAqIHF1ZXJ5IHBhcmFtZXRlcnMgd2hlcmUgYW4gdW5ib3VuZGVkIHZhbHVlIHdvdWxkIGNvc3QgcmVhbCBtb25leS5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgbGltaXQgPSBwYXJzZVF1ZXJ5SW50Q2xhbXBlZChyZXEucXVlcnkubGltaXQsIDUwLCAxMDAwKTtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUXVlcnlJbnRDbGFtcGVkKFxuICB2YWx1ZTogdW5rbm93bixcbiAgZGVmYXVsdFZhbHVlOiBudW1iZXIsXG4gIG1heDogbnVtYmVyLFxuKTogbnVtYmVyIHtcbiAgY29uc3QgcmF3ID0gcGFyc2VRdWVyeUludCh2YWx1ZSwgZGVmYXVsdFZhbHVlKTtcbiAgcmV0dXJuIE1hdGgubWF4KDEsIE1hdGgubWluKHJhdywgbWF4KSk7XG59XG5cbi8qKlxuICogQnVsay1hcnJheSByZXF1ZXN0IGd1YXJkLiBWYWxpZGF0ZXMgdGhhdCBgdmFsdWVgIGlzIGFuIGFycmF5LCBub24tZW1wdHksXG4gKiBhbmQgd2l0aGluIHRoZSBjb25maWd1cmVkIGNhcC4gUmV0dXJucyB0aGUgdHlwZWQgYXJyYXkgb3IgYW4gZXJyb3Igb2JqZWN0XG4gKiB0aGUgY2FsbGVyIGNhbiBmb3J3YXJkIHRvIGBzZW5kRXJyb3JgL2BzZW5kQmFkUmVxdWVzdGAuXG4gKlxuICogUmVwbGFjZXMgYSBoYW5kLXJvbGxlZCBgaWYgKCFBcnJheS5pc0FycmF5KC4uLikpIHsgLi4uIH1gICsgbGVuZ3RoIGNoZWNrXG4gKiBibG9jayB0aGF0IHdhcyBkdXBsaWNhdGVkIGFjcm9zcyBidWxrIGVuZHBvaW50cyBpbiBwaXBlbGluZSwgcGx1Z2luLFxuICogY29tcGxpYW5jZSwgZXRjLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByZXN1bHQgPSB2YWxpZGF0ZUJ1bGtBcnJheShyZXEuYm9keS5pZHMsICdpZHMnKTtcbiAqIGlmICgnZXJyb3InIGluIHJlc3VsdCkgcmV0dXJuIHNlbmRCYWRSZXF1ZXN0KHJlcywgcmVzdWx0LmVycm9yLCBFcnJvckNvZGUuVkFMSURBVElPTl9FUlJPUik7XG4gKiBjb25zdCBpZHMgPSByZXN1bHQudmFsdWU7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUJ1bGtBcnJheTxUID0gdW5rbm93bj4oXG4gIHZhbHVlOiB1bmtub3duLFxuICBmaWVsZE5hbWU6IHN0cmluZyxcbiAgbWF4SXRlbXM/OiBudW1iZXIsXG4pOiB7IHZhbHVlOiBUW10gfSB8IHsgZXJyb3I6IHN0cmluZyB9IHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSB8fCB2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4geyBlcnJvcjogYFJlcXVlc3QgYm9keSBtdXN0IGluY2x1ZGUgYSBub24tZW1wdHkgXCIke2ZpZWxkTmFtZX1cIiBhcnJheWAgfTtcbiAgfVxuICAvLyBDb3JlQ29uc3RhbnRzLk1BWF9CVUxLX0lURU1TIGlzbid0IGltcG9ydGVkIGhlcmUgdG8gYXZvaWQgYSBjaXJjdWxhclxuICAvLyBwYXRoIHRocm91Z2ggY29uc3RhbnRzL2luZGV4OyBjYWxsZXJzIHBhc3MgaXQgZXhwbGljaXRseSBvciBvbWl0IGZvclxuICAvLyBubyB1cHBlciBib3VuZC5cbiAgaWYgKG1heEl0ZW1zICE9PSB1bmRlZmluZWQgJiYgdmFsdWUubGVuZ3RoID4gbWF4SXRlbXMpIHtcbiAgICByZXR1cm4geyBlcnJvcjogYE1heGltdW0gJHttYXhJdGVtc30gaXRlbXMgcGVyIGJ1bGsgb3BlcmF0aW9uYCB9O1xuICB9XG4gIHJldHVybiB7IHZhbHVlOiB2YWx1ZSBhcyBUW10gfTtcbn1cblxuLyoqXG4gKiBTdXBwb3J0ZWQgaW50ZXJ2YWxzIGZvciB0aW1lLWJ1Y2tldGVkIHJlcG9ydCBxdWVyaWVzLiBVc2VkIGFzIHRoZVxuICogYERBVEVfVFJVTkNgIGZpcnN0IGFyZ3VtZW50IGluIFBvc3RncmVzOyByZXN0cmljdGVkIHRvIGEgZml4ZWQgZW51bSBzb1xuICogdGhlIHZhbHVlIGNhbiBuZXZlciBiZSBpbmplY3RlZCBpbnRvIHJhdyBTUUwuXG4gKi9cbmV4cG9ydCBjb25zdCBSRVBPUlRfSU5URVJWQUxTID0gWydkYXknLCAnd2VlaycsICdtb250aCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUmVwb3J0SW50ZXJ2YWwgPSAodHlwZW9mIFJFUE9SVF9JTlRFUlZBTFMpW251bWJlcl07XG5cbi8qKlxuICogUGFyc2UgKyB2YWxpZGF0ZSBhIGA/aW50ZXJ2YWw9YCByZXBvcnQgYnVja2V0IChkZWZhdWx0cyB0byAnd2VlaycpLiBSZXR1cm5zIHRoZVxuICogdmFsaWRhdGVkIGludGVydmFsIG9yIGB7IGVycm9yIH1gLiBTaGFyZWQgYnkgdGhlIHRpbWVzZXJpZXMgcmVwb3J0IHJvdXRlcyBzbyB0aGVcbiAqIGRlZmF1bHQgKyBhbGxvdy1saXN0ICsgZXJyb3IgbWVzc2FnZSBsaXZlIGluIG9uZSBwbGFjZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgaW50ZXJ2YWwgPSBwYXJzZVJlcG9ydEludGVydmFsKHJlcS5xdWVyeSk7XG4gKiBpZiAodHlwZW9mIGludGVydmFsID09PSAnb2JqZWN0JykgcmV0dXJuIHNlbmRCYWRSZXF1ZXN0KHJlcywgaW50ZXJ2YWwuZXJyb3IsIEVycm9yQ29kZS5WQUxJREFUSU9OX0VSUk9SKTtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUmVwb3J0SW50ZXJ2YWwocXVlcnk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogUmVwb3J0SW50ZXJ2YWwgfCB7IGVycm9yOiBzdHJpbmcgfSB7XG4gIGNvbnN0IGludGVydmFsID0gU3RyaW5nKHF1ZXJ5LmludGVydmFsID8/ICd3ZWVrJyk7XG4gIGlmICghUkVQT1JUX0lOVEVSVkFMUy5pbmNsdWRlcyhpbnRlcnZhbCBhcyBSZXBvcnRJbnRlcnZhbCkpIHtcbiAgICByZXR1cm4geyBlcnJvcjogYGludGVydmFsIG11c3QgYmUgb25lIG9mOiAke1JFUE9SVF9JTlRFUlZBTFMuam9pbignLCAnKX1gIH07XG4gIH1cbiAgcmV0dXJuIGludGVydmFsIGFzIFJlcG9ydEludGVydmFsO1xufVxuXG4vKipcbiAqIFBhcnNlIGEgYD9mcm9tPSZ0bz1gIGRhdGUgcmFuZ2Ugd2l0aCBkZWZhdWx0cyBvZiBcIjMwIGRheXMgYWdvIOKGkiBub3dcIi5cbiAqIFJlamVjdHMgbm9uLXN0cmluZyBpbnB1dHMgKEV4cHJlc3MncyBwYXJzZXIgY2FuIHByb2R1Y2Ugc3RyaW5nW10gZm9yXG4gKiByZXBlYXRlZCBrZXlzKSwgaW52YWxpZCBJU08gdGltZXN0YW1wcywgYW5kIGludmVydGVkIHJhbmdlcy5cbiAqXG4gKiBSZXR1cm5zIGVpdGhlciBgeyBmcm9tLCB0byB9YCBJU08gc3RyaW5ncyBvciBgeyBlcnJvciB9YC5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgcmFuZ2UgPSBwYXJzZURhdGVSYW5nZShyZXEucXVlcnkpO1xuICogaWYgKCdlcnJvcicgaW4gcmFuZ2UpIHJldHVybiBzZW5kQmFkUmVxdWVzdChyZXMsIHJhbmdlLmVycm9yLCBFcnJvckNvZGUuVkFMSURBVElPTl9FUlJPUik7XG4gKiBjb25zdCByb3dzID0gYXdhaXQgc3ZjLmxpc3QocmFuZ2UuZnJvbSwgcmFuZ2UudG8pO1xuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VEYXRlUmFuZ2UoXG4gIHF1ZXJ5OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgb3B0aW9uczogeyBtYXhSYW5nZU1zPzogbnVtYmVyOyBkZWZhdWx0RGF5c0JhY2s/OiBudW1iZXIgfSA9IHt9LFxuKTogeyBmcm9tOiBzdHJpbmc7IHRvOiBzdHJpbmcgfSB8IHsgZXJyb3I6IHN0cmluZyB9IHtcbiAgY29uc3QgeyBtYXhSYW5nZU1zLCBkZWZhdWx0RGF5c0JhY2sgPSAzMCB9ID0gb3B0aW9ucztcblxuICBjb25zdCByYXdGcm9tID0gcXVlcnkuZnJvbTtcbiAgY29uc3QgcmF3VG8gPSBxdWVyeS50bztcblxuICBpZiAocmF3RnJvbSAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiByYXdGcm9tICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB7IGVycm9yOiAnXCJmcm9tXCIgbXVzdCBiZSBhIHNpbmdsZSBJU08gdGltZXN0YW1wIHN0cmluZycgfTtcbiAgfVxuICBpZiAocmF3VG8gIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgcmF3VG8gIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHsgZXJyb3I6ICdcInRvXCIgbXVzdCBiZSBhIHNpbmdsZSBJU08gdGltZXN0YW1wIHN0cmluZycgfTtcbiAgfVxuXG4gIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gIGNvbnN0IGZyb21TdHIgPSByYXdGcm9tID8/IG5ldyBEYXRlKG5vdyAtIGRlZmF1bHREYXlzQmFjayAqIDI0ICogNjAgKiA2MCAqIDEwMDApLnRvSVNPU3RyaW5nKCk7XG4gIGNvbnN0IHRvU3RyID0gcmF3VG8gPz8gbmV3IERhdGUobm93KS50b0lTT1N0cmluZygpO1xuXG4gIGNvbnN0IGZyb21NcyA9IERhdGUucGFyc2UoZnJvbVN0cik7XG4gIGNvbnN0IHRvTXMgPSBEYXRlLnBhcnNlKHRvU3RyKTtcbiAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoZnJvbU1zKSkgcmV0dXJuIHsgZXJyb3I6ICdcImZyb21cIiBpcyBub3QgYSB2YWxpZCBJU08gdGltZXN0YW1wJyB9O1xuICBpZiAoIU51bWJlci5pc0Zpbml0ZSh0b01zKSkgcmV0dXJuIHsgZXJyb3I6ICdcInRvXCIgaXMgbm90IGEgdmFsaWQgSVNPIHRpbWVzdGFtcCcgfTtcbiAgaWYgKGZyb21NcyA+IHRvTXMpIHJldHVybiB7IGVycm9yOiAnXCJmcm9tXCIgbXVzdCBiZSBlYXJsaWVyIHRoYW4gXCJ0b1wiJyB9O1xuICBpZiAobWF4UmFuZ2VNcyAhPT0gdW5kZWZpbmVkICYmIHRvTXMgLSBmcm9tTXMgPiBtYXhSYW5nZU1zKSB7XG4gICAgcmV0dXJuIHsgZXJyb3I6IGBEYXRlIHJhbmdlIGV4Y2VlZHMgbWF4aW11bSBvZiAke01hdGguZmxvb3IobWF4UmFuZ2VNcyAvICgyNCAqIDYwICogNjAgKiAxMDAwKSl9IGRheXNgIH07XG4gIH1cblxuICByZXR1cm4geyBmcm9tOiBmcm9tU3RyLCB0bzogdG9TdHIgfTtcbn1cbiJdfQ==
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3BhcmFtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBR3RDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFPL0M7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FDdEIsTUFBa0MsRUFDbEMsR0FBVztJQUVYLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQixJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN4QixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNqRCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUFDLEdBQVk7SUFDbkMsNkVBQTZFO0lBQzdFLDJFQUEyRTtJQUMzRSw2REFBNkQ7SUFDN0QseUVBQXlFO0lBQ3pFLDREQUE0RDtJQUM1RCxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNuRCxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELHNFQUFzRTtJQUN0RSxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNqRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2YsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUs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QUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUscUNBQXFDLEVBQUUsQ0FBQztJQUN0RixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLG1DQUFtQyxFQUFFLENBQUM7SUFDbEYsSUFBSSxNQUFNLEdBQUcsSUFBSTtRQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsa0NBQWtDLEVBQUUsQ0FBQztJQUN4RSxJQUFJLFVBQVUsS0FBSyxTQUFTLElBQUksSUFBSSxHQUFHLE1BQU0sR0FBRyxVQUFVLEVBQUUsQ0FBQztRQUMzRCxPQUFPLEVBQUUsS0FBSyxFQUFFLGlDQUFpQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNHLENBQUM7SUFFRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDdEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgdHlwZSB7IFJlcXVlc3QgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCB7IGdldEhlYWRlclN0cmluZyB9IGZyb20gJy4vaGVhZGVycy5qcyc7XG5cbi8qKlxuICogRXhwcmVzcyA1IHBhcmFtZXRlciB0eXBlLlxuICovXG50eXBlIFBhcmFtVmFsdWUgPSBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBFeHRyYWN0IGEgc2luZ2xlIHN0cmluZyBwYXJhbWV0ZXIgZnJvbSBFeHByZXNzIDUgcm91dGUgcGFyYW1zLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBSZXF1ZXN0IHBhcmFtcyBvYmplY3RcbiAqIEBwYXJhbSBrZXkgLSBQYXJhbWV0ZXIga2V5XG4gKiBAcmV0dXJucyBUaGUgcGFyYW1ldGVyIHZhbHVlIGFzIGEgc3RyaW5nLCBvciB1bmRlZmluZWQgaWYgbm90IHByZXNlbnRcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gUm91dGU6IEdFVCAvcGx1Z2lucy86aWRcbiAqIGNvbnN0IGlkID0gZ2V0UGFyYW0ocmVxLnBhcmFtcywgJ2lkJyk7XG4gKiBpZiAoIWlkKSB7XG4gKiAgIHJldHVybiBzZW5kRXJyb3IocmVzLCA0MDAsICdNaXNzaW5nIGlkIHBhcmFtZXRlcicpO1xuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXJhbShcbiAgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBQYXJhbVZhbHVlPixcbiAga2V5OiBzdHJpbmcsXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCB2YWx1ZSA9IHBhcmFtc1trZXldO1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWVbMF0gOiB2YWx1ZTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0IHRoZSBvcmdhbml6YXRpb24gSUQgZnJvbSByZXF1ZXN0LlxuICogQ2hlY2tzIHBhcmFtcywgaGVhZGVycywgYW5kIHVzZXIgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSByZXEgLSBFeHByZXNzIHJlcXVlc3Qgb2JqZWN0XG4gKiBAcmV0dXJucyBPcmdhbml6YXRpb24gSUQgb3IgdW5kZWZpbmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG9yZ0lkID0gZ2V0T3JnSWQocmVxKTtcbiAqIGlmICghb3JnSWQpIHtcbiAqICAgcmV0dXJuIHNlbmRFcnJvcihyZXMsIDQwMCwgJ09yZ2FuaXphdGlvbiBJRCByZXF1aXJlZCcpO1xuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRPcmdJZChyZXE6IFJlcXVlc3QpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAvLyBQcmVmZXIgdGhlIFZFUklGSUVEIEpXVCBpZGVudGl0eSBmaXJzdC4gQSBzcG9vZmFibGUgYHgtb3JnLWlkYCBoZWFkZXIgbXVzdFxuICAvLyBuZXZlciBvdmVycmlkZSBhbiBhdXRoZW50aWNhdGVkIHVzZXIncyBvcmcgKGNyb3NzLXRlbmFudCBmb290Z3VuKS4gRm9yIGFcbiAgLy8gc3VwZXJhZG1pbiBhY3RpbmcgY3Jvc3Mtb3JnLCByZXF1aXJlQXV0aCBhbHJlYWR5IHJlLXBvaW50c1xuICAvLyBgcmVxLnVzZXIub3JnYW5pemF0aW9uSWRgIHRvIHRoZSBjaG9zZW4gb3JnIHZpYSB0aGUgaXNTdXBlckFkbWluLWdhdGVkXG4gIC8vIGhlYWRlciBvdmVycmlkZSwgc28gdGhpcyBzdGlsbCB5aWVsZHMgdGhlIGludGVuZGVkIHNjb3BlLlxuICBjb25zdCB1c2VyT3JnSWQgPSByZXEudXNlcj8ub3JnYW5pemF0aW9uSWQ/LnRyaW0oKTtcbiAgaWYgKHVzZXJPcmdJZCkge1xuICAgIHJldHVybiB1c2VyT3JnSWQ7XG4gIH1cblxuICAvLyBQcmUtYXV0aCBmYWxsYmFja3Mgb25seSAocmVxLnVzZXIgdW5zZXQpOiByb3V0ZSBwYXJhbSwgdGhlbiBoZWFkZXIuXG4gIGNvbnN0IHBhcmFtT3JnSWQgPSBnZXRQYXJhbShyZXEucGFyYW1zLCAnb3JnSWQnKTtcbiAgaWYgKHBhcmFtT3JnSWQpIHtcbiAgICByZXR1cm4gcGFyYW1PcmdJZDtcbiAgfVxuXG4gIGNvbnN0IGhlYWRlck9yZ0lkID0gZ2V0SGVhZGVyU3RyaW5nKHJlcS5oZWFkZXJzWyd4LW9yZy1pZCddKT8udHJpbSgpO1xuICBpZiAoaGVhZGVyT3JnSWQpIHtcbiAgICByZXR1cm4gaGVhZGVyT3JnSWQ7XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFBhcnNlIGEgcXVlcnkgcGFyYW1ldGVyIGFzIGFuIGludGVnZXIuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gUXVlcnkgcGFyYW1ldGVyIHZhbHVlXG4gKiBAcGFyYW0gZGVmYXVsdFZhbHVlIC0gRGVmYXVsdCB2YWx1ZSBpZiBwYXJzaW5nIGZhaWxzXG4gKiBAcmV0dXJucyBQYXJzZWQgaW50ZWdlclxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBsaW1pdCA9IHBhcnNlUXVlcnlJbnQocmVxLnF1ZXJ5LmxpbWl0LCAxMCk7XG4gKiBjb25zdCBvZmZzZXQgPSBwYXJzZVF1ZXJ5SW50KHJlcS5xdWVyeS5vZmZzZXQsIDApO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVF1ZXJ5SW50KHZhbHVlOiB1bmtub3duLCBkZWZhdWx0VmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSAnJykgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgY29uc3QgcGFyc2VkID0gcGFyc2VJbnQoU3RyaW5nKHZhbHVlKSwgMTApO1xuICByZXR1cm4gaXNOYU4ocGFyc2VkKSA/IGRlZmF1bHRWYWx1ZSA6IHBhcnNlZDtcbn1cblxuLyoqXG4gKiBQYXJzZSBhIHF1ZXJ5IHBhcmFtZXRlciBhcyBhIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBRdWVyeSBwYXJhbWV0ZXIgdmFsdWVcbiAqIEByZXR1cm5zIFN0cmluZyB2YWx1ZSBvciB1bmRlZmluZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3Qgc2VhcmNoID0gcGFyc2VRdWVyeVN0cmluZyhyZXEucXVlcnkuc2VhcmNoKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VRdWVyeVN0cmluZyh2YWx1ZTogdW5rbm93bik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSAnJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG5cbi8qKlxuICogUGFyc2UgYSBzdHJpbmcgdG8gYSBwb3NpdGl2ZSBpbnRlZ2VyLCByZXR1cm5pbmcgYSBmYWxsYmFjayBpZiBpbnZhbGlkLlxuICogVXNlZnVsIGZvciBwYXJzaW5nIGVudmlyb25tZW50IHZhcmlhYmxlcyB3aXRoIG51bWVyaWMgZGVmYXVsdHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVBvc2l0aXZlSW50KHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQsIGZhbGxiYWNrOiBudW1iZXIpOiBudW1iZXIge1xuICBpZiAoIXZhbHVlKSByZXR1cm4gZmFsbGJhY2s7XG4gIGNvbnN0IHBhcnNlZCA9IHBhcnNlSW50KHZhbHVlLCAxMCk7XG4gIHJldHVybiBOdW1iZXIuaXNGaW5pdGUocGFyc2VkKSAmJiBwYXJzZWQgPiAwID8gcGFyc2VkIDogZmFsbGJhY2s7XG59XG5cbi8qKlxuICogUGFyc2UgYSBxdWVyeSBpbnQsIHRoZW4gY2xhbXAgdG8gYFsxLCBtYXhdYC4gUmV0dXJucyBgZGVmYXVsdFZhbHVlYCAoYWZ0ZXJcbiAqIHRoZSBzYW1lIGNsYW1wKSB3aGVuIHRoZSBpbnB1dCBpcyBtaXNzaW5nL2ludmFsaWQuIFVzZSBmb3IgYGxpbWl0YC1zdHlsZVxuICogcXVlcnkgcGFyYW1ldGVycyB3aGVyZSBhbiB1bmJvdW5kZWQgdmFsdWUgd291bGQgY29zdCByZWFsIG1vbmV5LlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBsaW1pdCA9IHBhcnNlUXVlcnlJbnRDbGFtcGVkKHJlcS5xdWVyeS5saW1pdCwgNTAsIDEwMDApO1xuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VRdWVyeUludENsYW1wZWQoXG4gIHZhbHVlOiB1bmtub3duLFxuICBkZWZhdWx0VmFsdWU6IG51bWJlcixcbiAgbWF4OiBudW1iZXIsXG4pOiBudW1iZXIge1xuICBjb25zdCByYXcgPSBwYXJzZVF1ZXJ5SW50KHZhbHVlLCBkZWZhdWx0VmFsdWUpO1xuICByZXR1cm4gTWF0aC5tYXgoMSwgTWF0aC5taW4ocmF3LCBtYXgpKTtcbn1cblxuLyoqXG4gKiBCdWxrLWFycmF5IHJlcXVlc3QgZ3VhcmQuIFZhbGlkYXRlcyB0aGF0IGB2YWx1ZWAgaXMgYW4gYXJyYXksIG5vbi1lbXB0eSxcbiAqIGFuZCB3aXRoaW4gdGhlIGNvbmZpZ3VyZWQgY2FwLiBSZXR1cm5zIHRoZSB0eXBlZCBhcnJheSBvciBhbiBlcnJvciBvYmplY3RcbiAqIHRoZSBjYWxsZXIgY2FuIGZvcndhcmQgdG8gYHNlbmRFcnJvcmAvYHNlbmRCYWRSZXF1ZXN0YC5cbiAqXG4gKiBSZXBsYWNlcyBhIGhhbmQtcm9sbGVkIGBpZiAoIUFycmF5LmlzQXJyYXkoLi4uKSkgeyAuLi4gfWAgKyBsZW5ndGggY2hlY2tcbiAqIGJsb2NrIHRoYXQgd2FzIGR1cGxpY2F0ZWQgYWNyb3NzIGJ1bGsgZW5kcG9pbnRzIGluIHBpcGVsaW5lLCBwbHVnaW4sXG4gKiBjb21wbGlhbmNlLCBldGMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHJlc3VsdCA9IHZhbGlkYXRlQnVsa0FycmF5KHJlcS5ib2R5LmlkcywgJ2lkcycpO1xuICogaWYgKCdlcnJvcicgaW4gcmVzdWx0KSByZXR1cm4gc2VuZEJhZFJlcXVlc3QocmVzLCByZXN1bHQuZXJyb3IsIEVycm9yQ29kZS5WQUxJREFUSU9OX0VSUk9SKTtcbiAqIGNvbnN0IGlkcyA9IHJlc3VsdC52YWx1ZTtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlQnVsa0FycmF5PFQgPSB1bmtub3duPihcbiAgdmFsdWU6IHVua25vd24sXG4gIGZpZWxkTmFtZTogc3RyaW5nLFxuICBtYXhJdGVtcz86IG51bWJlcixcbik6IHsgdmFsdWU6IFRbXSB9IHwgeyBlcnJvcjogc3RyaW5nIH0ge1xuICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpIHx8IHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB7IGVycm9yOiBgUmVxdWVzdCBib2R5IG11c3QgaW5jbHVkZSBhIG5vbi1lbXB0eSBcIiR7ZmllbGROYW1lfVwiIGFycmF5YCB9O1xuICB9XG4gIC8vIENvcmVDb25zdGFudHMuTUFYX0JVTEtfSVRFTVMgaXNuJ3QgaW1wb3J0ZWQgaGVyZSB0byBhdm9pZCBhIGNpcmN1bGFyXG4gIC8vIHBhdGggdGhyb3VnaCBjb25zdGFudHMvaW5kZXg7IGNhbGxlcnMgcGFzcyBpdCBleHBsaWNpdGx5IG9yIG9taXQgZm9yXG4gIC8vIG5vIHVwcGVyIGJvdW5kLlxuICBpZiAobWF4SXRlbXMgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZS5sZW5ndGggPiBtYXhJdGVtcykge1xuICAgIHJldHVybiB7IGVycm9yOiBgTWF4aW11bSAke21heEl0ZW1zfSBpdGVtcyBwZXIgYnVsayBvcGVyYXRpb25gIH07XG4gIH1cbiAgcmV0dXJuIHsgdmFsdWU6IHZhbHVlIGFzIFRbXSB9O1xufVxuXG4vKipcbiAqIFN1cHBvcnRlZCBpbnRlcnZhbHMgZm9yIHRpbWUtYnVja2V0ZWQgcmVwb3J0IHF1ZXJpZXMuIFVzZWQgYXMgdGhlXG4gKiBgREFURV9UUlVOQ2AgZmlyc3QgYXJndW1lbnQgaW4gUG9zdGdyZXM7IHJlc3RyaWN0ZWQgdG8gYSBmaXhlZCBlbnVtIHNvXG4gKiB0aGUgdmFsdWUgY2FuIG5ldmVyIGJlIGluamVjdGVkIGludG8gcmF3IFNRTC5cbiAqL1xuZXhwb3J0IGNvbnN0IFJFUE9SVF9JTlRFUlZBTFMgPSBbJ2RheScsICd3ZWVrJywgJ21vbnRoJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBSZXBvcnRJbnRlcnZhbCA9ICh0eXBlb2YgUkVQT1JUX0lOVEVSVkFMUylbbnVtYmVyXTtcblxuLyoqXG4gKiBQYXJzZSArIHZhbGlkYXRlIGEgYD9pbnRlcnZhbD1gIHJlcG9ydCBidWNrZXQgKGRlZmF1bHRzIHRvICd3ZWVrJykuIFJldHVybnMgdGhlXG4gKiB2YWxpZGF0ZWQgaW50ZXJ2YWwgb3IgYHsgZXJyb3IgfWAuIFNoYXJlZCBieSB0aGUgdGltZXNlcmllcyByZXBvcnQgcm91dGVzIHNvIHRoZVxuICogZGVmYXVsdCArIGFsbG93LWxpc3QgKyBlcnJvciBtZXNzYWdlIGxpdmUgaW4gb25lIHBsYWNlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBpbnRlcnZhbCA9IHBhcnNlUmVwb3J0SW50ZXJ2YWwocmVxLnF1ZXJ5KTtcbiAqIGlmICh0eXBlb2YgaW50ZXJ2YWwgPT09ICdvYmplY3QnKSByZXR1cm4gc2VuZEJhZFJlcXVlc3QocmVzLCBpbnRlcnZhbC5lcnJvciwgRXJyb3JDb2RlLlZBTElEQVRJT05fRVJST1IpO1xuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VSZXBvcnRJbnRlcnZhbChxdWVyeTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBSZXBvcnRJbnRlcnZhbCB8IHsgZXJyb3I6IHN0cmluZyB9IHtcbiAgY29uc3QgaW50ZXJ2YWwgPSBTdHJpbmcocXVlcnkuaW50ZXJ2YWwgPz8gJ3dlZWsnKTtcbiAgaWYgKCFSRVBPUlRfSU5URVJWQUxTLmluY2x1ZGVzKGludGVydmFsIGFzIFJlcG9ydEludGVydmFsKSkge1xuICAgIHJldHVybiB7IGVycm9yOiBgaW50ZXJ2YWwgbXVzdCBiZSBvbmUgb2Y6ICR7UkVQT1JUX0lOVEVSVkFMUy5qb2luKCcsICcpfWAgfTtcbiAgfVxuICByZXR1cm4gaW50ZXJ2YWwgYXMgUmVwb3J0SW50ZXJ2YWw7XG59XG5cbi8qKlxuICogUGFyc2UgYSBgP2Zyb209JnRvPWAgZGF0ZSByYW5nZSB3aXRoIGRlZmF1bHRzIG9mIFwiMzAgZGF5cyBhZ28g4oaSIG5vd1wiLlxuICogUmVqZWN0cyBub24tc3RyaW5nIGlucHV0cyAoRXhwcmVzcydzIHBhcnNlciBjYW4gcHJvZHVjZSBzdHJpbmdbXSBmb3JcbiAqIHJlcGVhdGVkIGtleXMpLCBpbnZhbGlkIElTTyB0aW1lc3RhbXBzLCBhbmQgaW52ZXJ0ZWQgcmFuZ2VzLlxuICpcbiAqIFJldHVybnMgZWl0aGVyIGB7IGZyb20sIHRvIH1gIElTTyBzdHJpbmdzIG9yIGB7IGVycm9yIH1gLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByYW5nZSA9IHBhcnNlRGF0ZVJhbmdlKHJlcS5xdWVyeSk7XG4gKiBpZiAoJ2Vycm9yJyBpbiByYW5nZSkgcmV0dXJuIHNlbmRCYWRSZXF1ZXN0KHJlcywgcmFuZ2UuZXJyb3IsIEVycm9yQ29kZS5WQUxJREFUSU9OX0VSUk9SKTtcbiAqIGNvbnN0IHJvd3MgPSBhd2FpdCBzdmMubGlzdChyYW5nZS5mcm9tLCByYW5nZS50byk7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZURhdGVSYW5nZShcbiAgcXVlcnk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBvcHRpb25zOiB7IG1heFJhbmdlTXM/OiBudW1iZXI7IGRlZmF1bHREYXlzQmFjaz86IG51bWJlciB9ID0ge30sXG4pOiB7IGZyb206IHN0cmluZzsgdG86IHN0cmluZyB9IHwgeyBlcnJvcjogc3RyaW5nIH0ge1xuICBjb25zdCB7IG1heFJhbmdlTXMsIGRlZmF1bHREYXlzQmFjayA9IDMwIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IHJhd0Zyb20gPSBxdWVyeS5mcm9tO1xuICBjb25zdCByYXdUbyA9IHF1ZXJ5LnRvO1xuXG4gIGlmIChyYXdGcm9tICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIHJhd0Zyb20gIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHsgZXJyb3I6ICdcImZyb21cIiBtdXN0IGJlIGEgc2luZ2xlIElTTyB0aW1lc3RhbXAgc3RyaW5nJyB9O1xuICB9XG4gIGlmIChyYXdUbyAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiByYXdUbyAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4geyBlcnJvcjogJ1widG9cIiBtdXN0IGJlIGEgc2luZ2xlIElTTyB0aW1lc3RhbXAgc3RyaW5nJyB9O1xuICB9XG5cbiAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgY29uc3QgZnJvbVN0ciA9IHJhd0Zyb20gPz8gbmV3IERhdGUobm93IC0gZGVmYXVsdERheXNCYWNrICogMjQgKiA2MCAqIDYwICogMTAwMCkudG9JU09TdHJpbmcoKTtcbiAgY29uc3QgdG9TdHIgPSByYXdUbyA/PyBuZXcgRGF0ZShub3cpLnRvSVNPU3RyaW5nKCk7XG5cbiAgY29uc3QgZnJvbU1zID0gRGF0ZS5wYXJzZShmcm9tU3RyKTtcbiAgY29uc3QgdG9NcyA9IERhdGUucGFyc2UodG9TdHIpO1xuICBpZiAoIU51bWJlci5pc0Zpbml0ZShmcm9tTXMpKSByZXR1cm4geyBlcnJvcjogJ1wiZnJvbVwiIGlzIG5vdCBhIHZhbGlkIElTTyB0aW1lc3RhbXAnIH07XG4gIGlmICghTnVtYmVyLmlzRmluaXRlKHRvTXMpKSByZXR1cm4geyBlcnJvcjogJ1widG9cIiBpcyBub3QgYSB2YWxpZCBJU08gdGltZXN0YW1wJyB9O1xuICBpZiAoZnJvbU1zID4gdG9NcykgcmV0dXJuIHsgZXJyb3I6ICdcImZyb21cIiBtdXN0IGJlIGVhcmxpZXIgdGhhbiBcInRvXCInIH07XG4gIGlmIChtYXhSYW5nZU1zICE9PSB1bmRlZmluZWQgJiYgdG9NcyAtIGZyb21NcyA+IG1heFJhbmdlTXMpIHtcbiAgICByZXR1cm4geyBlcnJvcjogYERhdGUgcmFuZ2UgZXhjZWVkcyBtYXhpbXVtIG9mICR7TWF0aC5mbG9vcihtYXhSYW5nZU1zIC8gKDI0ICogNjAgKiA2MCAqIDEwMDApKX0gZGF5c2AgfTtcbiAgfVxuXG4gIHJldHVybiB7IGZyb206IGZyb21TdHIsIHRvOiB0b1N0ciB9O1xufVxuIl19
@@ -212,4 +212,4 @@ export function parsePaginationParams(query) {
212
212
  const sortOrder = String(query.sortOrder || 'desc').toLowerCase() === 'asc' ? 'asc' : 'desc';
213
213
  return { limit, offset, sortBy, sortOrder };
214
214
  }
215
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcmVzcG9uc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUd0QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFakUsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBRXhDOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUN6QixHQUFhLEVBQ2IsYUFBcUIsR0FBRyxFQUN4QixJQUFRLEVBQ1IsT0FBZ0I7SUFFaEIsSUFBSSxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEIsTUFBTSxDQUFDLElBQUksQ0FBQyxzREFBc0QsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDcEYsT0FBTztJQUNULENBQUM7SUFFRCxNQUFNLFFBQVEsR0FLVjtRQUNGLE9BQU8sRUFBRSxJQUFJO1FBQ2IsVUFBVTtLQUNYLENBQUM7SUFFRixJQUFJLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN2QixRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNaLFFBQVEsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQzdCLENBQUM7SUFFRCxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUN2QixHQUFhLEVBQ2IsVUFBa0IsRUFDbEIsT0FBZSxFQUNmLElBQXlC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R0FBRyxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2xFLENBQUM7QUFZRCxpRkFBaUY7QUFDakYsTUFBTSxVQUFVLHFCQUFxQixDQUFDLEtBQThCO0lBQ2xFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDN0YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEUsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksV0FBVyxDQUFDLENBQUM7SUFDbkQsTUFBTSxTQUFTLEdBQ2IsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUU3RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUM7QUFDOUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgdHlwZSB7IFJlc3BvbnNlIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tICcuL2xvZ2dlci5qcyc7XG5pbXBvcnQgdHlwZSB7IFF1b3RhSW5mbyB9IGZyb20gJy4uL3R5cGVzL2NvbW1vbi5qcyc7XG5pbXBvcnQgeyBFcnJvckNvZGUgfSBmcm9tICcuLi90eXBlcy9lcnJvci1jb2Rlcy5qcyc7XG5pbXBvcnQgeyBNQVhfUEFHRV9MSU1JVCB9IGZyb20gJy4uL3ZhbGlkYXRpb24vY29tbW9uLXNjaGVtYXMuanMnO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoJ3Jlc3BvbnNlJyk7XG5cbi8qKlxuICogU2VuZCBhIHN0YW5kYXJkaXplZCBzdWNjZXNzIHJlc3BvbnNlLlxuICpcbiAqIEBwYXJhbSByZXMgLSBFeHByZXNzIHJlc3BvbnNlIG9iamVjdFxuICogQHBhcmFtIHN0YXR1c0NvZGUgLSBIVFRQIHN0YXR1cyBjb2RlIChkZWZhdWx0OiAyMDApXG4gKiBAcGFyYW0gZGF0YSAtIFJlc3BvbnNlIGRhdGFcbiAqIEBwYXJhbSBtZXNzYWdlIC0gT3B0aW9uYWwgc3VjY2VzcyBtZXNzYWdlXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHNlbmRTdWNjZXNzKHJlcywgMjAwLCB7IHBsdWdpbjogcGx1Z2luRGF0YSB9KTtcbiAqIHNlbmRTdWNjZXNzKHJlcywgMjAxLCB7IGlkOiBuZXdJZCB9LCAnUmVzb3VyY2UgY3JlYXRlZCcpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZW5kU3VjY2VzczxUPihcbiAgcmVzOiBSZXNwb25zZSxcbiAgc3RhdHVzQ29kZTogbnVtYmVyID0gMjAwLFxuICBkYXRhPzogVCxcbiAgbWVzc2FnZT86IHN0cmluZyxcbik6IHZvaWQge1xuICBpZiAocmVzLmhlYWRlcnNTZW50KSB7XG4gICAgbG9nZ2VyLndhcm4oJ0F0dGVtcHRlZCB0byBzZW5kIHN1Y2Nlc3MgYWZ0ZXIgaGVhZGVycyBhbHJlYWR5IHNlbnQnLCB7IHN0YXR1c0NvZGUgfSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzcG9uc2U6IHtcbiAgICBzdWNjZXNzOiB0cnVlO1xuICAgIHN0YXR1c0NvZGU6IG51bWJlcjtcbiAgICBkYXRhPzogVDtcbiAgICBtZXNzYWdlPzogc3RyaW5nO1xuICB9ID0ge1xuICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgc3RhdHVzQ29kZSxcbiAgfTtcblxuICBpZiAoZGF0YSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmVzcG9uc2UuZGF0YSA9IGRhdGE7XG4gIH1cblxuICBpZiAobWVzc2FnZSkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICB9XG5cbiAgcmVzLnN0YXR1cyhzdGF0dXNDb2RlKS5qc29uKHJlc3BvbnNlKTtcbn1cblxuLyoqXG4gKiBTZW5kIGEgc3RhbmRhcmRpemVkIGVycm9yIHJlc3BvbnNlLlxuICpcbiAqIEBwYXJhbSByZXMgLSBFeHByZXNzIHJlc3BvbnNlIG9iamVjdFxuICogQHBhcmFtIHN0YXR1c0NvZGUgLSBIVFRQIHN0YXR1cyBjb2RlXG4gKiBAcGFyYW0gbWVzc2FnZSAtIEVycm9yIG1lc3NhZ2VcbiAqIEBwYXJhbSBjb2RlIC0gRXJyb3IgY29kZSBmcm9tIEVycm9yQ29kZSBlbnVtXG4gKiBAcGFyYW0gZGV0YWlscyAtIE9wdGlvbmFsIGFkZGl0aW9uYWwgZGV0YWlsc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBzZW5kRXJyb3IocmVzLCA0MDQsICdQbHVnaW4gbm90IGZvdW5kJywgRXJyb3JDb2RlLk5PVF9GT1VORCk7XG4gKiBzZW5kRXJyb3IocmVzLCA0MDAsICdJbnZhbGlkIGlucHV0JywgRXJyb3JDb2RlLlZBTElEQVRJT05fRVJST1IsIHsgZmllbGQ6ICduYW1lJyB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VuZEVycm9yKFxuICByZXM6IFJlc3BvbnNlLFxuICBzdGF0dXNDb2RlOiBudW1iZXIsXG4gIG1lc3NhZ2U6IHN0cmluZyxcbiAgY29kZT86IEVycm9yQ29kZSB8IHN0cmluZyxcbiAgZGV0YWlscz86IHVua25vd24sXG4pOiB2b2lkIHtcbiAgaWYgKHJlcy5oZWFkZXJzU2VudCkge1xuICAgIGxvZ2dlci53YXJuKCdBdHRlbXB0ZWQgdG8gc2VuZCBlcnJvciBhZnRlciBoZWFkZXJzIGFscmVhZHkgc2VudCcsIHsgc3RhdHVzQ29kZSwgbWVzc2FnZSB9KTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCByZXNwb25zZToge1xuICAgIHN1Y2Nlc3M6IGZhbHNlO1xuICAgIHN0YXR1c0NvZGU6IG51bWJlcjtcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgY29kZT86IHN0cmluZztcbiAgICBkZXRhaWxzPzogdW5rbm93bjtcbiAgfSA9IHtcbiAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICBzdGF0dXNDb2RlLFxuICAgIG1lc3NhZ2UsXG4gIH07XG5cbiAgaWYgKGNvZGUpIHtcbiAgICByZXNwb25zZS5jb2RlID0gY29kZTtcbiAgfVxuXG4gIGlmIChkZXRhaWxzICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXNwb25zZS5kZXRhaWxzID0gZGV0YWlscztcbiAgfVxuXG4gIHJlcy5zdGF0dXMoc3RhdHVzQ29kZSkuanNvbihyZXNwb25zZSk7XG59XG5cbi8qKlxuICogU2VuZCBhIHF1b3RhIGV4Y2VlZGVkIGVycm9yIHJlc3BvbnNlLlxuICpcbiAqIEBwYXJhbSByZXMgLSBFeHByZXNzIHJlc3BvbnNlIG9iamVjdFxuICogQHBhcmFtIHF1b3RhVHlwZSAtIFR5cGUgb2YgcXVvdGEgZXhjZWVkZWRcbiAqIEBwYXJhbSBxdW90YSAtIEN1cnJlbnQgcXVvdGEgaW5mb3JtYXRpb25cbiAqIEBwYXJhbSByZXNldEF0IC0gSVNPIHRpbWVzdGFtcCB3aGVuIHF1b3RhIHJlc2V0c1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBzZW5kUXVvdGFFeGNlZWRlZChyZXMsICdhcGlDYWxscycsIHsgdHlwZTogJ2FwaUNhbGxzJywgbGltaXQ6IDEwMDAwLCB1c2VkOiAxMDAwMCwgcmVtYWluaW5nOiAwIH0sIHJlc2V0QXQpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZW5kUXVvdGFFeGNlZWRlZChcbiAgcmVzOiBSZXNwb25zZSxcbiAgcXVvdGFUeXBlOiBzdHJpbmcsXG4gIHF1b3RhOiBRdW90YUluZm8sXG4gIHJlc2V0QXQ/OiBzdHJpbmcsXG4pOiB2b2lkIHtcbiAgY29uc3QgcmVzZXREYXRlID0gcmVzZXRBdCA/IG5ldyBEYXRlKHJlc2V0QXQpIDogbmV3IERhdGUoKTtcbiAgY29uc3QgcmVzZXRJbiA9IE1hdGgubWF4KDAsIE1hdGguY2VpbCgocmVzZXREYXRlLmdldFRpbWUoKSAtIERhdGUubm93KCkpIC8gMTAwMCkpO1xuXG4gIHJlcy5zZXRIZWFkZXIoJ1JldHJ5LUFmdGVyJywgcmVzZXRJbik7XG4gIHJlcy5zZXRIZWFkZXIoJ1gtUXVvdGEtTGltaXQnLCBxdW90YS5saW1pdCk7XG4gIHJlcy5zZXRIZWFkZXIoJ1gtUXVvdGEtVXNlZCcsIHF1b3RhLnVzZWQpO1xuICByZXMuc2V0SGVhZGVyKCdYLVF1b3RhLVJlbWFpbmluZycsIE1hdGgubWF4KDAsIHF1b3RhLnJlbWFpbmluZykpO1xuXG4gIGlmIChyZXNldEF0KSB7XG4gICAgcmVzLnNldEhlYWRlcignWC1RdW90YS1SZXNldCcsIHJlc2V0QXQpO1xuICB9XG5cbiAgc2VuZEVycm9yKFxuICAgIHJlcyxcbiAgICA0MjksXG4gICAgYCR7cXVvdGFUeXBlfSBxdW90YSBleGNlZWRlZCAoJHtxdW90YS51c2VkfS8ke3F1b3RhLmxpbWl0fSkuIFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuYCxcbiAgICBFcnJvckNvZGUuUVVPVEFfRVhDRUVERUQsXG4gICAgeyBxdW90YSB9LFxuICApO1xufVxuXG4vKipcbiAqIFNlbmQgYSBwYWdpbmF0ZWQgbGlzdCByZXNwb25zZSB3aXRoIHRoZSBpdGVtcyBuZXN0ZWQgdW5kZXIgYSBuYW1lZCBrZXkuXG4gKiBVc2Ugd2hlbiB0aGUgQVBJIGNvbnRyYWN0IGlzIGB7IDxrZXk+OiBbLi4uXSwgcGFnaW5hdGlvbjogey4uLn0gfWBcbiAqICh0aGUgZG9taW5hbnQgc2hhcGUgYWNyb3NzIGFwaS8qIHNlcnZpY2VzKS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogc2VuZFBhZ2luYXRlZE5lc3RlZChyZXMsICdwaXBlbGluZXMnLCBpdGVtcywge1xuICogICB0b3RhbDogNTAsIGxpbWl0OiAyNSwgb2Zmc2V0OiAwLCBoYXNNb3JlOiB0cnVlLFxuICogfSk7XG4gKiAvLyDihpIgeyBwaXBlbGluZXM6IFsuLi5dLCBwYWdpbmF0aW9uOiB7IHRvdGFsOiA1MCwgbGltaXQ6IDI1LCBvZmZzZXQ6IDAsIGhhc01vcmU6IHRydWUgfSB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlbmRQYWdpbmF0ZWROZXN0ZWQ8VD4oXG4gIHJlczogUmVzcG9uc2UsXG4gIGRhdGFLZXk6IHN0cmluZyxcbiAgZGF0YTogVFtdLFxuICBvcHRpb25zOiB7XG4gICAgdG90YWw/OiBudW1iZXI7XG4gICAgbGltaXQ6IG51bWJlcjtcbiAgICBvZmZzZXQ6IG51bWJlcjtcbiAgICBoYXNNb3JlOiBib29sZWFuO1xuICAgIG5leHRDdXJzb3I/OiBzdHJpbmc7XG4gICAgc3RhdHVzQ29kZT86IG51bWJlcjtcbiAgfSxcbik6IHZvaWQge1xuICBpZiAocmVzLmhlYWRlcnNTZW50KSB7XG4gICAgbG9nZ2VyLndhcm4oJ0F0dGVtcHRlZCB0byBzZW5kIHBhZ2luYXRlZCByZXNwb25zZSBhZnRlciBoZWFkZXJzIGFscmVhZHkgc2VudCcpO1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCB7IHN0YXR1c0NvZGUgPSAyMDAsIHRvdGFsLCBsaW1pdCwgb2Zmc2V0LCBoYXNNb3JlLCBuZXh0Q3Vyc29yIH0gPSBvcHRpb25zO1xuICBjb25zdCBwYWdpbmF0aW9uOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHsgbGltaXQsIG9mZnNldCwgaGFzTW9yZSB9O1xuICBpZiAodG90YWwgIT09IHVuZGVmaW5lZCkgcGFnaW5hdGlvbi50b3RhbCA9IHRvdGFsO1xuICBpZiAobmV4dEN1cnNvcikgcGFnaW5hdGlvbi5uZXh0Q3Vyc29yID0gbmV4dEN1cnNvcjtcbiAgcmVzLnN0YXR1cyhzdGF0dXNDb2RlKS5qc29uKHtcbiAgICBzdWNjZXNzOiB0cnVlLFxuICAgIHN0YXR1c0NvZGUsXG4gICAgZGF0YTogeyBbZGF0YUtleV06IGRhdGEsIHBhZ2luYXRpb24gfSxcbiAgfSk7XG59XG5cbi8qKlxuICogRXh0cmFjdCBkYXRhYmFzZSBlcnJvciBkZXRhaWxzIGZvciBsb2dnaW5nL3Jlc3BvbnNlLlxuICpcbiAqIEV4dHJhY3RzIFBvc3RncmVTUUwgZXJyb3IgY29kZXMsIGRldGFpbHMsIGhpbnRzLCBhbmQgY29uc3RyYWludCBuYW1lc1xuICogZnJvbSBkYXRhYmFzZSBlcnJvcnMgZm9yIGJldHRlciBlcnJvciBtZXNzYWdlcy5cbiAqXG4gKiBAcGFyYW0gZXJyb3IgLSBFcnJvciBvYmplY3QgZnJvbSBkYXRhYmFzZSBvcGVyYXRpb25cbiAqIEByZXR1cm5zIE9iamVjdCB3aXRoIGV4dHJhY3RlZCBlcnJvciBkZXRhaWxzXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHRyeSB7XG4gKiAgIGF3YWl0IGRiLmluc2VydChwbHVnaW5zKS52YWx1ZXMobmV3UGx1Z2luKTtcbiAqIH0gY2F0Y2ggKGVycm9yKSB7XG4gKiAgIGNvbnN0IGRiRGV0YWlscyA9IGV4dHJhY3REYkVycm9yKGVycm9yKTtcbiAqICAgcmV0dXJuIHNlbmRFcnJvcihyZXMsIDUwMCwgJ0RhdGFiYXNlIGVycm9yJywgRXJyb3JDb2RlLkRBVEFCQVNFX0VSUk9SLCBkYkRldGFpbHMpO1xuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0RGJFcnJvcihlcnJvcjogdW5rbm93bik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgaWYgKCFlcnJvciB8fCB0eXBlb2YgZXJyb3IgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgLy8gRHJpenpsZSBPUk0gd3JhcHMgdGhlIG9yaWdpbmFsIHBnIGVycm9yIGluIGVycm9yLmNhdXNlIOKAlFxuICAvLyBjaGVjayB0aGUgY2F1c2UgZmlyc3QsIHRoZW4gZmFsbCBiYWNrIHRvIHRoZSBlcnJvciBpdHNlbGYuXG4gIGNvbnN0IGVyciA9IGVycm9yIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBjb25zdCBzb3VyY2UgPSAoZXJyLmNhdXNlICYmIHR5cGVvZiBlcnIuY2F1c2UgPT09ICdvYmplY3QnID8gZXJyLmNhdXNlIDogZXJyKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgY29uc3QgZGV0YWlsczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuICBpZiAoc291cmNlLmNvZGUpIGRldGFpbHMuZGJDb2RlID0gc291cmNlLmNvZGU7XG4gIGlmIChzb3VyY2UuZGV0YWlsKSBkZXRhaWxzLmRiRGV0YWlsID0gc291cmNlLmRldGFpbDtcbiAgaWYgKHNvdXJjZS5oaW50KSBkZXRhaWxzLmRiSGludCA9IHNvdXJjZS5oaW50O1xuICBpZiAoc291cmNlLmNvbnN0cmFpbnQpIGRldGFpbHMuY29uc3RyYWludCA9IHNvdXJjZS5jb25zdHJhaW50O1xuICBpZiAoc291cmNlLnRhYmxlKSBkZXRhaWxzLnRhYmxlID0gc291cmNlLnRhYmxlO1xuICBpZiAoc291cmNlLmNvbHVtbikgZGV0YWlscy5jb2x1bW4gPSBzb3VyY2UuY29sdW1uO1xuXG4gIHJldHVybiBkZXRhaWxzO1xufVxuXG4vLyBDb252ZW5pZW5jZSBoZWxwZXJzIChzaGFyZWQgYWNyb3NzIHBsdWdpbiwgcGlwZWxpbmUsIHF1b3RhIHNlcnZpY2VzKVxuXG4vKipcbiAqIEV4dHJhY3QgYSBodW1hbi1yZWFkYWJsZSBtZXNzYWdlIGZyb20gYW4gdW5rbm93biBjYXRjaCB2YWx1ZS5cbiAqXG4gKiBGYWxscyBiYWNrIGJleW9uZCBgLm1lc3NhZ2VgIGJlY2F1c2Ugc2V2ZXJhbCBjb21tb24gTm9kZSBlcnJvcnMgY2FycnkgYW5cbiAqIEVNUFRZIGAubWVzc2FnZWA6XG4gKiAgLSBkdWFsLXN0YWNrIChJUHY0K0lQdjYpIGNvbm5lY3QgZmFpbHVyZXMgc3VyZmFjZSBhcyBhbiBgQWdncmVnYXRlRXJyb3JgXG4gKiAgICB3aG9zZSBvd24gbWVzc2FnZSBpcyBibGFuayDigJQgdGhlIGNhdXNlIGxpdmVzIGluIGAuY29kZWAgKGUuZy5cbiAqICAgIGBFQ09OTlJFRlVTRURgL2BFVElNRURPVVRgKSBhbmQvb3IgdGhlIGAuZXJyb3JzW11gIHN1Yi1lcnJvcnM7XG4gKiAgLSByYXcgc29ja2V0IGBFcnJub0V4Y2VwdGlvbmBzIGNhbiBsaWtld2lzZSBjYXJyeSBvbmx5IGEgYC5jb2RlYC5cbiAqIFdpdGhvdXQgdGhpcywgYW4gdW5yZWFjaGFibGUgaW50ZXJuYWwgc2VydmljZSAoZS5nLiBjb21wbGlhbmNlIHN0aWxsXG4gKiBzdGFydGluZykgcHJvZHVjZWQgYmxhbmsgcGVyLWl0ZW0gZXJyb3JzIGluIGJ1bGsgcmVzcG9uc2VzIGFuZCBgZXJyb3I6XCJcImBcbiAqIGluIGxvZ3Mg4oCUIGEgc2lsZW50IGJsYWNrIGJveC4gT3JkZXI6IG1lc3NhZ2Ug4oaSIGNvZGUg4oaSIGpvaW5lZCBzdWItZXJyb3JzIOKGklxuICogZXJyb3IgbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVycm9yTWVzc2FnZShlcnJvcjogdW5rbm93bik6IHN0cmluZyB7XG4gIGlmICghKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpKSByZXR1cm4gU3RyaW5nKGVycm9yKTtcbiAgaWYgKGVycm9yLm1lc3NhZ2UpIHJldHVybiBlcnJvci5tZXNzYWdlO1xuXG4gIGNvbnN0IGNvZGUgPSAoZXJyb3IgYXMgeyBjb2RlPzogc3RyaW5nIH0pLmNvZGU7XG4gIGlmIChjb2RlKSByZXR1cm4gY29kZTtcblxuICBjb25zdCBpbm5lciA9IChlcnJvciBhcyB7IGVycm9ycz86IHVua25vd25bXSB9KS5lcnJvcnM7XG4gIGlmIChBcnJheS5pc0FycmF5KGlubmVyKSAmJiBpbm5lci5sZW5ndGggPiAwKSB7XG4gICAgY29uc3Qgam9pbmVkID0gaW5uZXIubWFwKGVycm9yTWVzc2FnZSkuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJzsgJyk7XG4gICAgaWYgKGpvaW5lZCkgcmV0dXJuIGpvaW5lZDtcbiAgfVxuXG4gIHJldHVybiBlcnJvci5uYW1lIHx8ICdVbmtub3duIGVycm9yJztcbn1cblxuLyoqIFNlbmQgYSA0MDAgYmFkLXJlcXVlc3QgcmVzcG9uc2UuICovXG5leHBvcnQgZnVuY3Rpb24gc2VuZEJhZFJlcXVlc3QoXG4gIHJlczogUmVzcG9uc2UsXG4gIG1lc3NhZ2U6IHN0cmluZyxcbiAgY29kZTogRXJyb3JDb2RlIHwgc3RyaW5nID0gRXJyb3JDb2RlLlZBTElEQVRJT05fRVJST1IsXG4pOiB2b2lkIHtcbiAgc2VuZEVycm9yKHJlcywgNDAwLCBtZXNzYWdlLCBjb2RlKTtcbn1cblxuLyoqIFNlbmQgYSA1MDAgaW50ZXJuYWwgZXJyb3IgcmVzcG9uc2UuICovXG5leHBvcnQgZnVuY3Rpb24gc2VuZEludGVybmFsRXJyb3IoXG4gIHJlczogUmVzcG9uc2UsXG4gIG1lc3NhZ2U6IHN0cmluZyxcbiAgZGV0YWlscz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuKTogdm9pZCB7XG4gIHNlbmRFcnJvcihyZXMsIDUwMCwgbWVzc2FnZSwgRXJyb3JDb2RlLklOVEVSTkFMX0VSUk9SLCBkZXRhaWxzKTtcbn1cblxuLy8gUGFnaW5hdGlvblxuXG4vKiogQ29tbW9uIHBhZ2luYXRpb24gKyBzb3J0aW5nIHBhcmFtZXRlcnMuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRpb25QYXJhbXMge1xuICBsaW1pdDogbnVtYmVyO1xuICBvZmZzZXQ6IG51bWJlcjtcbiAgc29ydEJ5OiBzdHJpbmc7XG4gIHNvcnRPcmRlcjogJ2FzYycgfCAnZGVzYyc7XG59XG5cbi8qKiBQYXJzZSBwYWdpbmF0aW9uL3NvcnQgcGFyYW1zIGZyb20gcXVlcnkgc3RyaW5nLCBjbGFtcGluZyB0byBzYWZlIGRlZmF1bHRzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUGFnaW5hdGlvblBhcmFtcyhxdWVyeTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBQYWdpbmF0aW9uUGFyYW1zIHtcbiAgY29uc3QgbGltaXQgPSBNYXRoLm1pbihNYXRoLm1heChwYXJzZUludChTdHJpbmcocXVlcnkubGltaXQpLCAxMCkgfHwgMTAsIDEpLCBNQVhfUEFHRV9MSU1JVCk7XG4gIGNvbnN0IG9mZnNldCA9IE1hdGgubWF4KHBhcnNlSW50KFN0cmluZyhxdWVyeS5vZmZzZXQpLCAxMCkgfHwgMCwgMCk7XG4gIGNvbnN0IHNvcnRCeSA9IFN0cmluZyhxdWVyeS5zb3J0QnkgfHwgJ2NyZWF0ZWRBdCcpO1xuICBjb25zdCBzb3J0T3JkZXI6ICdhc2MnIHwgJ2Rlc2MnID1cbiAgICBTdHJpbmcocXVlcnkuc29ydE9yZGVyIHx8ICdkZXNjJykudG9Mb3dlckNhc2UoKSA9PT0gJ2FzYycgPyAnYXNjJyA6ICdkZXNjJztcblxuICByZXR1cm4geyBsaW1pdCwgb2Zmc2V0LCBzb3J0QnksIHNvcnRPcmRlciB9O1xufVxuIl19
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcmVzcG9uc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUd0QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFakUsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBRXhDOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUN6QixHQUFhLEVBQ2IsVUFBVSxHQUFXLEdBQUcsRUFDeEIsSUFBUSxFQUNSLE9BQWdCO0lBRWhCLElBQUksR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BCLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0RBQXNELEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ3BGLE9BQU87SUFDVCxDQUFDO0lBRUQsTUFBTSxRQUFRLEdBS1Y7UUFDRixPQUFPLEVBQUUsSUFBSTtRQUNiLFVBQVU7S0FDWCxDQUFDO0lBRUYsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDdkIsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksT0FBTyxFQUFFLENBQUM7UUFDWixRQUFRLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUM3QixDQUFDO0lBRUQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FDdkIsR0FBYSxFQUNiLFVBQWtCLEVBQ2xCLE9BQWUsRUFDZixJ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QUFHLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2xFLENBQUM7QUFZRCxpRkFBaUY7QUFDakYsTUFBTSxVQUFVLHFCQUFxQixDQUFDLEtBQThCO0lBQ2xFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDN0YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEUsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksV0FBVyxDQUFDLENBQUM7SUFDbkQsTUFBTSxTQUFTLEdBQ2IsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUU3RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUM7QUFDOUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgdHlwZSB7IFJlc3BvbnNlIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tICcuL2xvZ2dlci5qcyc7XG5pbXBvcnQgdHlwZSB7IFF1b3RhSW5mbyB9IGZyb20gJy4uL3R5cGVzL2NvbW1vbi5qcyc7XG5pbXBvcnQgeyBFcnJvckNvZGUgfSBmcm9tICcuLi90eXBlcy9lcnJvci1jb2Rlcy5qcyc7XG5pbXBvcnQgeyBNQVhfUEFHRV9MSU1JVCB9IGZyb20gJy4uL3ZhbGlkYXRpb24vY29tbW9uLXNjaGVtYXMuanMnO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoJ3Jlc3BvbnNlJyk7XG5cbi8qKlxuICogU2VuZCBhIHN0YW5kYXJkaXplZCBzdWNjZXNzIHJlc3BvbnNlLlxuICpcbiAqIEBwYXJhbSByZXMgLSBFeHByZXNzIHJlc3BvbnNlIG9iamVjdFxuICogQHBhcmFtIHN0YXR1c0NvZGUgLSBIVFRQIHN0YXR1cyBjb2RlIChkZWZhdWx0OiAyMDApXG4gKiBAcGFyYW0gZGF0YSAtIFJlc3BvbnNlIGRhdGFcbiAqIEBwYXJhbSBtZXNzYWdlIC0gT3B0aW9uYWwgc3VjY2VzcyBtZXNzYWdlXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHNlbmRTdWNjZXNzKHJlcywgMjAwLCB7IHBsdWdpbjogcGx1Z2luRGF0YSB9KTtcbiAqIHNlbmRTdWNjZXNzKHJlcywgMjAxLCB7IGlkOiBuZXdJZCB9LCAnUmVzb3VyY2UgY3JlYXRlZCcpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZW5kU3VjY2VzczxUPihcbiAgcmVzOiBSZXNwb25zZSxcbiAgc3RhdHVzQ29kZTogbnVtYmVyID0gMjAwLFxuICBkYXRhPzogVCxcbiAgbWVzc2FnZT86IHN0cmluZyxcbik6IHZvaWQge1xuICBpZiAocmVzLmhlYWRlcnNTZW50KSB7XG4gICAgbG9nZ2VyLndhcm4oJ0F0dGVtcHRlZCB0byBzZW5kIHN1Y2Nlc3MgYWZ0ZXIgaGVhZGVycyBhbHJlYWR5IHNlbnQnLCB7IHN0YXR1c0NvZGUgfSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzcG9uc2U6IHtcbiAgICBzdWNjZXNzOiB0cnVlO1xuICAgIHN0YXR1c0NvZGU6IG51bWJlcjtcbiAgICBkYXRhPzogVDtcbiAgICBtZXNzYWdlPzogc3RyaW5nO1xuICB9ID0ge1xuICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgc3RhdHVzQ29kZSxcbiAgfTtcblxuICBpZiAoZGF0YSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmVzcG9uc2UuZGF0YSA9IGRhdGE7XG4gIH1cblxuICBpZiAobWVzc2FnZSkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICB9XG5cbiAgcmVzLnN0YXR1cyhzdGF0dXNDb2RlKS5qc29uKHJlc3BvbnNlKTtcbn1cblxuLyoqXG4gKiBTZW5kIGEgc3RhbmRhcmRpemVkIGVycm9yIHJlc3BvbnNlLlxuICpcbiAqIEBwYXJhbSByZXMgLSBFeHByZXNzIHJlc3BvbnNlIG9iamVjdFxuICogQHBhcmFtIHN0YXR1c0NvZGUgLSBIVFRQIHN0YXR1cyBjb2RlXG4gKiBAcGFyYW0gbWVzc2FnZSAtIEVycm9yIG1lc3NhZ2VcbiAqIEBwYXJhbSBjb2RlIC0gRXJyb3IgY29kZSBmcm9tIEVycm9yQ29kZSBlbnVtXG4gKiBAcGFyYW0gZGV0YWlscyAtIE9wdGlvbmFsIGFkZGl0aW9uYWwgZGV0YWlsc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBzZW5kRXJyb3IocmVzLCA0MDQsICdQbHVnaW4gbm90IGZvdW5kJywgRXJyb3JDb2RlLk5PVF9GT1VORCk7XG4gKiBzZW5kRXJyb3IocmVzLCA0MDAsICdJbnZhbGlkIGlucHV0JywgRXJyb3JDb2RlLlZBTElEQVRJT05fRVJST1IsIHsgZmllbGQ6ICduYW1lJyB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VuZEVycm9yKFxuICByZXM6IFJlc3BvbnNlLFxuICBzdGF0dXNDb2RlOiBudW1iZXIsXG4gIG1lc3NhZ2U6IHN0cmluZyxcbiAgY29kZT86IEVycm9yQ29kZSB8IHN0cmluZyxcbiAgZGV0YWlscz86IHVua25vd24sXG4pOiB2b2lkIHtcbiAgaWYgKHJlcy5oZWFkZXJzU2VudCkge1xuICAgIGxvZ2dlci53YXJuKCdBdHRlbXB0ZWQgdG8gc2VuZCBlcnJvciBhZnRlciBoZWFkZXJzIGFscmVhZHkgc2VudCcsIHsgc3RhdHVzQ29kZSwgbWVzc2FnZSB9KTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCByZXNwb25zZToge1xuICAgIHN1Y2Nlc3M6IGZhbHNlO1xuICAgIHN0YXR1c0NvZGU6IG51bWJlcjtcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgY29kZT86IHN0cmluZztcbiAgICBkZXRhaWxzPzogdW5rbm93bjtcbiAgfSA9IHtcbiAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICBzdGF0dXNDb2RlLFxuICAgIG1lc3NhZ2UsXG4gIH07XG5cbiAgaWYgKGNvZGUpIHtcbiAgICByZXNwb25zZS5jb2RlID0gY29kZTtcbiAgfVxuXG4gIGlmIChkZXRhaWxzICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXNwb25zZS5kZXRhaWxzID0gZGV0YWlscztcbiAgfVxuXG4gIHJlcy5zdGF0dXMoc3RhdHVzQ29kZSkuanNvbihyZXNwb25zZSk7XG59XG5cbi8qKlxuICogU2VuZCBhIHF1b3RhIGV4Y2VlZGVkIGVycm9yIHJlc3BvbnNlLlxuICpcbiAqIEBwYXJhbSByZXMgLSBFeHByZXNzIHJlc3BvbnNlIG9iamVjdFxuICogQHBhcmFtIHF1b3RhVHlwZSAtIFR5cGUgb2YgcXVvdGEgZXhjZWVkZWRcbiAqIEBwYXJhbSBxdW90YSAtIEN1cnJlbnQgcXVvdGEgaW5mb3JtYXRpb25cbiAqIEBwYXJhbSByZXNldEF0IC0gSVNPIHRpbWVzdGFtcCB3aGVuIHF1b3RhIHJlc2V0c1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBzZW5kUXVvdGFFeGNlZWRlZChyZXMsICdhcGlDYWxscycsIHsgdHlwZTogJ2FwaUNhbGxzJywgbGltaXQ6IDEwMDAwLCB1c2VkOiAxMDAwMCwgcmVtYWluaW5nOiAwIH0sIHJlc2V0QXQpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZW5kUXVvdGFFeGNlZWRlZChcbiAgcmVzOiBSZXNwb25zZSxcbiAgcXVvdGFUeXBlOiBzdHJpbmcsXG4gIHF1b3RhOiBRdW90YUluZm8sXG4gIHJlc2V0QXQ/OiBzdHJpbmcsXG4pOiB2b2lkIHtcbiAgY29uc3QgcmVzZXREYXRlID0gcmVzZXRBdCA/IG5ldyBEYXRlKHJlc2V0QXQpIDogbmV3IERhdGUoKTtcbiAgY29uc3QgcmVzZXRJbiA9IE1hdGgubWF4KDAsIE1hdGguY2VpbCgocmVzZXREYXRlLmdldFRpbWUoKSAtIERhdGUubm93KCkpIC8gMTAwMCkpO1xuXG4gIHJlcy5zZXRIZWFkZXIoJ1JldHJ5LUFmdGVyJywgcmVzZXRJbik7XG4gIHJlcy5zZXRIZWFkZXIoJ1gtUXVvdGEtTGltaXQnLCBxdW90YS5saW1pdCk7XG4gIHJlcy5zZXRIZWFkZXIoJ1gtUXVvdGEtVXNlZCcsIHF1b3RhLnVzZWQpO1xuICByZXMuc2V0SGVhZGVyKCdYLVF1b3RhLVJlbWFpbmluZycsIE1hdGgubWF4KDAsIHF1b3RhLnJlbWFpbmluZykpO1xuXG4gIGlmIChyZXNldEF0KSB7XG4gICAgcmVzLnNldEhlYWRlcignWC1RdW90YS1SZXNldCcsIHJlc2V0QXQpO1xuICB9XG5cbiAgc2VuZEVycm9yKFxuICAgIHJlcyxcbiAgICA0MjksXG4gICAgYCR7cXVvdGFUeXBlfSBxdW90YSBleGNlZWRlZCAoJHtxdW90YS51c2VkfS8ke3F1b3RhLmxpbWl0fSkuIFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuYCxcbiAgICBFcnJvckNvZGUuUVVPVEFfRVhDRUVERUQsXG4gICAgeyBxdW90YSB9LFxuICApO1xufVxuXG4vKipcbiAqIFNlbmQgYSBwYWdpbmF0ZWQgbGlzdCByZXNwb25zZSB3aXRoIHRoZSBpdGVtcyBuZXN0ZWQgdW5kZXIgYSBuYW1lZCBrZXkuXG4gKiBVc2Ugd2hlbiB0aGUgQVBJIGNvbnRyYWN0IGlzIGB7IDxrZXk+OiBbLi4uXSwgcGFnaW5hdGlvbjogey4uLn0gfWBcbiAqICh0aGUgZG9taW5hbnQgc2hhcGUgYWNyb3NzIGFwaS8qIHNlcnZpY2VzKS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogc2VuZFBhZ2luYXRlZE5lc3RlZChyZXMsICdwaXBlbGluZXMnLCBpdGVtcywge1xuICogICB0b3RhbDogNTAsIGxpbWl0OiAyNSwgb2Zmc2V0OiAwLCBoYXNNb3JlOiB0cnVlLFxuICogfSk7XG4gKiAvLyDihpIgeyBwaXBlbGluZXM6IFsuLi5dLCBwYWdpbmF0aW9uOiB7IHRvdGFsOiA1MCwgbGltaXQ6IDI1LCBvZmZzZXQ6IDAsIGhhc01vcmU6IHRydWUgfSB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlbmRQYWdpbmF0ZWROZXN0ZWQ8VD4oXG4gIHJlczogUmVzcG9uc2UsXG4gIGRhdGFLZXk6IHN0cmluZyxcbiAgZGF0YTogVFtdLFxuICBvcHRpb25zOiB7XG4gICAgdG90YWw/OiBudW1iZXI7XG4gICAgbGltaXQ6IG51bWJlcjtcbiAgICBvZmZzZXQ6IG51bWJlcjtcbiAgICBoYXNNb3JlOiBib29sZWFuO1xuICAgIG5leHRDdXJzb3I/OiBzdHJpbmc7XG4gICAgc3RhdHVzQ29kZT86IG51bWJlcjtcbiAgfSxcbik6IHZvaWQge1xuICBpZiAocmVzLmhlYWRlcnNTZW50KSB7XG4gICAgbG9nZ2VyLndhcm4oJ0F0dGVtcHRlZCB0byBzZW5kIHBhZ2luYXRlZCByZXNwb25zZSBhZnRlciBoZWFkZXJzIGFscmVhZHkgc2VudCcpO1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCB7IHN0YXR1c0NvZGUgPSAyMDAsIHRvdGFsLCBsaW1pdCwgb2Zmc2V0LCBoYXNNb3JlLCBuZXh0Q3Vyc29yIH0gPSBvcHRpb25zO1xuICBjb25zdCBwYWdpbmF0aW9uOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHsgbGltaXQsIG9mZnNldCwgaGFzTW9yZSB9O1xuICBpZiAodG90YWwgIT09IHVuZGVmaW5lZCkgcGFnaW5hdGlvbi50b3RhbCA9IHRvdGFsO1xuICBpZiAobmV4dEN1cnNvcikgcGFnaW5hdGlvbi5uZXh0Q3Vyc29yID0gbmV4dEN1cnNvcjtcbiAgcmVzLnN0YXR1cyhzdGF0dXNDb2RlKS5qc29uKHtcbiAgICBzdWNjZXNzOiB0cnVlLFxuICAgIHN0YXR1c0NvZGUsXG4gICAgZGF0YTogeyBbZGF0YUtleV06IGRhdGEsIHBhZ2luYXRpb24gfSxcbiAgfSk7XG59XG5cbi8qKlxuICogRXh0cmFjdCBkYXRhYmFzZSBlcnJvciBkZXRhaWxzIGZvciBsb2dnaW5nL3Jlc3BvbnNlLlxuICpcbiAqIEV4dHJhY3RzIFBvc3RncmVTUUwgZXJyb3IgY29kZXMsIGRldGFpbHMsIGhpbnRzLCBhbmQgY29uc3RyYWludCBuYW1lc1xuICogZnJvbSBkYXRhYmFzZSBlcnJvcnMgZm9yIGJldHRlciBlcnJvciBtZXNzYWdlcy5cbiAqXG4gKiBAcGFyYW0gZXJyb3IgLSBFcnJvciBvYmplY3QgZnJvbSBkYXRhYmFzZSBvcGVyYXRpb25cbiAqIEByZXR1cm5zIE9iamVjdCB3aXRoIGV4dHJhY3RlZCBlcnJvciBkZXRhaWxzXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHRyeSB7XG4gKiAgIGF3YWl0IGRiLmluc2VydChwbHVnaW5zKS52YWx1ZXMobmV3UGx1Z2luKTtcbiAqIH0gY2F0Y2ggKGVycm9yKSB7XG4gKiAgIGNvbnN0IGRiRGV0YWlscyA9IGV4dHJhY3REYkVycm9yKGVycm9yKTtcbiAqICAgcmV0dXJuIHNlbmRFcnJvcihyZXMsIDUwMCwgJ0RhdGFiYXNlIGVycm9yJywgRXJyb3JDb2RlLkRBVEFCQVNFX0VSUk9SLCBkYkRldGFpbHMpO1xuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0RGJFcnJvcihlcnJvcjogdW5rbm93bik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgaWYgKCFlcnJvciB8fCB0eXBlb2YgZXJyb3IgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgLy8gRHJpenpsZSBPUk0gd3JhcHMgdGhlIG9yaWdpbmFsIHBnIGVycm9yIGluIGVycm9yLmNhdXNlIOKAlFxuICAvLyBjaGVjayB0aGUgY2F1c2UgZmlyc3QsIHRoZW4gZmFsbCBiYWNrIHRvIHRoZSBlcnJvciBpdHNlbGYuXG4gIGNvbnN0IGVyciA9IGVycm9yIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBjb25zdCBzb3VyY2UgPSAoZXJyLmNhdXNlICYmIHR5cGVvZiBlcnIuY2F1c2UgPT09ICdvYmplY3QnID8gZXJyLmNhdXNlIDogZXJyKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgY29uc3QgZGV0YWlsczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuICBpZiAoc291cmNlLmNvZGUpIGRldGFpbHMuZGJDb2RlID0gc291cmNlLmNvZGU7XG4gIGlmIChzb3VyY2UuZGV0YWlsKSBkZXRhaWxzLmRiRGV0YWlsID0gc291cmNlLmRldGFpbDtcbiAgaWYgKHNvdXJjZS5oaW50KSBkZXRhaWxzLmRiSGludCA9IHNvdXJjZS5oaW50O1xuICBpZiAoc291cmNlLmNvbnN0cmFpbnQpIGRldGFpbHMuY29uc3RyYWludCA9IHNvdXJjZS5jb25zdHJhaW50O1xuICBpZiAoc291cmNlLnRhYmxlKSBkZXRhaWxzLnRhYmxlID0gc291cmNlLnRhYmxlO1xuICBpZiAoc291cmNlLmNvbHVtbikgZGV0YWlscy5jb2x1bW4gPSBzb3VyY2UuY29sdW1uO1xuXG4gIHJldHVybiBkZXRhaWxzO1xufVxuXG4vLyBDb252ZW5pZW5jZSBoZWxwZXJzIChzaGFyZWQgYWNyb3NzIHBsdWdpbiwgcGlwZWxpbmUsIHF1b3RhIHNlcnZpY2VzKVxuXG4vKipcbiAqIEV4dHJhY3QgYSBodW1hbi1yZWFkYWJsZSBtZXNzYWdlIGZyb20gYW4gdW5rbm93biBjYXRjaCB2YWx1ZS5cbiAqXG4gKiBGYWxscyBiYWNrIGJleW9uZCBgLm1lc3NhZ2VgIGJlY2F1c2Ugc2V2ZXJhbCBjb21tb24gTm9kZSBlcnJvcnMgY2FycnkgYW5cbiAqIEVNUFRZIGAubWVzc2FnZWA6XG4gKiAgLSBkdWFsLXN0YWNrIChJUHY0K0lQdjYpIGNvbm5lY3QgZmFpbHVyZXMgc3VyZmFjZSBhcyBhbiBgQWdncmVnYXRlRXJyb3JgXG4gKiAgICB3aG9zZSBvd24gbWVzc2FnZSBpcyBibGFuayDigJQgdGhlIGNhdXNlIGxpdmVzIGluIGAuY29kZWAgKGUuZy5cbiAqICAgIGBFQ09OTlJFRlVTRURgL2BFVElNRURPVVRgKSBhbmQvb3IgdGhlIGAuZXJyb3JzW11gIHN1Yi1lcnJvcnM7XG4gKiAgLSByYXcgc29ja2V0IGBFcnJub0V4Y2VwdGlvbmBzIGNhbiBsaWtld2lzZSBjYXJyeSBvbmx5IGEgYC5jb2RlYC5cbiAqIFdpdGhvdXQgdGhpcywgYW4gdW5yZWFjaGFibGUgaW50ZXJuYWwgc2VydmljZSAoZS5nLiBjb21wbGlhbmNlIHN0aWxsXG4gKiBzdGFydGluZykgcHJvZHVjZWQgYmxhbmsgcGVyLWl0ZW0gZXJyb3JzIGluIGJ1bGsgcmVzcG9uc2VzIGFuZCBgZXJyb3I6XCJcImBcbiAqIGluIGxvZ3Mg4oCUIGEgc2lsZW50IGJsYWNrIGJveC4gT3JkZXI6IG1lc3NhZ2Ug4oaSIGNvZGUg4oaSIGpvaW5lZCBzdWItZXJyb3JzIOKGklxuICogZXJyb3IgbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVycm9yTWVzc2FnZShlcnJvcjogdW5rbm93bik6IHN0cmluZyB7XG4gIGlmICghKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpKSByZXR1cm4gU3RyaW5nKGVycm9yKTtcbiAgaWYgKGVycm9yLm1lc3NhZ2UpIHJldHVybiBlcnJvci5tZXNzYWdlO1xuXG4gIGNvbnN0IGNvZGUgPSAoZXJyb3IgYXMgeyBjb2RlPzogc3RyaW5nIH0pLmNvZGU7XG4gIGlmIChjb2RlKSByZXR1cm4gY29kZTtcblxuICBjb25zdCBpbm5lciA9IChlcnJvciBhcyB7IGVycm9ycz86IHVua25vd25bXSB9KS5lcnJvcnM7XG4gIGlmIChBcnJheS5pc0FycmF5KGlubmVyKSAmJiBpbm5lci5sZW5ndGggPiAwKSB7XG4gICAgY29uc3Qgam9pbmVkID0gaW5uZXIubWFwKGVycm9yTWVzc2FnZSkuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJzsgJyk7XG4gICAgaWYgKGpvaW5lZCkgcmV0dXJuIGpvaW5lZDtcbiAgfVxuXG4gIHJldHVybiBlcnJvci5uYW1lIHx8ICdVbmtub3duIGVycm9yJztcbn1cblxuLyoqIFNlbmQgYSA0MDAgYmFkLXJlcXVlc3QgcmVzcG9uc2UuICovXG5leHBvcnQgZnVuY3Rpb24gc2VuZEJhZFJlcXVlc3QoXG4gIHJlczogUmVzcG9uc2UsXG4gIG1lc3NhZ2U6IHN0cmluZyxcbiAgY29kZTogRXJyb3JDb2RlIHwgc3RyaW5nID0gRXJyb3JDb2RlLlZBTElEQVRJT05fRVJST1IsXG4pOiB2b2lkIHtcbiAgc2VuZEVycm9yKHJlcywgNDAwLCBtZXNzYWdlLCBjb2RlKTtcbn1cblxuLyoqIFNlbmQgYSA1MDAgaW50ZXJuYWwgZXJyb3IgcmVzcG9uc2UuICovXG5leHBvcnQgZnVuY3Rpb24gc2VuZEludGVybmFsRXJyb3IoXG4gIHJlczogUmVzcG9uc2UsXG4gIG1lc3NhZ2U6IHN0cmluZyxcbiAgZGV0YWlscz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuKTogdm9pZCB7XG4gIHNlbmRFcnJvcihyZXMsIDUwMCwgbWVzc2FnZSwgRXJyb3JDb2RlLklOVEVSTkFMX0VSUk9SLCBkZXRhaWxzKTtcbn1cblxuLy8gUGFnaW5hdGlvblxuXG4vKiogQ29tbW9uIHBhZ2luYXRpb24gKyBzb3J0aW5nIHBhcmFtZXRlcnMuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRpb25QYXJhbXMge1xuICBsaW1pdDogbnVtYmVyO1xuICBvZmZzZXQ6IG51bWJlcjtcbiAgc29ydEJ5OiBzdHJpbmc7XG4gIHNvcnRPcmRlcjogJ2FzYycgfCAnZGVzYyc7XG59XG5cbi8qKiBQYXJzZSBwYWdpbmF0aW9uL3NvcnQgcGFyYW1zIGZyb20gcXVlcnkgc3RyaW5nLCBjbGFtcGluZyB0byBzYWZlIGRlZmF1bHRzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUGFnaW5hdGlvblBhcmFtcyhxdWVyeTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBQYWdpbmF0aW9uUGFyYW1zIHtcbiAgY29uc3QgbGltaXQgPSBNYXRoLm1pbihNYXRoLm1heChwYXJzZUludChTdHJpbmcocXVlcnkubGltaXQpLCAxMCkgfHwgMTAsIDEpLCBNQVhfUEFHRV9MSU1JVCk7XG4gIGNvbnN0IG9mZnNldCA9IE1hdGgubWF4KHBhcnNlSW50KFN0cmluZyhxdWVyeS5vZmZzZXQpLCAxMCkgfHwgMCwgMCk7XG4gIGNvbnN0IHNvcnRCeSA9IFN0cmluZyhxdWVyeS5zb3J0QnkgfHwgJ2NyZWF0ZWRBdCcpO1xuICBjb25zdCBzb3J0T3JkZXI6ICdhc2MnIHwgJ2Rlc2MnID1cbiAgICBTdHJpbmcocXVlcnkuc29ydE9yZGVyIHx8ICdkZXNjJykudG9Mb3dlckNhc2UoKSA9PT0gJ2FzYycgPyAnYXNjJyA6ICdkZXNjJztcblxuICByZXR1cm4geyBsaW1pdCwgb2Zmc2V0LCBzb3J0QnksIHNvcnRPcmRlciB9O1xufVxuIl19
@@ -382,4 +382,4 @@ export function isEncryptedBlob(value) {
382
382
  && typeof value.iv === 'string'
383
383
  && typeof value.ciphertext === 'string');
384
384
  }
385
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0LWVuY3J5cHRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvc2VjcmV0LWVuY3J5cHRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQkc7QUFFSCxPQUFPLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxRQUFRLENBQUM7QUE2QmpGOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLE9BQU8sY0FBYztJQUNSLFNBQVMsQ0FBUztJQUVuQyxZQUFZLGlCQUEwQjtRQUNwQyxNQUFNLEdBQUcsR0FBRyxpQkFBaUIsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDO1FBQ25FLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNULE1BQU0sSUFBSSxLQUFLLENBQUMsNkRBQTZELENBQUMsQ0FBQztRQUNqRixDQUFDO1FBQ0QsMEVBQTBFO1FBQzFFLHNEQUFzRDtRQUN0RCxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsTUFBTSxLQUFLLEVBQUUsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUMzRCxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvQixJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDM0YsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO0lBQzNCLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBYTtRQUNy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QUM7SUFDekIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwRSxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxLQUFjO0lBQzVDLE9BQU8sQ0FBRSxPQUFPLEtBQUssS0FBSyxRQUFRO1dBQzdCLEtBQUssS0FBSyxJQUFJO1dBQ2IsS0FBMkIsQ0FBQyxHQUFHLEtBQUssZ0JBQWdCO1dBQ3JELE9BQVEsS0FBMEIsQ0FBQyxFQUFFLEtBQUssUUFBUTtXQUNsRCxPQUFRLEtBQWtDLENBQUMsVUFBVSxLQUFLLFFBQVEsQ0FDdEUsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiAgUGVyLW9yZyBlbnZlbG9wZSBlbmNyeXB0aW9uIGZvciBzZWNyZXQgY29sdW1ucy5cbiAqXG4gKiBUb2RheSdzIHBvc3R1cmUgZm9yIG9yZy1zY29wZWQgc2VjcmV0cyAoYWlQcm92aWRlcktleXMsIHdlYmhvb2sgVVJMcyxcbiAqIHJlZ2lzdHJ5IGNyZWRlbnRpYWxzKSBpcyBjbGVhci10ZXh0IGluIE1vbmdvIC8gUG9zdGdyZXMgd2l0aCBhcHAtbGF5ZXJcbiAqIG1hc2tpbmcgb24gb3V0cHV0LiBUaGlzIG1vZHVsZSBpcyB0aGUgZW5jcnlwdGlvbiBwcmltaXRpdmUgdGhhdCBsZXRzIHRoZVxuICogbW9kZWwgbGF5ZXIgc3dhcCBjbGVhci10ZXh0IHN0cmluZ3MgZm9yIGBFbmNyeXB0ZWRCbG9iYCB2YWx1ZXMgYXQgd3JpdGVcbiAqIHRpbWUgYW5kIGRlY3J5cHQgYXQgcmVhZCB0aW1lLlxuICpcbiAqIENyeXB0b2dyYXBoeSAqIC0gQUVTLTI1Ni1HQ00gKGF1dGhlbnRpY2F0ZWQgZW5jcnlwdGlvbikuXG4gKiAtIFBlci1vcmcga2V5IGRlcml2ZWQgdmlhIEhLREYtU0hBMjU2KG1hc3RlcktleSwgc2FsdD1vcmdJZCwgaW5mbz0nc2VjcmV0cy12MScpLlxuICogRWFjaCBvcmcgZ2V0cyBhIHVuaXF1ZSBrZXkgd2l0aG91dCBvcGVyYXRvciBrZXktbWFuYWdlbWVudCBjZXJlbW9ueS5cbiAqIC0gMTItYnl0ZSBJViBnZW5lcmF0ZWQgcGVyIGVuY3J5cHRpb24gd2l0aCBgY3J5cHRvLnJhbmRvbUJ5dGVzYC5cbiAqIC0gMTYtYnl0ZSBhdXRoZW50aWNhdGlvbiB0YWcgY29uY2F0ZW5hdGVkIHdpdGggY2lwaGVydGV4dCAoc3RhbmRhcmQgR0NNKS5cbiAqXG4gKiBPcGVyYXRvciBjb25maWd1cmF0aW9uICogLSBgU0VDUkVUX0VOQ1JZUFRJT05fS0VZYCBlbnY6IGhleC0gb3IgYmFzZTY0LWVuY29kZWQgMzItYnl0ZSBtYXN0ZXIga2V5LlxuICogUmVxdWlyZWQgd2hlbiBgZW5jcnlwdFNlY3JldGAvYGRlY3J5cHRTZWNyZXRgIGFyZSBjYWxsZWQuIE1pc3Npbmcga2V5XG4gKiB0aHJvd3MgIGVuY3J5cHRpb24gaXMgZmFpbC1jbG9zZWQ7IHdlIG5ldmVyIHNpbGVudGx5IHJvdW5kLXRyaXAgYVxuICogc2VjcmV0IGFzIHBsYWludGV4dC5cbiAqXG4gKiBLTVMgbWlncmF0aW9uIHBhdGggKiAtIFRoZSB0d28gZXhwb3J0ZWQgZnVuY3Rpb25zIHRha2UgYSBgcHJvdmlkZXJgIHBhcmFtZXRlci4gVGhlIGRlZmF1bHRcbiAqIGBFbnZLZXlQcm92aWRlcmAgaW1wbGVtZW50cyBIS0RGIGRlcml2YXRpb24uIEEgZnV0dXJlIGBBd3NLbXNQcm92aWRlcmBcbiAqIHBsdWdzIGluIGhlcmU6IGl0IGNhbiBjYWxsIEtNUyBgRW5jcnlwdGAgLyBgRGVjcnlwdGAgdG8gd3JhcCBhIERFS1xuICogcmF0aGVyIHRoYW4gaG9sZGluZyBhIG1hc3RlciBrZXkgaW4gZW52LiBUaGUgb24tZGlzayBibG9iIHNoYXBlXG4gKiAoYHsgYWxnLCBpdiwgY2lwaGVydGV4dCwga2lkPyB9YCkgaXMgZm9yd2FyZC1jb21wYXRpYmxlICBga2lkYFxuICogY2FycmllcyB0aGUgS01TIGtleSBpZCB3aGVuIHRoZSBwcm92aWRlciBuZWVkcyBpdC5cbiAqL1xuXG5pbXBvcnQgeyBjcmVhdGVDaXBoZXJpdiwgY3JlYXRlRGVjaXBoZXJpdiwgaGtkZlN5bmMsIHJhbmRvbUJ5dGVzIH0gZnJvbSAnY3J5cHRvJztcblxuLyoqIE9uLWRpc2sgc2hhcGUgb2YgYW4gZW5jcnlwdGVkIHNlY3JldC4gSlNPTi1zZXJpYWxpemFibGUuICovXG5leHBvcnQgaW50ZXJmYWNlIEVuY3J5cHRlZEJsb2Ige1xuICAvKiogQWxnb3JpdGhtIHRhZy4gQnVtcCBvbiBmb3JtYXQgY2hhbmdlIHNvIGEgZnV0dXJlIG1pZ3JhdGlvbiBjYW4gZGV0ZWN0IG9sZCBibG9icy4gKi9cbiAgYWxnOiAnYWVzLTI1Ni1nY20tdjEnO1xuICAvKiogQmFzZTY0LWVuY29kZWQgMTItYnl0ZSBJVi4gKi9cbiAgaXY6IHN0cmluZztcbiAgLyoqIEJhc2U2NC1lbmNvZGVkIGNpcGhlcnRleHQgKyAxNi1ieXRlIGF1dGhlbnRpY2F0aW9uIHRhZyBjb25jYXRlbmF0ZWQuICovXG4gIGNpcGhlcnRleHQ6IHN0cmluZztcbiAgLyoqIE9wdGlvbmFsIGtleSBpZCAgcG9wdWxhdGVkIGJ5IEtNUy1iYWNrZWQgcHJvdmlkZXJzLCBpZ25vcmVkIGJ5IHRoZSBlbnYgcHJvdmlkZXIuICovXG4gIGtpZD86IHN0cmluZztcbn1cblxuLyoqIFBsdWdnYWJsZSBrZXkgc291cmNlLiBFbnYtYmFja2VkIGJ5IGRlZmF1bHQ7IEtNUy1iYWNrZWQgYXZhaWxhYmxlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBLZXlQcm92aWRlciB7XG4gIC8qKiBEZXJpdmUgYSAzMi1ieXRlIHN5bW1ldHJpYyBrZXkgYm91bmQgdG8gYG9yZ0lkYC4gKi9cbiAgZGVyaXZlS2V5KG9yZ0lkOiBzdHJpbmcpOiBCdWZmZXI7XG4gIC8qKiBPcHRpb25hbCBhc3luYyB2YXJpYW50IGZvciBwcm92aWRlcnMgdGhhdCBuZWVkIHRvIGRvIEkvTyAoZS5nLlxuICAgKiAgcGVyLW9yZyBLTVMgbG9va3VwIHRoZSBmaXJzdCB0aW1lIGFuIG9yZyBpcyBzZWVuKS4gRGVmYXVsdFxuICAgKiAgaW1wbGVtZW50YXRpb24gZm9yd2FyZHMgdG8gdGhlIHN5bmMgYGRlcml2ZUtleWAuICovXG4gIGRlcml2ZUtleUFzeW5jPyhvcmdJZDogc3RyaW5nKTogUHJvbWlzZTxCdWZmZXI+O1xuICAvKiogT3B0aW9uYWwgS01TLWtleS1pZCB0aGlzIHByb3ZpZGVyIHVzZWQgZm9yIGBvcmdJZGAuIEVtYmVkZGVkIGluIHRoZVxuICAgKiAgYEVuY3J5cHRlZEJsb2Iua2lkYCBmaWVsZCBvbiB3cml0ZSBzbyBkZWNyeXB0IGNhbiB2ZXJpZnkgdGhlIHJpZ2h0XG4gICAqICBLTVMgQ01LIGlzIGJlaW5nIHVzZWQgKGRlZmVuc2UgYWdhaW5zdCBhbiBhdHRhY2tlciB3aG8gc3dhcHMgYSBibG9iXG4gICAqICBiZXR3ZWVuIG9yZ3MpLiBEZWZhdWx0IHJldHVybnMgdW5kZWZpbmVkIChlbnYgcHJvdmlkZXIpLiAqL1xuICBraWRGb3I/KG9yZ0lkOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogRGVmYXVsdCBwcm92aWRlciAgZGVyaXZlcyBhIHBlci1vcmcga2V5IGZyb20gYFNFQ1JFVF9FTkNSWVBUSU9OX0tFWWAgdmlhXG4gKiBIS0RGLVNIQTI1Ni4gU3VpdGFibGUgZm9yIHNlbGYtaG9zdGVkIC8gZGV2IHdoZXJlIG9wZXJhdG9ycyBkb24ndCBoYXZlIEtNUy5cbiAqXG4gKiBGYWlscyBmYXN0IGlmIHRoZSBlbnYgaXMgbWlzc2luZyBvciB0aGUga2V5IGlzIHRoZSB3cm9uZyBsZW5ndGggc28gbWlzY29uZmlnXG4gKiBzdXJmYWNlcyBhdCBmaXJzdCB1c2UgcmF0aGVyIHRoYW4gc2lsZW50bHkgZmluZ2VycHJpbnRpbmcgYWxsIHdyaXRlcyB3aXRoXG4gKiBhIGRlZmF1bHQgemVybyBrZXkuXG4gKi9cbmV4cG9ydCBjbGFzcyBFbnZLZXlQcm92aWRlciBpbXBsZW1lbnRzIEtleVByb3ZpZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBtYXN0ZXJLZXk6IEJ1ZmZlcjtcblxuICBjb25zdHJ1Y3RvcihtYXN0ZXJLZXlPdmVycmlkZT86IHN0cmluZykge1xuICAgIGNvbnN0IHJhdyA9IG1hc3RlcktleU92ZXJyaWRlID8/IHByb2Nlc3MuZW52LlNFQ1JFVF9FTkNSWVBUSU9OX0tFWTtcbiAgICBpZiAoIXJhdykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTRUNSRVRfRU5DUllQVElPTl9LRVkgZW52IGlzIHJlcXVpcmVkIGZvciBzZWNyZXQgZW5jcnlwdGlvbicpO1xuICAgIH1cbiAgICAvLyBBY2NlcHQgZWl0aGVyIGhleCAoNjQgY2hhcnMpIG9yIGJhc2U2NCAoNDQgY2hhcnMgaW5jbHVkaW5nIHBhZGRpbmcpIGZvclxuICAgIC8vIG9wZXJhdG9yIGNvbnZlbmllbmNlICBib3RoIGRlY29kZSB0byBhIDMyLWJ5dGUga2V5LlxuICAgIGNvbnN0IGRlY29kZWQgPSByYXcubGVuZ3RoID09PSA2NCAmJiAvXlswLTlhLWZdKyQvaS50ZXN0KHJhdylcbiAgICAgID8gQnVmZmVyLmZyb20ocmF3LCAnaGV4JylcbiAgICAgIDogQnVmZmVyLmZyb20ocmF3LCAnYmFzZTY0Jyk7XG4gICAgaWYgKGRlY29kZWQubGVuZ3RoICE9PSAzMikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTRUNSRVRfRU5DUllQVElPTl9LRVkgbXVzdCBkZWNvZGUgdG8gMzIgYnl0ZXMgKGdvdCAke2RlY29kZWQubGVuZ3RofSlgKTtcbiAgICB9XG4gICAgdGhpcy5tYXN0ZXJLZXkgPSBkZWNvZGVkO1xuICB9XG5cbiAgZGVyaXZlS2V5KG9yZ0lkOiBzdHJpbmcpOiBCdWZmZXIge1xuICAgIC8vIEhLREYgYmluZHMgdGhlIG1hc3RlciBrZXkgdG8gdGhlIG9yZyBzbyB0d28gb3JncyBlbmNyeXB0aW5nIHRoZSBzYW1lXG4gICAgLy8gcGxhaW50ZXh0IHByb2R1Y2UgZGlmZmVyZW50IGNpcGhlcnRleHRzICBrZWVwcyBhIHN0b2xlbiBEQiB1bmFibGUgdG9cbiAgICAvLyB0ZWxsIHdoaWNoIG9yZ3Mgc2hhcmUgc2VjcmV0cyB2aWEgY2lwaGVydGV4dCBjb21wYXJpc29uLlxuICAgIGNvbnN0IGRlcml2ZWQgPSBoa2RmU3luYyggJ3NoYTI1NicsXG4gICAgICB0aGlzLm1hc3RlcktleSxcbiAgICAgIEJ1ZmZlci5mcm9tKG9yZ0lkLCAndXRmOCcpLFxuICAgICAgJ3NlY3JldHMtdjEnLFxuICAgICAgMzIsXG4gICAgKTtcbiAgICAvLyBoa2RmU3luYyByZXR1cm5zIEFycmF5QnVmZmVyIGluIG9sZGVyIE5vZGUgdHlwaW5nczsgbm9ybWFsaXplIHRvIEJ1ZmZlci5cbiAgICByZXR1cm4gQnVmZmVyLmZyb20oZGVyaXZlZCk7XG4gIH1cbn1cblxuLyoqXG4gKiAgQVdTLUtNUy1iYWNrZWQgS2V5UHJvdmlkZXIuXG4gKlxuICogVHJhZGUtb2ZmIHBpY2tlZDogc3RvcmUgT05FIG1hc3RlciBrZXkgZW5jcnlwdGVkIHVuZGVyIGEgS01TIENNSzsgb25cbiAqIGZpcnN0IHVzZSwgY2FsbCBga21zOkRlY3J5cHRgIHRvIHJlY292ZXIgdGhlIG1hc3RlciBrZXkgYnl0ZXM7IEhLREYtXG4gKiBkZXJpdmUgcGVyLW9yZyBmcm9tIGl0IChzYW1lIGFzIEVudktleVByb3ZpZGVyKS4gVGhlIHByb2Nlc3MgdGhlbiBob2xkc1xuICogdGhlIHBsYWludGV4dCBtYXN0ZXIga2V5IGluIG1lbW9yeSB1bnRpbCByZXN0YXJ0LlxuICpcbiAqIFBST1M6IG9uZSBLTVMgY2FsbCBwZXIgcHJvY2VzcyBsaWZldGltZSAoY2hlYXAsIGxvdyBwOTkgaW1wYWN0KSxcbiAqIHRoZSBlbmNyeXB0ZWQtbWFzdGVyLWtleSBibG9iIGlzIHNhZmUgdG8gY29tbWl0L2xvZy9jaGVja2luLFxuICogS01TIGF1ZGl0IGxvZyByZWNvcmRzIHdoZW4gdGhlIG1hc3RlciBpcyByZWNvdmVyZWQuXG4gKiBDT05TOiBwcm9jZXNzIG1lbW9yeSBzdGlsbCBob2xkcyB0aGUgbWFzdGVyIGtleSAgc2FtZSBwb3N0dXJlIGFzXG4gKiBFbnZLZXlQcm92aWRlciBvbmNlIHdhcm1lZCB1cC4gRm9yIHN0cm9uZ2VyIGlzb2xhdGlvbiBhblxuICogb3BlcmF0b3IgY2FuIG1vdmUgdG8gcGVyLXJlY29yZCBlbnZlbG9wZSBlbmNyeXB0aW9uIChjYWxsXG4gKiBHZW5lcmF0ZURhdGFLZXkgb24gZXZlcnkgd3JpdGUpOyB0aGF0J3MgYSBmb2xsb3ctb24uXG4gKlxuICogT3BlcmF0b3Igc2V0dXAgKiAxLiBDcmVhdGUgYSBLTVMgQ01LIHdpdGgga2V5IHBvbGljeSBhbGxvd2luZyB0aGUgcGxhdGZvcm0gc2VydmljZSdzXG4gKiBJQU0gcm9sZSBrbXM6RGVjcnlwdC5cbiAqIDIuIEdlbmVyYXRlIGEgcmFuZG9tIDMyLWJ5dGUgbWFzdGVyICogaGVhZCAtYyAzMiAvZGV2L3VyYW5kb20gfCBiYXNlNjRcbiAqIDMuIFdyYXAgaXQgd2l0aCBLTVMgKiBhd3Mga21zIGVuY3J5cHQgLS1rZXktaWQgPEtFWV9JRD4gXFxcbiAqIC0tcGxhaW50ZXh0IDxiYXNlNjQtZnJvbS1zdGVwLTI+IC0tb3V0cHV0IHRleHQgXFxcbiAqIC0tcXVlcnkgQ2lwaGVydGV4dEJsb2JcbiAqIDQuIFNldCBvbiB0aGUgc2VydmljZSAqIFNFQ1JFVF9FTkNSWVBUSU9OX0tNU19LRVlfSUQ9PEtFWV9JRD5cbiAqIFNFQ1JFVF9FTkNSWVBUSU9OX0tNU19DSVBIRVJURVhUPTxiYXNlNjQtb3V0cHV0LW9mLXN0ZXAtMz5cbiAqIDUuIFBpY2sgdGhpcyBwcm92aWRlciB2aWEgYHNldEtleVByb3ZpZGVyKG5ldyBLbXNLZXlQcm92aWRlcigpKWAuXG4gKlxuICogQ29uc3RydWN0IGxhemlseSAgaW1wb3J0aW5nIHRoZSBBV1MgU0RLIGhhcyBhIG5vbi10cml2aWFsIGNvbGQtc3RhcnRcbiAqIGNvc3Qgc28gZW52cyB0aGF0IHN0YXkgb24gRW52S2V5UHJvdmlkZXIgbmV2ZXIgbG9hZCBpdC5cbiAqL1xuZXhwb3J0IGNsYXNzIEttc0tleVByb3ZpZGVyIGltcGxlbWVudHMgS2V5UHJvdmlkZXIge1xuICBwcml2YXRlIG1hc3RlcktleUNhY2hlOiBCdWZmZXIgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSByZWFkb25seSBrZXlJZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGNpcGhlcnRleHRCNjQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW5kcG9pbnQ/OiBzdHJpbmc7XG4gIHByaXZhdGUgZGVjcnlwdEluRmxpZ2h0OiBQcm9taXNlPEJ1ZmZlcj4gfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihvcHRzPzogeyBrZXlJZD86IHN0cmluZzsgY2lwaGVydGV4dEJhc2U2ND86IHN0cmluZzsgcmVnaW9uPzogc3RyaW5nOyBlbmRwb2ludD86IHN0cmluZyB9KSB7XG4gICAgY29uc3Qga2V5SWQgPSBvcHRzPy5rZXlJZCA/PyBwcm9jZXNzLmVudi5TRUNSRVRfRU5DUllQVElPTl9LTVNfS0VZX0lEO1xuICAgIGNvbnN0IGNpcGhlcnRleHQgPSBvcHRzPy5jaXBoZXJ0ZXh0QmFzZTY0ID8/IHByb2Nlc3MuZW52LlNFQ1JFVF9FTkNSWVBUSU9OX0tNU19DSVBIRVJURVhUO1xuICAgIGlmICgha2V5SWQpIHRocm93IG5ldyBFcnJvcignU0VDUkVUX0VOQ1JZUFRJT05fS01TX0tFWV9JRCBlbnYgaXMgcmVxdWlyZWQgZm9yIEttc0tleVByb3ZpZGVyJyk7XG4gICAgaWYgKCFjaXBoZXJ0ZXh0KSB0aHJvdyBuZXcgRXJyb3IoJ1NFQ1JFVF9FTkNSWVBUSU9OX0tNU19DSVBIRVJURVhUIGVudiBpcyByZXF1aXJlZCBmb3IgS21zS2V5UHJvdmlkZXInKTtcbiAgICB0aGlzLmtleUlkID0ga2V5SWQ7XG4gICAgdGhpcy5jaXBoZXJ0ZXh0QjY0ID0gY2lwaGVydGV4dDtcbiAgICB0aGlzLnJlZ2lvbiA9IG9wdHM/LnJlZ2lvbiA/PyBwcm9jZXNzLmVudi5BV1NfUkVHSU9OID8/IHByb2Nlc3MuZW52LkFXU19ERUZBVUxUX1JFR0lPTjtcbiAgICB0aGlzLmVuZHBvaW50ID0gb3B0cz8uZW5kcG9pbnQgPz8gcHJvY2Vzcy5lbnYuQVdTX0tNU19FTkRQT0lOVDtcbiAgfVxuXG4gIGRlcml2ZUtleShvcmdJZDogc3RyaW5nKTogQnVmZmVyIHtcbiAgICBpZiAoIXRoaXMubWFzdGVyS2V5Q2FjaGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvciggJ0ttc0tleVByb3ZpZGVyIGlzIG5vdCB3YXJtZWQgdXAuIENhbGwgYGF3YWl0IHByb3ZpZGVyLndhcm11cCgpYCBvbmNlIGF0IHNlcnZpY2Ugc3RhcnR1cCBiZWZvcmUgYW55IGVuY3J5cHQvZGVjcnlwdC4nLFxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgZGVyaXZlZCA9IGhrZGZTeW5jKCdzaGEyNTYnLCB0aGlzLm1hc3RlcktleUNhY2hlLCBCdWZmZXIuZnJvbShvcmdJZCwgJ3V0ZjgnKSwgJ3NlY3JldHMtdjEnLCAzMik7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGRlcml2ZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVhZ2VybHkgcmVjb3ZlciB0aGUgbWFzdGVyIGtleSBmcm9tIEtNUyBzbyBzdWJzZXF1ZW50IGBkZXJpdmVLZXlgXG4gICAqIGNhbGxzIGFyZSBzeW5jLiBJZGVtcG90ZW50ICBjb25jdXJyZW50IGNhbGxlcnMgc2hhcmUgdGhlIHNhbWUgaW4tXG4gICAqIGZsaWdodCBwcm9taXNlIHNvIHdlIGRvbid0IHNwYXduIG11bHRpcGxlIEtNUyBEZWNyeXB0IHJlcXVlc3RzIGF0XG4gICAqIGJvb3QuIFRocm93cyBvbiBhbnkgS01TIGZhaWx1cmU7IHRoZSBjYWxsZXIgKHR5cGljYWxseSB0aGUgc2VydmljZSdzXG4gICAqIG9uQmVmb3JlU3RhcnQgaG9vaykgZGVjaWRlcyB3aGV0aGVyIHRvIGZhbGwgYmFjayB0byBhIGRpZmZlcmVudFxuICAgKiBwcm92aWRlciBvciBmYWlsLXN0YXJ0dXAuXG4gICAqL1xuICBhc3luYyB3YXJtdXAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMubWFzdGVyS2V5Q2FjaGUpIHJldHVybjtcbiAgICBpZiAoIXRoaXMuZGVjcnlwdEluRmxpZ2h0KSB7XG4gICAgICB0aGlzLmRlY3J5cHRJbkZsaWdodCA9IHRoaXMuZmV0Y2hBbmREZWNyeXB0KCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICB0aGlzLm1hc3RlcktleUNhY2hlID0gYXdhaXQgdGhpcy5kZWNyeXB0SW5GbGlnaHQ7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBBIHRyYW5zaWVudCBLTVMgZmFpbHVyZSBtdXN0IG5vdCBwZXJtYW5lbnRseSBwb2lzb24gdGhlIHByb3ZpZGVyOiBjbGVhclxuICAgICAgLy8gdGhlIHJlamVjdGVkIGluLWZsaWdodCBwcm9taXNlIHNvIGEgbGF0ZXIgd2FybXVwKCkgcmV0cmllcyBpbnN0ZWFkIG9mXG4gICAgICAvLyByZS1hd2FpdGluZyB0aGUgc2FtZSByZWplY3Rpb24gZm9yZXZlciAobWF0Y2hlcyBQZXJPcmdLbXNLZXlQcm92aWRlcikuXG4gICAgICB0aGlzLmRlY3J5cHRJbkZsaWdodCA9IG51bGw7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaEFuZERlY3J5cHQoKTogUHJvbWlzZTxCdWZmZXI+IHtcbiAgICAvLyBEeW5hbWljIGltcG9ydCBzbyBFbnZLZXlQcm92aWRlci1vbmx5IGVudnMgZG9uJ3QgbG9hZCB0aGUgU0RLLlxuICAgIGNvbnN0IHsgS01TQ2xpZW50LCBEZWNyeXB0Q29tbWFuZCB9ID0gYXdhaXQgaW1wb3J0KCdAYXdzLXNkay9jbGllbnQta21zJyk7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IEtNU0NsaWVudCh7XG4gICAgICByZWdpb246IHRoaXMucmVnaW9uLFxuICAgICAgLi4uKHRoaXMuZW5kcG9pbnQgPyB7IGVuZHBvaW50OiB0aGlzLmVuZHBvaW50IH06IHt9KSxcbiAgICB9KTtcbiAgICBjb25zdCByZXNwID0gYXdhaXQgY2xpZW50LnNlbmQobmV3IERlY3J5cHRDb21tYW5kKHtcbiAgICAgIEtleUlkOiB0aGlzLmtleUlkLFxuICAgICAgQ2lwaGVydGV4dEJsb2I6IEJ1ZmZlci5mcm9tKHRoaXMuY2lwaGVydGV4dEI2NCwgJ2Jhc2U2NCcpLFxuICAgIH0pKTtcbiAgICBpZiAoIXJlc3AuUGxhaW50ZXh0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0tNUyBEZWNyeXB0IHJldHVybmVkIGFuIGVtcHR5IFBsYWludGV4dCcpO1xuICAgIH1cbiAgICBjb25zdCBidWYgPSBCdWZmZXIuZnJvbShyZXNwLlBsYWludGV4dCk7XG4gICAgaWYgKGJ1Zi5sZW5ndGggIT09IDMyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEtNUyBEZWNyeXB0IHJldHVybmVkICR7YnVmLmxlbmd0aH0tYnl0ZSBrZXk7IGV4cGVjdGVkIDMyYCk7XG4gICAgfVxuICAgIHJldHVybiBidWY7XG4gIH1cbn1cblxuLy8gTGF6eSBzaW5nbGV0b24gIG9wZXJhdG9yIGNvZGUgaW4gbG9uZy1saXZlZCBzZXJ2aWNlcyBwYXlzIHRoZSBlbnYtcGFyc2Vcbi8vIGNvc3Qgb25jZSwgYW5kIHRlc3RzIGNhbiBtaW50IHRoZWlyIG93biBwcm92aWRlciB3aXRoIGEgbGl0ZXJhbCBrZXkuXG5sZXQgZGVmYXVsdFByb3ZpZGVyOiBLZXlQcm92aWRlciB8IG51bGwgPSBudWxsO1xuZnVuY3Rpb24gZ2V0RGVmYXVsdFByb3ZpZGVyKCk6IEtleVByb3ZpZGVyIHtcbiAgaWYgKCFkZWZhdWx0UHJvdmlkZXIpIGRlZmF1bHRQcm92aWRlciA9IG5ldyBFbnZLZXlQcm92aWRlcigpO1xuICByZXR1cm4gZGVmYXVsdFByb3ZpZGVyO1xufVxuXG4vKiogUmVhZCB0aGUgYWN0aXZlIGRlZmF1bHQgcHJvdmlkZXIuIEV4cG9zZWQgc28gc2VydmljZSBjb2RlIChlLmcuIGFuXG4gKiAgYWRtaW4gZW5kcG9pbnQgdGhhdCBqdXN0IHJvdGF0ZWQgYW4gb3JnJ3MgS01TIGNvbmZpZykgY2FuIGNhbGxcbiAqICBgcHJvdmlkZXIuZXZpY3Qob3JnSWQpYCBvbiB0aGUgbGl2ZSBwcm92aWRlciByYXRoZXIgdGhhbiByZWNvbnN0cnVjdGluZ1xuICogIG9uZS4gVHJpZ2dlcnMgbGF6eSBpbml0aWFsaXphdGlvbiBvbiBmaXJzdCBhY2Nlc3MsIHNhbWUgYXMgdGhlIGludGVybmFsXG4gKiAgY2FsbGVycyBiZWxvdy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0S2V5UHJvdmlkZXIoKTogS2V5UHJvdmlkZXIge1xuICByZXR1cm4gZ2V0RGVmYXVsdFByb3ZpZGVyKCk7XG59XG5cbi8qKiBSZXNldCB0aGUgY2FjaGVkIGRlZmF1bHQgcHJvdmlkZXIgIGZvciB0ZXN0cyB0aGF0IG11dGF0ZSBgcHJvY2Vzcy5lbnZgLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc2V0RGVmYXVsdEtleVByb3ZpZGVyKCk6IHZvaWQgeyBkZWZhdWx0UHJvdmlkZXIgPSBudWxsOyB9XG5cbi8qKiBSZXBsYWNlIHRoZSBkZWZhdWx0IHByb3ZpZGVyICBzZXJ2aWNlcyB0aGF0IG9wdCBpbnRvIEtNUyBjYWxsIHRoaXNcbiAqIG9uY2UgYXQgc3RhcnR1cCB3aXRoIGEgd2FybWVkLXVwIGBLbXNLZXlQcm92aWRlcmAuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0S2V5UHJvdmlkZXIocHJvdmlkZXI6IEtleVByb3ZpZGVyKTogdm9pZCB7IGRlZmF1bHRQcm92aWRlciA9IHByb3ZpZGVyOyB9XG5cbi8qKiBQZXItb3JnIEtNUyBjb25maWcgdGhlIG9wZXJhdG9yIHN1cHBsaWVzLiBUaGUgYGtleUlkYCBpZGVudGlmaWVzIHRoZVxuICogIEtNUyBDTUsgdG8gY2FsbCBEZWNyeXB0IG9uOyBgY2lwaGVydGV4dEJhc2U2NGAgaXMgdGhlIHdyYXBwZWQgMzItYnl0ZVxuICogIG1hc3RlciBnZW5lcmF0ZWQgYnkgYGF3cyBrbXMgZW5jcnlwdGAgYWdhaW5zdCB0aGF0IGtleS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGVyT3JnS21zQ29uZmlnIHtcbiAga2V5SWQ6IHN0cmluZztcbiAgY2lwaGVydGV4dEJhc2U2NDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFzeW5jIHJlc29sdmVyIHRoYXQgbWFwcyBhbiBvcmcgaWQgdG8gaXRzIEtNUyBjb25maWcuIFJldHVybnMgYG51bGxgIHdoZW5cbiAqIHRoZSBvcmcgaGFzIG5vIHBlci1vcmcgY29uZmlnIOKAlCB0aGUgcHJvdmlkZXIgdGhlbiBmYWxscyBiYWNrIHRvIHRoZVxuICogYGZhbGxiYWNrYCBwcm92aWRlciBzdXBwbGllZCBhdCBjb25zdHJ1Y3Rpb24gKHVzdWFsbHkgYW4gRW52S2V5UHJvdmlkZXJcbiAqIG9yIGEgZGVmYXVsdCBLbXNLZXlQcm92aWRlcikuXG4gKi9cbmV4cG9ydCB0eXBlIFBlck9yZ0ttc1Jlc29sdmVyID0gKG9yZ0lkOiBzdHJpbmcpID0+IFByb21pc2U8UGVyT3JnS21zQ29uZmlnIHwgbnVsbD47XG5cbi8qKlxuICogUGVyLW9yZyBLTVMtYmFja2VkIEtleVByb3ZpZGVyLiBUaGUgYmxhc3QgcmFkaXVzIG9mIGEgS01TIGtleSBjb21wcm9taXNlXG4gKiBpcyBvbmUgb3JnIGluc3RlYWQgb2YgZXZlcnkgb3JnIHVuZGVyIGEgc2hhcmVkIG1hc3Rlci5cbiAqXG4gKiBFYWNoIG9yZyBoYXMgaXRzIG93biBLTVMgQ01LICsgaXRzIG93biB3cmFwcGVkIG1hc3RlciAoc3RvcmVkIGluIE1vbmdvXG4gKiB2aWEgdGhlIG9wZXJhdG9yJ3Mgc2V0dXAgc2NyaXB0KS4gT24gZmlyc3QgZW5jcnlwdC9kZWNyeXB0IGZvciBhbiBvcmcsXG4gKiB0aGUgcHJvdmlkZXI6XG4gKiAgIDEuIENhbGxzIHRoZSByZXNvbHZlciB0byBmZXRjaCB0aGUgb3JnJ3MgS01TIGNvbmZpZy5cbiAqICAgMi4gQ2FsbHMgYGttczpEZWNyeXB0YCB0byByZWNvdmVyIHRoZSAzMi1ieXRlIG1hc3Rlci5cbiAqICAgMy4gQ2FjaGVzIHRoZSByZWNvdmVyZWQgbWFzdGVyIGluLW1lbW9yeSBmb3IgdGhlIHByb2Nlc3MgbGlmZXRpbWUuXG4gKiAgIDQuIEhLREYtZGVyaXZlcyBwZXItY2FsbCBmcm9tIHRoYXQgbWFzdGVyICsgdGhlIG9yZyBpZCBzYWx0LlxuICpcbiAqIEJsb2JzIGVuY3J5cHRlZCBieSB0aGlzIHByb3ZpZGVyIGNhcnJ5IGBraWQgPSA8a21zLWtleS1pZD5gIHNvIHRoZVxuICogZGVjcnlwdCBwYXRoIGRldGVjdHMgYSBzdGFsZSBjb25maWcgKG9wZXJhdG9yIHJvdGF0ZWQgdGhlIGtleSBidXRcbiAqIGV4aXN0aW5nIHJvd3Mgd2VyZW4ndCByZS1lbmNyeXB0ZWQpIEJFRk9SRSBBRVMtR0NNIHRocm93cyBhbiBvcGFxdWVcbiAqIGF1dGhlbnRpY2F0aW9uLXRhZyBlcnJvci5cbiAqXG4gKiBPcmdzIHdpdGhvdXQgcGVyLW9yZyBjb25maWcgZmFsbCB0aHJvdWdoIHRvIHRoZSBgZmFsbGJhY2tgIHByb3ZpZGVyIOKAlFxuICogbWl4ZWQtbW9kZSBkZXBsb3ltZW50cyB3aGVyZSBzb21lIG9yZ3MgaGF2ZSBLTVMgaXNvbGF0aW9uIGFuZCBvdGhlcnNcbiAqIHN0YXkgb24gdGhlIHNoYXJlZCBtYXN0ZXIgYXJlIGV4cGxpY2l0bHkgc3VwcG9ydGVkLlxuICovXG5leHBvcnQgY2xhc3MgUGVyT3JnS21zS2V5UHJvdmlkZXIgaW1wbGVtZW50cyBLZXlQcm92aWRlciB7XG4gIC8qKiBDYWNoZWQgcGVyLW9yZyBtYXN0ZXIga2V5cywga2V5ZWQgYnkgb3JnSWQuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgbWFzdGVycyA9IG5ldyBNYXA8c3RyaW5nLCB7IGtleTogQnVmZmVyOyBraWQ6IHN0cmluZyB9PigpO1xuICAvKiogUmVzb2x2ZWQgcGVyLW9yZyBjb25maWdzIGNhY2hlZCBmb3IgdGhlIHByb2Nlc3MgbGlmZXRpbWUuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlncyA9IG5ldyBNYXA8c3RyaW5nLCBQZXJPcmdLbXNDb25maWc+KCk7XG4gIC8qKiBJbi1mbGlnaHQgcmVzb2x2ZXIgcHJvbWlzZXMgc28gY29uY3VycmVudCBmaXJzdC10b3VjaCBjYWxsZXJzIHNoYXJlIG9uZSBLTVMgRGVjcnlwdC5cbiAgICogIFJlc29sdmVzIHRvIGBudWxsYCBmb3Igb3JncyB3aXRoIG5vIHBlci1vcmcgY29uZmlnIOKAlCBjYWxsZXIgdHJlYXRzIG51bGwgYXNcbiAgICogIFwiZmFsbCB0aHJvdWdoIHRvIHRoZSBmYWxsYmFjayBwcm92aWRlclwiLCBzYW1lIGFzIGEgY29sZCBjYWNoZSBtaXNzLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGluRmxpZ2h0ID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8eyBrZXk6IEJ1ZmZlcjsga2lkOiBzdHJpbmcgfSB8IG51bGw+PigpO1xuICAvKiogUHJvdmlkZXIgdXNlZCBmb3Igb3JncyB0aGF0IGhhdmUgbm8gcGVyLW9yZyBjb25maWcuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZmFsbGJhY2s6IEtleVByb3ZpZGVyO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlc29sdmVyOiBQZXJPcmdLbXNSZXNvbHZlcjtcbiAgcHJpdmF0ZSByZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW5kcG9pbnQ/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Iob3B0czoge1xuICAgIHJlc29sdmVyOiBQZXJPcmdLbXNSZXNvbHZlcjtcbiAgICBmYWxsYmFjazogS2V5UHJvdmlkZXI7XG4gICAgcmVnaW9uPzogc3RyaW5nO1xuICAgIGVuZHBvaW50Pzogc3RyaW5nO1xuICB9KSB7XG4gICAgdGhpcy5yZXNvbHZlciA9IG9wdHMucmVzb2x2ZXI7XG4gICAgdGhpcy5mYWxsYmFjayA9IG9wdHMuZmFsbGJhY2s7XG4gICAgdGhpcy5yZWdpb24gPSBvcHRzLnJlZ2lvbiA/PyBwcm9jZXNzLmVudi5BV1NfUkVHSU9OID8/IHByb2Nlc3MuZW52LkFXU19ERUZBVUxUX1JFR0lPTjtcbiAgICB0aGlzLmVuZHBvaW50ID0gb3B0cy5lbmRwb2ludCA/PyBwcm9jZXNzLmVudi5BV1NfS01TX0VORFBPSU5UO1xuICB9XG5cbiAgLyoqIFN5bmMgYGRlcml2ZUtleWAgb25seSB3b3JrcyBmb3IgYWxyZWFkeS13YXJtZWQgb3Jncy4gQ29sZCBvcmdzIGZhbGxcbiAgICogIHRocm91Z2ggdG8gdGhlIGZhbGxiYWNrIHByb3ZpZGVyLiBDYWxsZXJzIHRoYXQgd2FudCBwZXItb3JnIGlzb2xhdGlvblxuICAgKiAgTVVTVCBgYXdhaXQgZGVyaXZlS2V5QXN5bmMob3JnSWQpYCBvbmNlIGZpcnN0IChlLmcuIGR1cmluZyByZXF1ZXN0IHNldHVwXG4gICAqICBvciBhcyBwYXJ0IG9mIGEgd2FybXVwIHBhc3MpIOKAlCBvdGhlcndpc2UgdGhlIG9yZyBzaWxlbnRseSB1c2VzIHRoZVxuICAgKiAgc2hhcmVkIG1hc3Rlci4gKi9cbiAgZGVyaXZlS2V5KG9yZ0lkOiBzdHJpbmcpOiBCdWZmZXIge1xuICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMubWFzdGVycy5nZXQob3JnSWQpO1xuICAgIGlmICghY2FjaGVkKSByZXR1cm4gdGhpcy5mYWxsYmFjay5kZXJpdmVLZXkob3JnSWQpO1xuICAgIGNvbnN0IGRlcml2ZWQgPSBoa2RmU3luYygnc2hhMjU2JywgY2FjaGVkLmtleSwgQnVmZmVyLmZyb20ob3JnSWQsICd1dGY4JyksICdzZWNyZXRzLXYxJywgMzIpO1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShkZXJpdmVkKTtcbiAgfVxuXG4gIGFzeW5jIGRlcml2ZUtleUFzeW5jKG9yZ0lkOiBzdHJpbmcpOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlV2FybWVkKG9yZ0lkKTtcbiAgICByZXR1cm4gdGhpcy5kZXJpdmVLZXkob3JnSWQpO1xuICB9XG5cbiAga2lkRm9yKG9yZ0lkOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLm1hc3RlcnMuZ2V0KG9yZ0lkKT8ua2lkID8/IHRoaXMuZmFsbGJhY2sua2lkRm9yPy4ob3JnSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgdGhlIG9yZydzIEtNUyBjb25maWcsIGNhbGwgRGVjcnlwdCwgY2FjaGUgdGhlIG1hc3Rlci4gU3Vic2VxdWVudFxuICAgKiBjYWxscyBmb3IgdGhlIHNhbWUgb3JnIGFyZSBuby1vcHMuIENvbmN1cnJlbnQgY2FsbGVycyBzaGFyZSB0aGUgaW4tZmxpZ2h0XG4gICAqIERlY3J5cHQgcHJvbWlzZS5cbiAgICpcbiAgICogUmV0dXJucyBzaWxlbnRseSB3aGVuIHRoZSBvcmcgaGFzIG5vIHBlci1vcmcgY29uZmlnIOKAlCB0aGUgZmFsbGJhY2tcbiAgICogcHJvdmlkZXIgaGFuZGxlcyB0aG9zZSBvcmdzLlxuICAgKi9cbiAgYXN5bmMgZW5zdXJlV2FybWVkKG9yZ0lkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5tYXN0ZXJzLmhhcyhvcmdJZCkpIHJldHVybjtcbiAgICAvLyBJbnN0YWxsIHRoZSBpbi1mbGlnaHQgcHJvbWlzZSBTWU5DSFJPTk9VU0xZIGJlZm9yZSB5aWVsZGluZyBzbyBjb25jdXJyZW50XG4gICAgLy8gY2FsbGVycyBmaW5kIGl0IG9uIHRoZSBzZWNvbmQtYW5kLWxhdGVyIHBhc3Nlcy4gQXdhaXRpbmcgdGhlIHJlc29sdmVyXG4gICAgLy8gYmVmb3JlIHBvcHVsYXRpbmcgdGhlIG1hcCBpcyB0aGUgYnVnIHRoYXQgbGV0cyBhIFByb21pc2UuYWxsIG9mIDNcbiAgICAvLyBjYWxsZXJzIGZpcmUgMyBLTVMgRGVjcnlwdHMuXG4gICAgbGV0IHByb21pc2UgPSB0aGlzLmluRmxpZ2h0LmdldChvcmdJZCk7XG4gICAgaWYgKCFwcm9taXNlKSB7XG4gICAgICBwcm9taXNlID0gdGhpcy5yZXNvbHZlQW5kRGVjcnlwdChvcmdJZCk7XG4gICAgICB0aGlzLmluRmxpZ2h0LnNldChvcmdJZCwgcHJvbWlzZSk7XG4gICAgICB2b2lkIHByb21pc2UuZmluYWxseSgoKSA9PiB7IGlmICh0aGlzLmluRmxpZ2h0LmdldChvcmdJZCkgPT09IHByb21pc2UpIHRoaXMuaW5GbGlnaHQuZGVsZXRlKG9yZ0lkKTsgfSk7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHByb21pc2U7XG4gICAgaWYgKHJlc3VsdCkgdGhpcy5tYXN0ZXJzLnNldChvcmdJZCwgcmVzdWx0KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzb2x2ZUFuZERlY3J5cHQob3JnSWQ6IHN0cmluZyk6IFByb21pc2U8eyBrZXk6IEJ1ZmZlcjsga2lkOiBzdHJpbmcgfSB8IG51bGw+IHtcbiAgICBsZXQgY2ZnID0gdGhpcy5jb25maWdzLmdldChvcmdJZCk7XG4gICAgaWYgKCFjZmcpIHtcbiAgICAgIGNvbnN0IHJlc29sdmVkID0gYXdhaXQgdGhpcy5yZXNvbHZlcihvcmdJZCk7XG4gICAgICBpZiAoIXJlc29sdmVkKSByZXR1cm4gbnVsbDsgLy8gbm8gcGVyLW9yZyBjb25maWcg4oaSIGNhbGxlciB1c2VzIGZhbGxiYWNrXG4gICAgICBjZmcgPSByZXNvbHZlZDtcbiAgICAgIHRoaXMuY29uZmlncy5zZXQob3JnSWQsIGNmZyk7XG4gICAgfVxuICAgIGNvbnN0IGtleSA9IGF3YWl0IHRoaXMuZmV0Y2hBbmREZWNyeXB0KGNmZyk7XG4gICAgcmV0dXJuIHsga2V5LCBraWQ6IGNmZy5rZXlJZCB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaEFuZERlY3J5cHQoY2ZnOiBQZXJPcmdLbXNDb25maWcpOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICAgIGNvbnN0IHsgS01TQ2xpZW50LCBEZWNyeXB0Q29tbWFuZCB9ID0gYXdhaXQgaW1wb3J0KCdAYXdzLXNkay9jbGllbnQta21zJyk7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IEtNU0NsaWVudCh7XG4gICAgICByZWdpb246IHRoaXMucmVnaW9uLFxuICAgICAgLi4uKHRoaXMuZW5kcG9pbnQgPyB7IGVuZHBvaW50OiB0aGlzLmVuZHBvaW50IH0gOiB7fSksXG4gICAgfSk7XG4gICAgY29uc3QgcmVzcCA9IGF3YWl0IGNsaWVudC5zZW5kKG5ldyBEZWNyeXB0Q29tbWFuZCh7XG4gICAgICBLZXlJZDogY2ZnLmtleUlkLFxuICAgICAgQ2lwaGVydGV4dEJsb2I6IEJ1ZmZlci5mcm9tKGNmZy5jaXBoZXJ0ZXh0QmFzZTY0LCAnYmFzZTY0JyksXG4gICAgfSkpO1xuICAgIGlmICghcmVzcC5QbGFpbnRleHQpIHRocm93IG5ldyBFcnJvcihgS01TIERlY3J5cHQgcmV0dXJuZWQgZW1wdHkgUGxhaW50ZXh0IGZvciBrZXkgJHtjZmcua2V5SWR9YCk7XG4gICAgY29uc3QgYnVmID0gQnVmZmVyLmZyb20ocmVzcC5QbGFpbnRleHQpO1xuICAgIGlmIChidWYubGVuZ3RoICE9PSAzMikgdGhyb3cgbmV3IEVycm9yKGBLTVMgRGVjcnlwdCByZXR1cm5lZCAke2J1Zi5sZW5ndGh9LWJ5dGUga2V5IGZvciAke2NmZy5rZXlJZH07IGV4cGVjdGVkIDMyYCk7XG4gICAgcmV0dXJuIGJ1ZjtcbiAgfVxuXG4gIC8qKiBFdmljdCBhIGNhY2hlZCBwZXItb3JnIG1hc3Rlci4gVXNlIGFmdGVyIGEga2V5IHJvdGF0aW9uIHNvIHRoZSBuZXh0XG4gICAqICB0b3VjaCByZS1mZXRjaGVzIHRoZSBuZXcgd3JhcHBlZCBtYXN0ZXIgZnJvbSB0aGUgcmVzb2x2ZXIuICovXG4gIGV2aWN0KG9yZ0lkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm1hc3RlcnMuZGVsZXRlKG9yZ0lkKTtcbiAgICB0aGlzLmNvbmZpZ3MuZGVsZXRlKG9yZ0lkKTtcbiAgfVxufVxuXG4vKipcbiAqIEVuY3J5cHQgYSBwbGFpbnRleHQgc3RyaW5nIGZvciBzdG9yYWdlLiBSZXR1cm5zIGFuIGBFbmNyeXB0ZWRCbG9iYCB0aGF0XG4gKiBjYW4gYmUgSlNPTi1zZXJpYWxpemVkIGludG8gdGhlIHVuZGVybHlpbmcgY29sdW1uIC8gTW9uZ28gZG9jdW1lbnQuXG4gKlxuICogRW1wdHkgc3RyaW5ncyByb3VuZC10cmlwIGFzIGBudWxsYCBzbyB0aGUgY2FsbGluZyBtb2RlbCBsYXllciBjYW4gdHJlYXRcbiAqIFwibm8gc2VjcmV0IHNldFwiIGlkZW50aWNhbGx5IHRvIFwiZmllbGQgYWJzZW50XCIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmNyeXB0U2VjcmV0KCBwbGFpbnRleHQ6IHN0cmluZyxcbiAgb3JnSWQ6IHN0cmluZyxcbiAgcHJvdmlkZXI6IEtleVByb3ZpZGVyID0gZ2V0RGVmYXVsdFByb3ZpZGVyKCksXG4pOiBFbmNyeXB0ZWRCbG9iIHtcbiAgaWYgKCFwbGFpbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlZnVzaW5nIHRvIGVuY3J5cHQgZW1wdHkgc3RyaW5nOyBjYWxsZXIgc2hvdWxkIHN0b3JlIG51bGwgaW5zdGVhZCcpO1xuICB9XG4gIGNvbnN0IGtleSA9IHByb3ZpZGVyLmRlcml2ZUtleShvcmdJZCk7XG4gIGNvbnN0IGl2ID0gcmFuZG9tQnl0ZXMoMTIpO1xuICBjb25zdCBjaXBoZXIgPSBjcmVhdGVDaXBoZXJpdignYWVzLTI1Ni1nY20nLCBrZXksIGl2KTtcbiAgY29uc3QgZW5jID0gQnVmZmVyLmNvbmNhdChbY2lwaGVyLnVwZGF0ZShwbGFpbnRleHQsICd1dGY4JyksIGNpcGhlci5maW5hbCgpXSk7XG4gIGNvbnN0IHRhZyA9IGNpcGhlci5nZXRBdXRoVGFnKCk7XG4gIC8vIFBlck9yZ0ttc0tleVByb3ZpZGVyIHRhZ3MgYmxvYnMgd2l0aCB0aGUgS01TIGtleSBpZCB1c2VkIHNvIHRoZVxuICAvLyBkZWNyeXB0IHBhdGggY2FuIHJlZnVzZSB0byBvcGVyYXRlIGlmIHRoZSBvcGVyYXRvciBsYXRlciBzd2FwcyBpbiBhXG4gIC8vIGRpZmZlcmVudCBwZXItb3JnIGNvbmZpZyAoYSBtaXNjb25maWd1cmVkIHN3YXAgc2hvdWxkbid0IHNpbGVudGx5XG4gIC8vIGFjY2VwdCBhIHN0YWxlIGJsb2IgaXQgY2FuJ3QgdmVyaWZ5IGFnYWluc3QgdGhlIHJpZ2h0IENNSykuXG4gIGNvbnN0IGtpZCA9IHByb3ZpZGVyLmtpZEZvcj8uKG9yZ0lkKTtcbiAgcmV0dXJuIHtcbiAgICBhbGc6ICdhZXMtMjU2LWdjbS12MScsXG4gICAgaXY6IGl2LnRvU3RyaW5nKCdiYXNlNjQnKSxcbiAgICAvLyBHQ00gdGFnIE1VU1QgdHJhdmVsIHdpdGggdGhlIGNpcGhlcnRleHQgb3IgYGRlY3J5cHRTZWNyZXRgIGNhbid0XG4gICAgLy8gdmVyaWZ5IGludGVncml0eSAgY29uY2F0ZW5hdGUgc28gdGhlIG9uLWRpc2sgc2hhcGUgaXMgb25lIGZpZWxkLlxuICAgIGNpcGhlcnRleHQ6IEJ1ZmZlci5jb25jYXQoW2VuYywgdGFnXSkudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgIC4uLihraWQgIT09IHVuZGVmaW5lZCA/IHsga2lkIH0gOiB7fSksXG4gIH07XG59XG5cbi8qKlxuICogRGVjcnlwdCBhbiBgRW5jcnlwdGVkQmxvYmAgd3JpdHRlbiBieSBgZW5jcnlwdFNlY3JldGAuIFRocm93cyBvbiAqIC0gdW5rbm93biBgYWxnYCAoZm9yY2VzIGFuIGV4cGxpY2l0IG1pZ3JhdGlvbiB3aGVuIHRoZSBmb3JtYXQgY2hhbmdlcylcbiAqIC0gd3Jvbmcgb3JnSWQgKEhLREYgYmluZGluZyBtaXNtYXRjaCBmYWlscyB0aGUgYXV0aCB0YWcpXG4gKiAtIHRhbXBlcmVkIGNpcGhlcnRleHQgKEdDTSBhdXRoIHRhZyBjaGVjayBmYWlscylcbiAqXG4gKiBDYWxsZXJzIGhhbmRsZSB0aGUgdGhyb3cgIG1hc2tpbmcgdGhlIGZhaWx1cmUgYXMgYG51bGxgIHdvdWxkIGhpZGVcbiAqIHNpbGVudCBjb3JydXB0aW9uIC8gd3Jvbmctb3JnIHJlYWRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjcnlwdFNlY3JldCggYmxvYjogRW5jcnlwdGVkQmxvYixcbiAgb3JnSWQ6IHN0cmluZyxcbiAgcHJvdmlkZXI6IEtleVByb3ZpZGVyID0gZ2V0RGVmYXVsdFByb3ZpZGVyKCksXG4pOiBzdHJpbmcge1xuICBpZiAoYmxvYi5hbGcgIT09ICdhZXMtMjU2LWdjbS12MScpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGVuY3J5cHRpb24gYWxnOiAke2Jsb2IuYWxnfWApO1xuICB9XG4gIC8vIElmIGJvdGggdGhlIHByb3ZpZGVyIEFORCB0aGUgYmxvYiByZXBvcnQgYSBraWQsIHRoZXkgbXVzdCBtYXRjaC5cbiAgLy8gTWlzbWF0Y2ggdXN1YWxseSBtZWFucyBhbiBvcGVyYXRvciByb3RhdGVkL3JlcGxhY2VkIGFuIG9yZydzIEtNU1xuICAvLyBjb25maWcgYW5kIGlzIG5vdyByZWFkaW5nIGEgYmxvYiBlbmNyeXB0ZWQgdW5kZXIgdGhlIE9MRCBrZXkg4oCUXG4gIC8vIGZhaWxpbmcgbG91ZCBoZXJlIGJlYXRzIGxldHRpbmcgQUVTLUdDTSB0aHJvdyBhbiBvcGFxdWUgYXV0aC10YWcgZXJyb3IuXG4gIGNvbnN0IHByb3ZpZGVyS2lkID0gcHJvdmlkZXIua2lkRm9yPy4ob3JnSWQpO1xuICBpZiAocHJvdmlkZXJLaWQgIT09IHVuZGVmaW5lZCAmJiBibG9iLmtpZCAhPT0gdW5kZWZpbmVkICYmIHByb3ZpZGVyS2lkICE9PSBibG9iLmtpZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgS01TIGtleSBpZCBtaXNtYXRjaDogYmxvYiB3YXMgZW5jcnlwdGVkIHVuZGVyICR7YmxvYi5raWR9LCBjdXJyZW50IHByb3ZpZGVyIHVzZXMgJHtwcm92aWRlcktpZH0gZm9yIG9yZyAke29yZ0lkfWApO1xuICB9XG4gIGNvbnN0IGtleSA9IHByb3ZpZGVyLmRlcml2ZUtleShvcmdJZCk7XG4gIGNvbnN0IGl2ID0gQnVmZmVyLmZyb20oYmxvYi5pdiwgJ2Jhc2U2NCcpO1xuICBjb25zdCBhbGwgPSBCdWZmZXIuZnJvbShibG9iLmNpcGhlcnRleHQsICdiYXNlNjQnKTtcbiAgLy8gU3BsaXQgb2ZmIHRoZSAxNi1ieXRlIGF1dGggdGFnIGFwcGVuZGVkIGluIGVuY3J5cHRTZWNyZXQuIEFueSB0YW1wZXJpbmdcbiAgLy8gIHRvIGVpdGhlciB0aGUgY2lwaGVydGV4dCBPUiB0aGUgdGFnICBjYXVzZXMgdGhlIG5leHQgYGZpbmFsKClgIHRvXG4gIC8vIHRocm93IHdpdGggXCJVbnN1cHBvcnRlZCBzdGF0ZSBvciB1bmFibGUgdG8gYXV0aGVudGljYXRlIGRhdGFcIi5cbiAgY29uc3QgdGFnID0gYWxsLnN1YmFycmF5KGFsbC5sZW5ndGggLSAxNik7XG4gIGNvbnN0IGVuYyA9IGFsbC5zdWJhcnJheSgwLCBhbGwubGVuZ3RoIC0gMTYpO1xuICBjb25zdCBkZWNpcGhlciA9IGNyZWF0ZURlY2lwaGVyaXYoJ2Flcy0yNTYtZ2NtJywga2V5LCBpdik7XG4gIGRlY2lwaGVyLnNldEF1dGhUYWcodGFnKTtcbiAgY29uc3QgZGVjID0gQnVmZmVyLmNvbmNhdChbZGVjaXBoZXIudXBkYXRlKGVuYyksIGRlY2lwaGVyLmZpbmFsKCldKTtcbiAgcmV0dXJuIGRlYy50b1N0cmluZygndXRmOCcpO1xufVxuXG4vKipcbiAqIFR5cGUgZ3VhcmQgIGhhbmR5IGZvciBtb2RlbCBsYXllcnMgdGhhdCBob2xkIGEgY29sdW1uIHdob3NlIHZhbHVlIG1heSBiZVxuICogZWl0aGVyIGEgY2xlYXItdGV4dCBzdHJpbmcgKGxlZ2FjeSAvIHVuZW5jcnlwdGVkKSBPUiBhbiBlbmNyeXB0ZWQgYmxvYlxuICogKHBvc3QtbWlncmF0aW9uKS4gTWl4ZWQgc3RhdGVzIGFyaXNlIG1pZC1taWdyYXRpb247IHRoZSBtb2RlbCBkZWNpZGVzXG4gKiB3aGF0IHRvIGRvIChkZWNyeXB0IG9uIHJlYWQsIGVuY3J5cHQgb24gbmV4dCB3cml0ZSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0VuY3J5cHRlZEJsb2IodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBFbmNyeXB0ZWRCbG9iIHtcbiAgcmV0dXJuICggdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0J1xuICAgICYmIHZhbHVlICE9PSBudWxsXG4gICAgJiYgKHZhbHVlIGFzIHsgYWxnPzogdW5rbm93biB9KS5hbGcgPT09ICdhZXMtMjU2LWdjbS12MSdcbiAgICAmJiB0eXBlb2YgKHZhbHVlIGFzIHsgaXY/OiB1bmtub3duIH0pLml2ID09PSAnc3RyaW5nJ1xuICAgICYmIHR5cGVvZiAodmFsdWUgYXMgeyBjaXBoZXJ0ZXh0PzogdW5rbm93biB9KS5jaXBoZXJ0ZXh0ID09PSAnc3RyaW5nJ1xuICApO1xufVxuIl19
385
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0LWVuY3J5cHRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvc2VjcmV0LWVuY3J5cHRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQkc7QUFFSCxPQUFPLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxRQUFRLENBQUM7QUE2QmpGOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLE9BQU8sY0FBYztJQUNSLFNBQVMsQ0FBUztJQUVuQyxZQUFZLGlCQUEwQjtRQUNwQyxNQUFNLEdBQUcsR0FBRyxpQkFBaUIsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDO1FBQ25FLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNULE1BQU0sSUFBSSxLQUFLLENBQUMsNkRBQTZELENBQUMsQ0FBQztRQUNqRixDQUFDO1FBQ0QsMEVBQTBFO1FBQzFFLHNEQUFzRDtRQUN0RCxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsTUFBTSxLQUFLLEVBQUUsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUMzRCxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvQixJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDM0YsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO0lBQzNCLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBYTtRQUNy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QUcsQ0FBQyxDQUFDO0lBQ3pCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEUsT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsS0FBYztJQUM1QyxPQUFPLENBQUUsT0FBTyxLQUFLLEtBQUssUUFBUTtXQUM3QixLQUFLLEtBQUssSUFBSTtXQUNiLEtBQTJCLENBQUMsR0FBRyxLQUFLLGdCQUFnQjtXQUNyRCxPQUFRLEtBQTBCLENBQUMsRUFBRSxLQUFLLFFBQVE7V0FDbEQsT0FBUSxLQUFrQyxDQUFDLFVBQVUsS0FBSyxRQUFRLENBQ3RFLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogIFBlci1vcmcgZW52ZWxvcGUgZW5jcnlwdGlvbiBmb3Igc2VjcmV0IGNvbHVtbnMuXG4gKlxuICogVG9kYXkncyBwb3N0dXJlIGZvciBvcmctc2NvcGVkIHNlY3JldHMgKGFpUHJvdmlkZXJLZXlzLCB3ZWJob29rIFVSTHMsXG4gKiByZWdpc3RyeSBjcmVkZW50aWFscykgaXMgY2xlYXItdGV4dCBpbiBNb25nbyAvIFBvc3RncmVzIHdpdGggYXBwLWxheWVyXG4gKiBtYXNraW5nIG9uIG91dHB1dC4gVGhpcyBtb2R1bGUgaXMgdGhlIGVuY3J5cHRpb24gcHJpbWl0aXZlIHRoYXQgbGV0cyB0aGVcbiAqIG1vZGVsIGxheWVyIHN3YXAgY2xlYXItdGV4dCBzdHJpbmdzIGZvciBgRW5jcnlwdGVkQmxvYmAgdmFsdWVzIGF0IHdyaXRlXG4gKiB0aW1lIGFuZCBkZWNyeXB0IGF0IHJlYWQgdGltZS5cbiAqXG4gKiBDcnlwdG9ncmFwaHkgKiAtIEFFUy0yNTYtR0NNIChhdXRoZW50aWNhdGVkIGVuY3J5cHRpb24pLlxuICogLSBQZXItb3JnIGtleSBkZXJpdmVkIHZpYSBIS0RGLVNIQTI1NihtYXN0ZXJLZXksIHNhbHQ9b3JnSWQsIGluZm89J3NlY3JldHMtdjEnKS5cbiAqIEVhY2ggb3JnIGdldHMgYSB1bmlxdWUga2V5IHdpdGhvdXQgb3BlcmF0b3Iga2V5LW1hbmFnZW1lbnQgY2VyZW1vbnkuXG4gKiAtIDEyLWJ5dGUgSVYgZ2VuZXJhdGVkIHBlciBlbmNyeXB0aW9uIHdpdGggYGNyeXB0by5yYW5kb21CeXRlc2AuXG4gKiAtIDE2LWJ5dGUgYXV0aGVudGljYXRpb24gdGFnIGNvbmNhdGVuYXRlZCB3aXRoIGNpcGhlcnRleHQgKHN0YW5kYXJkIEdDTSkuXG4gKlxuICogT3BlcmF0b3IgY29uZmlndXJhdGlvbiAqIC0gYFNFQ1JFVF9FTkNSWVBUSU9OX0tFWWAgZW52OiBoZXgtIG9yIGJhc2U2NC1lbmNvZGVkIDMyLWJ5dGUgbWFzdGVyIGtleS5cbiAqIFJlcXVpcmVkIHdoZW4gYGVuY3J5cHRTZWNyZXRgL2BkZWNyeXB0U2VjcmV0YCBhcmUgY2FsbGVkLiBNaXNzaW5nIGtleVxuICogdGhyb3dzICBlbmNyeXB0aW9uIGlzIGZhaWwtY2xvc2VkOyB3ZSBuZXZlciBzaWxlbnRseSByb3VuZC10cmlwIGFcbiAqIHNlY3JldCBhcyBwbGFpbnRleHQuXG4gKlxuICogS01TIG1pZ3JhdGlvbiBwYXRoICogLSBUaGUgdHdvIGV4cG9ydGVkIGZ1bmN0aW9ucyB0YWtlIGEgYHByb3ZpZGVyYCBwYXJhbWV0ZXIuIFRoZSBkZWZhdWx0XG4gKiBgRW52S2V5UHJvdmlkZXJgIGltcGxlbWVudHMgSEtERiBkZXJpdmF0aW9uLiBBIGZ1dHVyZSBgQXdzS21zUHJvdmlkZXJgXG4gKiBwbHVncyBpbiBoZXJlOiBpdCBjYW4gY2FsbCBLTVMgYEVuY3J5cHRgIC8gYERlY3J5cHRgIHRvIHdyYXAgYSBERUtcbiAqIHJhdGhlciB0aGFuIGhvbGRpbmcgYSBtYXN0ZXIga2V5IGluIGVudi4gVGhlIG9uLWRpc2sgYmxvYiBzaGFwZVxuICogKGB7IGFsZywgaXYsIGNpcGhlcnRleHQsIGtpZD8gfWApIGlzIGZvcndhcmQtY29tcGF0aWJsZSAgYGtpZGBcbiAqIGNhcnJpZXMgdGhlIEtNUyBrZXkgaWQgd2hlbiB0aGUgcHJvdmlkZXIgbmVlZHMgaXQuXG4gKi9cblxuaW1wb3J0IHsgY3JlYXRlQ2lwaGVyaXYsIGNyZWF0ZURlY2lwaGVyaXYsIGhrZGZTeW5jLCByYW5kb21CeXRlcyB9IGZyb20gJ2NyeXB0byc7XG5cbi8qKiBPbi1kaXNrIHNoYXBlIG9mIGFuIGVuY3J5cHRlZCBzZWNyZXQuIEpTT04tc2VyaWFsaXphYmxlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmNyeXB0ZWRCbG9iIHtcbiAgLyoqIEFsZ29yaXRobSB0YWcuIEJ1bXAgb24gZm9ybWF0IGNoYW5nZSBzbyBhIGZ1dHVyZSBtaWdyYXRpb24gY2FuIGRldGVjdCBvbGQgYmxvYnMuICovXG4gIGFsZzogJ2Flcy0yNTYtZ2NtLXYxJztcbiAgLyoqIEJhc2U2NC1lbmNvZGVkIDEyLWJ5dGUgSVYuICovXG4gIGl2OiBzdHJpbmc7XG4gIC8qKiBCYXNlNjQtZW5jb2RlZCBjaXBoZXJ0ZXh0ICsgMTYtYnl0ZSBhdXRoZW50aWNhdGlvbiB0YWcgY29uY2F0ZW5hdGVkLiAqL1xuICBjaXBoZXJ0ZXh0OiBzdHJpbmc7XG4gIC8qKiBPcHRpb25hbCBrZXkgaWQgIHBvcHVsYXRlZCBieSBLTVMtYmFja2VkIHByb3ZpZGVycywgaWdub3JlZCBieSB0aGUgZW52IHByb3ZpZGVyLiAqL1xuICBraWQ/OiBzdHJpbmc7XG59XG5cbi8qKiBQbHVnZ2FibGUga2V5IHNvdXJjZS4gRW52LWJhY2tlZCBieSBkZWZhdWx0OyBLTVMtYmFja2VkIGF2YWlsYWJsZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgS2V5UHJvdmlkZXIge1xuICAvKiogRGVyaXZlIGEgMzItYnl0ZSBzeW1tZXRyaWMga2V5IGJvdW5kIHRvIGBvcmdJZGAuICovXG4gIGRlcml2ZUtleShvcmdJZDogc3RyaW5nKTogQnVmZmVyO1xuICAvKiogT3B0aW9uYWwgYXN5bmMgdmFyaWFudCBmb3IgcHJvdmlkZXJzIHRoYXQgbmVlZCB0byBkbyBJL08gKGUuZy5cbiAgICogIHBlci1vcmcgS01TIGxvb2t1cCB0aGUgZmlyc3QgdGltZSBhbiBvcmcgaXMgc2VlbikuIERlZmF1bHRcbiAgICogIGltcGxlbWVudGF0aW9uIGZvcndhcmRzIHRvIHRoZSBzeW5jIGBkZXJpdmVLZXlgLiAqL1xuICBkZXJpdmVLZXlBc3luYz8ob3JnSWQ6IHN0cmluZyk6IFByb21pc2U8QnVmZmVyPjtcbiAgLyoqIE9wdGlvbmFsIEtNUy1rZXktaWQgdGhpcyBwcm92aWRlciB1c2VkIGZvciBgb3JnSWRgLiBFbWJlZGRlZCBpbiB0aGVcbiAgICogIGBFbmNyeXB0ZWRCbG9iLmtpZGAgZmllbGQgb24gd3JpdGUgc28gZGVjcnlwdCBjYW4gdmVyaWZ5IHRoZSByaWdodFxuICAgKiAgS01TIENNSyBpcyBiZWluZyB1c2VkIChkZWZlbnNlIGFnYWluc3QgYW4gYXR0YWNrZXIgd2hvIHN3YXBzIGEgYmxvYlxuICAgKiAgYmV0d2VlbiBvcmdzKS4gRGVmYXVsdCByZXR1cm5zIHVuZGVmaW5lZCAoZW52IHByb3ZpZGVyKS4gKi9cbiAga2lkRm9yPyhvcmdJZDogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIERlZmF1bHQgcHJvdmlkZXIgIGRlcml2ZXMgYSBwZXItb3JnIGtleSBmcm9tIGBTRUNSRVRfRU5DUllQVElPTl9LRVlgIHZpYVxuICogSEtERi1TSEEyNTYuIFN1aXRhYmxlIGZvciBzZWxmLWhvc3RlZCAvIGRldiB3aGVyZSBvcGVyYXRvcnMgZG9uJ3QgaGF2ZSBLTVMuXG4gKlxuICogRmFpbHMgZmFzdCBpZiB0aGUgZW52IGlzIG1pc3Npbmcgb3IgdGhlIGtleSBpcyB0aGUgd3JvbmcgbGVuZ3RoIHNvIG1pc2NvbmZpZ1xuICogc3VyZmFjZXMgYXQgZmlyc3QgdXNlIHJhdGhlciB0aGFuIHNpbGVudGx5IGZpbmdlcnByaW50aW5nIGFsbCB3cml0ZXMgd2l0aFxuICogYSBkZWZhdWx0IHplcm8ga2V5LlxuICovXG5leHBvcnQgY2xhc3MgRW52S2V5UHJvdmlkZXIgaW1wbGVtZW50cyBLZXlQcm92aWRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWFzdGVyS2V5OiBCdWZmZXI7XG5cbiAgY29uc3RydWN0b3IobWFzdGVyS2V5T3ZlcnJpZGU/OiBzdHJpbmcpIHtcbiAgICBjb25zdCByYXcgPSBtYXN0ZXJLZXlPdmVycmlkZSA/PyBwcm9jZXNzLmVudi5TRUNSRVRfRU5DUllQVElPTl9LRVk7XG4gICAgaWYgKCFyYXcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU0VDUkVUX0VOQ1JZUFRJT05fS0VZIGVudiBpcyByZXF1aXJlZCBmb3Igc2VjcmV0IGVuY3J5cHRpb24nKTtcbiAgICB9XG4gICAgLy8gQWNjZXB0IGVpdGhlciBoZXggKDY0IGNoYXJzKSBvciBiYXNlNjQgKDQ0IGNoYXJzIGluY2x1ZGluZyBwYWRkaW5nKSBmb3JcbiAgICAvLyBvcGVyYXRvciBjb252ZW5pZW5jZSAgYm90aCBkZWNvZGUgdG8gYSAzMi1ieXRlIGtleS5cbiAgICBjb25zdCBkZWNvZGVkID0gcmF3Lmxlbmd0aCA9PT0gNjQgJiYgL15bMC05YS1mXSskL2kudGVzdChyYXcpXG4gICAgICA/IEJ1ZmZlci5mcm9tKHJhdywgJ2hleCcpXG4gICAgICA6IEJ1ZmZlci5mcm9tKHJhdywgJ2Jhc2U2NCcpO1xuICAgIGlmIChkZWNvZGVkLmxlbmd0aCAhPT0gMzIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU0VDUkVUX0VOQ1JZUFRJT05fS0VZIG11c3QgZGVjb2RlIHRvIDMyIGJ5dGVzIChnb3QgJHtkZWNvZGVkLmxlbmd0aH0pYCk7XG4gICAgfVxuICAgIHRoaXMubWFzdGVyS2V5ID0gZGVjb2RlZDtcbiAgfVxuXG4gIGRlcml2ZUtleShvcmdJZDogc3RyaW5nKTogQnVmZmVyIHtcbiAgICAvLyBIS0RGIGJpbmRzIHRoZSBtYXN0ZXIga2V5IHRvIHRoZSBvcmcgc28gdHdvIG9yZ3MgZW5jcnlwdGluZyB0aGUgc2FtZVxuICAgIC8vIHBsYWludGV4dCBwcm9kdWNlIGRpZmZlcmVudCBjaXBoZXJ0ZXh0cyAga2VlcHMgYSBzdG9sZW4gREIgdW5hYmxlIHRvXG4gICAgLy8gdGVsbCB3aGljaCBvcmdzIHNoYXJlIHNlY3JldHMgdmlhIGNpcGhlcnRleHQgY29tcGFyaXNvbi5cbiAgICBjb25zdCBkZXJpdmVkID0gaGtkZlN5bmMoICdzaGEyNTYnLFxuICAgICAgdGhpcy5tYXN0ZXJLZXksXG4gICAgICBCdWZmZXIuZnJvbShvcmdJZCwgJ3V0ZjgnKSxcbiAgICAgICdzZWNyZXRzLXYxJyxcbiAgICAgIDMyLFxuICAgICk7XG4gICAgLy8gaGtkZlN5bmMgcmV0dXJucyBBcnJheUJ1ZmZlciBpbiBvbGRlciBOb2RlIHR5cGluZ3M7IG5vcm1hbGl6ZSB0byBCdWZmZXIuXG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGRlcml2ZWQpO1xuICB9XG59XG5cbi8qKlxuICogIEFXUy1LTVMtYmFja2VkIEtleVByb3ZpZGVyLlxuICpcbiAqIFRyYWRlLW9mZiBwaWNrZWQ6IHN0b3JlIE9ORSBtYXN0ZXIga2V5IGVuY3J5cHRlZCB1bmRlciBhIEtNUyBDTUs7IG9uXG4gKiBmaXJzdCB1c2UsIGNhbGwgYGttczpEZWNyeXB0YCB0byByZWNvdmVyIHRoZSBtYXN0ZXIga2V5IGJ5dGVzOyBIS0RGLVxuICogZGVyaXZlIHBlci1vcmcgZnJvbSBpdCAoc2FtZSBhcyBFbnZLZXlQcm92aWRlcikuIFRoZSBwcm9jZXNzIHRoZW4gaG9sZHNcbiAqIHRoZSBwbGFpbnRleHQgbWFzdGVyIGtleSBpbiBtZW1vcnkgdW50aWwgcmVzdGFydC5cbiAqXG4gKiBQUk9TOiBvbmUgS01TIGNhbGwgcGVyIHByb2Nlc3MgbGlmZXRpbWUgKGNoZWFwLCBsb3cgcDk5IGltcGFjdCksXG4gKiB0aGUgZW5jcnlwdGVkLW1hc3Rlci1rZXkgYmxvYiBpcyBzYWZlIHRvIGNvbW1pdC9sb2cvY2hlY2tpbixcbiAqIEtNUyBhdWRpdCBsb2cgcmVjb3JkcyB3aGVuIHRoZSBtYXN0ZXIgaXMgcmVjb3ZlcmVkLlxuICogQ09OUzogcHJvY2VzcyBtZW1vcnkgc3RpbGwgaG9sZHMgdGhlIG1hc3RlciBrZXkgIHNhbWUgcG9zdHVyZSBhc1xuICogRW52S2V5UHJvdmlkZXIgb25jZSB3YXJtZWQgdXAuIEZvciBzdHJvbmdlciBpc29sYXRpb24gYW5cbiAqIG9wZXJhdG9yIGNhbiBtb3ZlIHRvIHBlci1yZWNvcmQgZW52ZWxvcGUgZW5jcnlwdGlvbiAoY2FsbFxuICogR2VuZXJhdGVEYXRhS2V5IG9uIGV2ZXJ5IHdyaXRlKTsgdGhhdCdzIGEgZm9sbG93LW9uLlxuICpcbiAqIE9wZXJhdG9yIHNldHVwICogMS4gQ3JlYXRlIGEgS01TIENNSyB3aXRoIGtleSBwb2xpY3kgYWxsb3dpbmcgdGhlIHBsYXRmb3JtIHNlcnZpY2Unc1xuICogSUFNIHJvbGUga21zOkRlY3J5cHQuXG4gKiAyLiBHZW5lcmF0ZSBhIHJhbmRvbSAzMi1ieXRlIG1hc3RlciAqIGhlYWQgLWMgMzIgL2Rldi91cmFuZG9tIHwgYmFzZTY0XG4gKiAzLiBXcmFwIGl0IHdpdGggS01TICogYXdzIGttcyBlbmNyeXB0IC0ta2V5LWlkIDxLRVlfSUQ+IFxcXG4gKiAtLXBsYWludGV4dCA8YmFzZTY0LWZyb20tc3RlcC0yPiAtLW91dHB1dCB0ZXh0IFxcXG4gKiAtLXF1ZXJ5IENpcGhlcnRleHRCbG9iXG4gKiA0LiBTZXQgb24gdGhlIHNlcnZpY2UgKiBTRUNSRVRfRU5DUllQVElPTl9LTVNfS0VZX0lEPTxLRVlfSUQ+XG4gKiBTRUNSRVRfRU5DUllQVElPTl9LTVNfQ0lQSEVSVEVYVD08YmFzZTY0LW91dHB1dC1vZi1zdGVwLTM+XG4gKiA1LiBQaWNrIHRoaXMgcHJvdmlkZXIgdmlhIGBzZXRLZXlQcm92aWRlcihuZXcgS21zS2V5UHJvdmlkZXIoKSlgLlxuICpcbiAqIENvbnN0cnVjdCBsYXppbHkgIGltcG9ydGluZyB0aGUgQVdTIFNESyBoYXMgYSBub24tdHJpdmlhbCBjb2xkLXN0YXJ0XG4gKiBjb3N0IHNvIGVudnMgdGhhdCBzdGF5IG9uIEVudktleVByb3ZpZGVyIG5ldmVyIGxvYWQgaXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBLbXNLZXlQcm92aWRlciBpbXBsZW1lbnRzIEtleVByb3ZpZGVyIHtcbiAgcHJpdmF0ZSBtYXN0ZXJLZXlDYWNoZTogQnVmZmVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgcmVhZG9ubHkga2V5SWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBjaXBoZXJ0ZXh0QjY0OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGVuZHBvaW50Pzogc3RyaW5nO1xuICBwcml2YXRlIGRlY3J5cHRJbkZsaWdodDogUHJvbWlzZTxCdWZmZXI+IHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3Iob3B0cz86IHsga2V5SWQ/OiBzdHJpbmc7IGNpcGhlcnRleHRCYXNlNjQ/OiBzdHJpbmc7IHJlZ2lvbj86IHN0cmluZzsgZW5kcG9pbnQ/OiBzdHJpbmcgfSkge1xuICAgIGNvbnN0IGtleUlkID0gb3B0cz8ua2V5SWQgPz8gcHJvY2Vzcy5lbnYuU0VDUkVUX0VOQ1JZUFRJT05fS01TX0tFWV9JRDtcbiAgICBjb25zdCBjaXBoZXJ0ZXh0ID0gb3B0cz8uY2lwaGVydGV4dEJhc2U2NCA/PyBwcm9jZXNzLmVudi5TRUNSRVRfRU5DUllQVElPTl9LTVNfQ0lQSEVSVEVYVDtcbiAgICBpZiAoIWtleUlkKSB0aHJvdyBuZXcgRXJyb3IoJ1NFQ1JFVF9FTkNSWVBUSU9OX0tNU19LRVlfSUQgZW52IGlzIHJlcXVpcmVkIGZvciBLbXNLZXlQcm92aWRlcicpO1xuICAgIGlmICghY2lwaGVydGV4dCkgdGhyb3cgbmV3IEVycm9yKCdTRUNSRVRfRU5DUllQVElPTl9LTVNfQ0lQSEVSVEVYVCBlbnYgaXMgcmVxdWlyZWQgZm9yIEttc0tleVByb3ZpZGVyJyk7XG4gICAgdGhpcy5rZXlJZCA9IGtleUlkO1xuICAgIHRoaXMuY2lwaGVydGV4dEI2NCA9IGNpcGhlcnRleHQ7XG4gICAgdGhpcy5yZWdpb24gPSBvcHRzPy5yZWdpb24gPz8gcHJvY2Vzcy5lbnYuQVdTX1JFR0lPTiA/PyBwcm9jZXNzLmVudi5BV1NfREVGQVVMVF9SRUdJT047XG4gICAgdGhpcy5lbmRwb2ludCA9IG9wdHM/LmVuZHBvaW50ID8/IHByb2Nlc3MuZW52LkFXU19LTVNfRU5EUE9JTlQ7XG4gIH1cblxuICBkZXJpdmVLZXkob3JnSWQ6IHN0cmluZyk6IEJ1ZmZlciB7XG4gICAgaWYgKCF0aGlzLm1hc3RlcktleUNhY2hlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoICdLbXNLZXlQcm92aWRlciBpcyBub3Qgd2FybWVkIHVwLiBDYWxsIGBhd2FpdCBwcm92aWRlci53YXJtdXAoKWAgb25jZSBhdCBzZXJ2aWNlIHN0YXJ0dXAgYmVmb3JlIGFueSBlbmNyeXB0L2RlY3J5cHQuJyxcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IGRlcml2ZWQgPSBoa2RmU3luYygnc2hhMjU2JywgdGhpcy5tYXN0ZXJLZXlDYWNoZSwgQnVmZmVyLmZyb20ob3JnSWQsICd1dGY4JyksICdzZWNyZXRzLXYxJywgMzIpO1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShkZXJpdmVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFYWdlcmx5IHJlY292ZXIgdGhlIG1hc3RlciBrZXkgZnJvbSBLTVMgc28gc3Vic2VxdWVudCBgZGVyaXZlS2V5YFxuICAgKiBjYWxscyBhcmUgc3luYy4gSWRlbXBvdGVudCAgY29uY3VycmVudCBjYWxsZXJzIHNoYXJlIHRoZSBzYW1lIGluLVxuICAgKiBmbGlnaHQgcHJvbWlzZSBzbyB3ZSBkb24ndCBzcGF3biBtdWx0aXBsZSBLTVMgRGVjcnlwdCByZXF1ZXN0cyBhdFxuICAgKiBib290LiBUaHJvd3Mgb24gYW55IEtNUyBmYWlsdXJlOyB0aGUgY2FsbGVyICh0eXBpY2FsbHkgdGhlIHNlcnZpY2Unc1xuICAgKiBvbkJlZm9yZVN0YXJ0IGhvb2spIGRlY2lkZXMgd2hldGhlciB0byBmYWxsIGJhY2sgdG8gYSBkaWZmZXJlbnRcbiAgICogcHJvdmlkZXIgb3IgZmFpbC1zdGFydHVwLlxuICAgKi9cbiAgYXN5bmMgd2FybXVwKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLm1hc3RlcktleUNhY2hlKSByZXR1cm47XG4gICAgaWYgKCF0aGlzLmRlY3J5cHRJbkZsaWdodCkge1xuICAgICAgdGhpcy5kZWNyeXB0SW5GbGlnaHQgPSB0aGlzLmZldGNoQW5kRGVjcnlwdCgpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgdGhpcy5tYXN0ZXJLZXlDYWNoZSA9IGF3YWl0IHRoaXMuZGVjcnlwdEluRmxpZ2h0O1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gQSB0cmFuc2llbnQgS01TIGZhaWx1cmUgbXVzdCBub3QgcGVybWFuZW50bHkgcG9pc29uIHRoZSBwcm92aWRlcjogY2xlYXJcbiAgICAgIC8vIHRoZSByZWplY3RlZCBpbi1mbGlnaHQgcHJvbWlzZSBzbyBhIGxhdGVyIHdhcm11cCgpIHJldHJpZXMgaW5zdGVhZCBvZlxuICAgICAgLy8gcmUtYXdhaXRpbmcgdGhlIHNhbWUgcmVqZWN0aW9uIGZvcmV2ZXIgKG1hdGNoZXMgUGVyT3JnS21zS2V5UHJvdmlkZXIpLlxuICAgICAgdGhpcy5kZWNyeXB0SW5GbGlnaHQgPSBudWxsO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hBbmREZWNyeXB0KCk6IFByb21pc2U8QnVmZmVyPiB7XG4gICAgLy8gRHluYW1pYyBpbXBvcnQgc28gRW52S2V5UHJvdmlkZXItb25seSBlbnZzIGRvbid0IGxvYWQgdGhlIFNESy5cbiAgICBjb25zdCB7IEtNU0NsaWVudCwgRGVjcnlwdENvbW1hbmQgfSA9IGF3YWl0IGltcG9ydCgnQGF3cy1zZGsvY2xpZW50LWttcycpO1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBLTVNDbGllbnQoe1xuICAgICAgcmVnaW9uOiB0aGlzLnJlZ2lvbixcbiAgICAgIC4uLih0aGlzLmVuZHBvaW50ID8geyBlbmRwb2ludDogdGhpcy5lbmRwb2ludCB9OiB7fSksXG4gICAgfSk7XG4gICAgY29uc3QgcmVzcCA9IGF3YWl0IGNsaWVudC5zZW5kKG5ldyBEZWNyeXB0Q29tbWFuZCh7XG4gICAgICBLZXlJZDogdGhpcy5rZXlJZCxcbiAgICAgIENpcGhlcnRleHRCbG9iOiBCdWZmZXIuZnJvbSh0aGlzLmNpcGhlcnRleHRCNjQsICdiYXNlNjQnKSxcbiAgICB9KSk7XG4gICAgaWYgKCFyZXNwLlBsYWludGV4dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdLTVMgRGVjcnlwdCByZXR1cm5lZCBhbiBlbXB0eSBQbGFpbnRleHQnKTtcbiAgICB9XG4gICAgY29uc3QgYnVmID0gQnVmZmVyLmZyb20ocmVzcC5QbGFpbnRleHQpO1xuICAgIGlmIChidWYubGVuZ3RoICE9PSAzMikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBLTVMgRGVjcnlwdCByZXR1cm5lZCAke2J1Zi5sZW5ndGh9LWJ5dGUga2V5OyBleHBlY3RlZCAzMmApO1xuICAgIH1cbiAgICByZXR1cm4gYnVmO1xuICB9XG59XG5cbi8vIExhenkgc2luZ2xldG9uICBvcGVyYXRvciBjb2RlIGluIGxvbmctbGl2ZWQgc2VydmljZXMgcGF5cyB0aGUgZW52LXBhcnNlXG4vLyBjb3N0IG9uY2UsIGFuZCB0ZXN0cyBjYW4gbWludCB0aGVpciBvd24gcHJvdmlkZXIgd2l0aCBhIGxpdGVyYWwga2V5LlxubGV0IGRlZmF1bHRQcm92aWRlcjogS2V5UHJvdmlkZXIgfCBudWxsID0gbnVsbDtcbmZ1bmN0aW9uIGdldERlZmF1bHRQcm92aWRlcigpOiBLZXlQcm92aWRlciB7XG4gIGlmICghZGVmYXVsdFByb3ZpZGVyKSBkZWZhdWx0UHJvdmlkZXIgPSBuZXcgRW52S2V5UHJvdmlkZXIoKTtcbiAgcmV0dXJuIGRlZmF1bHRQcm92aWRlcjtcbn1cblxuLyoqIFJlYWQgdGhlIGFjdGl2ZSBkZWZhdWx0IHByb3ZpZGVyLiBFeHBvc2VkIHNvIHNlcnZpY2UgY29kZSAoZS5nLiBhblxuICogIGFkbWluIGVuZHBvaW50IHRoYXQganVzdCByb3RhdGVkIGFuIG9yZydzIEtNUyBjb25maWcpIGNhbiBjYWxsXG4gKiAgYHByb3ZpZGVyLmV2aWN0KG9yZ0lkKWAgb24gdGhlIGxpdmUgcHJvdmlkZXIgcmF0aGVyIHRoYW4gcmVjb25zdHJ1Y3RpbmdcbiAqICBvbmUuIFRyaWdnZXJzIGxhenkgaW5pdGlhbGl6YXRpb24gb24gZmlyc3QgYWNjZXNzLCBzYW1lIGFzIHRoZSBpbnRlcm5hbFxuICogIGNhbGxlcnMgYmVsb3cuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdEtleVByb3ZpZGVyKCk6IEtleVByb3ZpZGVyIHtcbiAgcmV0dXJuIGdldERlZmF1bHRQcm92aWRlcigpO1xufVxuXG4vKiogUmVzZXQgdGhlIGNhY2hlZCBkZWZhdWx0IHByb3ZpZGVyICBmb3IgdGVzdHMgdGhhdCBtdXRhdGUgYHByb2Nlc3MuZW52YC4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNldERlZmF1bHRLZXlQcm92aWRlcigpOiB2b2lkIHsgZGVmYXVsdFByb3ZpZGVyID0gbnVsbDsgfVxuXG4vKiogUmVwbGFjZSB0aGUgZGVmYXVsdCBwcm92aWRlciAgc2VydmljZXMgdGhhdCBvcHQgaW50byBLTVMgY2FsbCB0aGlzXG4gKiBvbmNlIGF0IHN0YXJ0dXAgd2l0aCBhIHdhcm1lZC11cCBgS21zS2V5UHJvdmlkZXJgLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldEtleVByb3ZpZGVyKHByb3ZpZGVyOiBLZXlQcm92aWRlcik6IHZvaWQgeyBkZWZhdWx0UHJvdmlkZXIgPSBwcm92aWRlcjsgfVxuXG4vKiogUGVyLW9yZyBLTVMgY29uZmlnIHRoZSBvcGVyYXRvciBzdXBwbGllcy4gVGhlIGBrZXlJZGAgaWRlbnRpZmllcyB0aGVcbiAqICBLTVMgQ01LIHRvIGNhbGwgRGVjcnlwdCBvbjsgYGNpcGhlcnRleHRCYXNlNjRgIGlzIHRoZSB3cmFwcGVkIDMyLWJ5dGVcbiAqICBtYXN0ZXIgZ2VuZXJhdGVkIGJ5IGBhd3Mga21zIGVuY3J5cHRgIGFnYWluc3QgdGhhdCBrZXkuICovXG5leHBvcnQgaW50ZXJmYWNlIFBlck9yZ0ttc0NvbmZpZyB7XG4gIGtleUlkOiBzdHJpbmc7XG4gIGNpcGhlcnRleHRCYXNlNjQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBc3luYyByZXNvbHZlciB0aGF0IG1hcHMgYW4gb3JnIGlkIHRvIGl0cyBLTVMgY29uZmlnLiBSZXR1cm5zIGBudWxsYCB3aGVuXG4gKiB0aGUgb3JnIGhhcyBubyBwZXItb3JnIGNvbmZpZyDigJQgdGhlIHByb3ZpZGVyIHRoZW4gZmFsbHMgYmFjayB0byB0aGVcbiAqIGBmYWxsYmFja2AgcHJvdmlkZXIgc3VwcGxpZWQgYXQgY29uc3RydWN0aW9uICh1c3VhbGx5IGFuIEVudktleVByb3ZpZGVyXG4gKiBvciBhIGRlZmF1bHQgS21zS2V5UHJvdmlkZXIpLlxuICovXG5leHBvcnQgdHlwZSBQZXJPcmdLbXNSZXNvbHZlciA9IChvcmdJZDogc3RyaW5nKSA9PiBQcm9taXNlPFBlck9yZ0ttc0NvbmZpZyB8IG51bGw+O1xuXG4vKipcbiAqIFBlci1vcmcgS01TLWJhY2tlZCBLZXlQcm92aWRlci4gVGhlIGJsYXN0IHJhZGl1cyBvZiBhIEtNUyBrZXkgY29tcHJvbWlzZVxuICogaXMgb25lIG9yZyBpbnN0ZWFkIG9mIGV2ZXJ5IG9yZyB1bmRlciBhIHNoYXJlZCBtYXN0ZXIuXG4gKlxuICogRWFjaCBvcmcgaGFzIGl0cyBvd24gS01TIENNSyArIGl0cyBvd24gd3JhcHBlZCBtYXN0ZXIgKHN0b3JlZCBpbiBNb25nb1xuICogdmlhIHRoZSBvcGVyYXRvcidzIHNldHVwIHNjcmlwdCkuIE9uIGZpcnN0IGVuY3J5cHQvZGVjcnlwdCBmb3IgYW4gb3JnLFxuICogdGhlIHByb3ZpZGVyOlxuICogICAxLiBDYWxscyB0aGUgcmVzb2x2ZXIgdG8gZmV0Y2ggdGhlIG9yZydzIEtNUyBjb25maWcuXG4gKiAgIDIuIENhbGxzIGBrbXM6RGVjcnlwdGAgdG8gcmVjb3ZlciB0aGUgMzItYnl0ZSBtYXN0ZXIuXG4gKiAgIDMuIENhY2hlcyB0aGUgcmVjb3ZlcmVkIG1hc3RlciBpbi1tZW1vcnkgZm9yIHRoZSBwcm9jZXNzIGxpZmV0aW1lLlxuICogICA0LiBIS0RGLWRlcml2ZXMgcGVyLWNhbGwgZnJvbSB0aGF0IG1hc3RlciArIHRoZSBvcmcgaWQgc2FsdC5cbiAqXG4gKiBCbG9icyBlbmNyeXB0ZWQgYnkgdGhpcyBwcm92aWRlciBjYXJyeSBga2lkID0gPGttcy1rZXktaWQ+YCBzbyB0aGVcbiAqIGRlY3J5cHQgcGF0aCBkZXRlY3RzIGEgc3RhbGUgY29uZmlnIChvcGVyYXRvciByb3RhdGVkIHRoZSBrZXkgYnV0XG4gKiBleGlzdGluZyByb3dzIHdlcmVuJ3QgcmUtZW5jcnlwdGVkKSBCRUZPUkUgQUVTLUdDTSB0aHJvd3MgYW4gb3BhcXVlXG4gKiBhdXRoZW50aWNhdGlvbi10YWcgZXJyb3IuXG4gKlxuICogT3JncyB3aXRob3V0IHBlci1vcmcgY29uZmlnIGZhbGwgdGhyb3VnaCB0byB0aGUgYGZhbGxiYWNrYCBwcm92aWRlciDigJRcbiAqIG1peGVkLW1vZGUgZGVwbG95bWVudHMgd2hlcmUgc29tZSBvcmdzIGhhdmUgS01TIGlzb2xhdGlvbiBhbmQgb3RoZXJzXG4gKiBzdGF5IG9uIHRoZSBzaGFyZWQgbWFzdGVyIGFyZSBleHBsaWNpdGx5IHN1cHBvcnRlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFBlck9yZ0ttc0tleVByb3ZpZGVyIGltcGxlbWVudHMgS2V5UHJvdmlkZXIge1xuICAvKiogQ2FjaGVkIHBlci1vcmcgbWFzdGVyIGtleXMsIGtleWVkIGJ5IG9yZ0lkLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IG1hc3RlcnMgPSBuZXcgTWFwPHN0cmluZywgeyBrZXk6IEJ1ZmZlcjsga2lkOiBzdHJpbmcgfT4oKTtcbiAgLyoqIFJlc29sdmVkIHBlci1vcmcgY29uZmlncyBjYWNoZWQgZm9yIHRoZSBwcm9jZXNzIGxpZmV0aW1lLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ3MgPSBuZXcgTWFwPHN0cmluZywgUGVyT3JnS21zQ29uZmlnPigpO1xuICAvKiogSW4tZmxpZ2h0IHJlc29sdmVyIHByb21pc2VzIHNvIGNvbmN1cnJlbnQgZmlyc3QtdG91Y2ggY2FsbGVycyBzaGFyZSBvbmUgS01TIERlY3J5cHQuXG4gICAqICBSZXNvbHZlcyB0byBgbnVsbGAgZm9yIG9yZ3Mgd2l0aCBubyBwZXItb3JnIGNvbmZpZyDigJQgY2FsbGVyIHRyZWF0cyBudWxsIGFzXG4gICAqICBcImZhbGwgdGhyb3VnaCB0byB0aGUgZmFsbGJhY2sgcHJvdmlkZXJcIiwgc2FtZSBhcyBhIGNvbGQgY2FjaGUgbWlzcy4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBpbkZsaWdodCA9IG5ldyBNYXA8c3RyaW5nLCBQcm9taXNlPHsga2V5OiBCdWZmZXI7IGtpZDogc3RyaW5nIH0gfCBudWxsPj4oKTtcbiAgLyoqIFByb3ZpZGVyIHVzZWQgZm9yIG9yZ3MgdGhhdCBoYXZlIG5vIHBlci1vcmcgY29uZmlnLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGZhbGxiYWNrOiBLZXlQcm92aWRlcjtcbiAgcHJpdmF0ZSByZWFkb25seSByZXNvbHZlcjogUGVyT3JnS21zUmVzb2x2ZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGVuZHBvaW50Pzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG9wdHM6IHtcbiAgICByZXNvbHZlcjogUGVyT3JnS21zUmVzb2x2ZXI7XG4gICAgZmFsbGJhY2s6IEtleVByb3ZpZGVyO1xuICAgIHJlZ2lvbj86IHN0cmluZztcbiAgICBlbmRwb2ludD86IHN0cmluZztcbiAgfSkge1xuICAgIHRoaXMucmVzb2x2ZXIgPSBvcHRzLnJlc29sdmVyO1xuICAgIHRoaXMuZmFsbGJhY2sgPSBvcHRzLmZhbGxiYWNrO1xuICAgIHRoaXMucmVnaW9uID0gb3B0cy5yZWdpb24gPz8gcHJvY2Vzcy5lbnYuQVdTX1JFR0lPTiA/PyBwcm9jZXNzLmVudi5BV1NfREVGQVVMVF9SRUdJT047XG4gICAgdGhpcy5lbmRwb2ludCA9IG9wdHMuZW5kcG9pbnQgPz8gcHJvY2Vzcy5lbnYuQVdTX0tNU19FTkRQT0lOVDtcbiAgfVxuXG4gIC8qKiBTeW5jIGBkZXJpdmVLZXlgIG9ubHkgd29ya3MgZm9yIGFscmVhZHktd2FybWVkIG9yZ3MuIENvbGQgb3JncyBmYWxsXG4gICAqICB0aHJvdWdoIHRvIHRoZSBmYWxsYmFjayBwcm92aWRlci4gQ2FsbGVycyB0aGF0IHdhbnQgcGVyLW9yZyBpc29sYXRpb25cbiAgICogIE1VU1QgYGF3YWl0IGRlcml2ZUtleUFzeW5jKG9yZ0lkKWAgb25jZSBmaXJzdCAoZS5nLiBkdXJpbmcgcmVxdWVzdCBzZXR1cFxuICAgKiAgb3IgYXMgcGFydCBvZiBhIHdhcm11cCBwYXNzKSDigJQgb3RoZXJ3aXNlIHRoZSBvcmcgc2lsZW50bHkgdXNlcyB0aGVcbiAgICogIHNoYXJlZCBtYXN0ZXIuICovXG4gIGRlcml2ZUtleShvcmdJZDogc3RyaW5nKTogQnVmZmVyIHtcbiAgICBjb25zdCBjYWNoZWQgPSB0aGlzLm1hc3RlcnMuZ2V0KG9yZ0lkKTtcbiAgICBpZiAoIWNhY2hlZCkgcmV0dXJuIHRoaXMuZmFsbGJhY2suZGVyaXZlS2V5KG9yZ0lkKTtcbiAgICBjb25zdCBkZXJpdmVkID0gaGtkZlN5bmMoJ3NoYTI1NicsIGNhY2hlZC5rZXksIEJ1ZmZlci5mcm9tKG9yZ0lkLCAndXRmOCcpLCAnc2VjcmV0cy12MScsIDMyKTtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oZGVyaXZlZCk7XG4gIH1cblxuICBhc3luYyBkZXJpdmVLZXlBc3luYyhvcmdJZDogc3RyaW5nKTogUHJvbWlzZTxCdWZmZXI+IHtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVdhcm1lZChvcmdJZCk7XG4gICAgcmV0dXJuIHRoaXMuZGVyaXZlS2V5KG9yZ0lkKTtcbiAgfVxuXG4gIGtpZEZvcihvcmdJZDogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5tYXN0ZXJzLmdldChvcmdJZCk/LmtpZCA/PyB0aGlzLmZhbGxiYWNrLmtpZEZvcj8uKG9yZ0lkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlIHRoZSBvcmcncyBLTVMgY29uZmlnLCBjYWxsIERlY3J5cHQsIGNhY2hlIHRoZSBtYXN0ZXIuIFN1YnNlcXVlbnRcbiAgICogY2FsbHMgZm9yIHRoZSBzYW1lIG9yZyBhcmUgbm8tb3BzLiBDb25jdXJyZW50IGNhbGxlcnMgc2hhcmUgdGhlIGluLWZsaWdodFxuICAgKiBEZWNyeXB0IHByb21pc2UuXG4gICAqXG4gICAqIFJldHVybnMgc2lsZW50bHkgd2hlbiB0aGUgb3JnIGhhcyBubyBwZXItb3JnIGNvbmZpZyDigJQgdGhlIGZhbGxiYWNrXG4gICAqIHByb3ZpZGVyIGhhbmRsZXMgdGhvc2Ugb3Jncy5cbiAgICovXG4gIGFzeW5jIGVuc3VyZVdhcm1lZChvcmdJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMubWFzdGVycy5oYXMob3JnSWQpKSByZXR1cm47XG4gICAgLy8gSW5zdGFsbCB0aGUgaW4tZmxpZ2h0IHByb21pc2UgU1lOQ0hST05PVVNMWSBiZWZvcmUgeWllbGRpbmcgc28gY29uY3VycmVudFxuICAgIC8vIGNhbGxlcnMgZmluZCBpdCBvbiB0aGUgc2Vjb25kLWFuZC1sYXRlciBwYXNzZXMuIEF3YWl0aW5nIHRoZSByZXNvbHZlclxuICAgIC8vIGJlZm9yZSBwb3B1bGF0aW5nIHRoZSBtYXAgaXMgdGhlIGJ1ZyB0aGF0IGxldHMgYSBQcm9taXNlLmFsbCBvZiAzXG4gICAgLy8gY2FsbGVycyBmaXJlIDMgS01TIERlY3J5cHRzLlxuICAgIGxldCBwcm9taXNlID0gdGhpcy5pbkZsaWdodC5nZXQob3JnSWQpO1xuICAgIGlmICghcHJvbWlzZSkge1xuICAgICAgcHJvbWlzZSA9IHRoaXMucmVzb2x2ZUFuZERlY3J5cHQob3JnSWQpO1xuICAgICAgdGhpcy5pbkZsaWdodC5zZXQob3JnSWQsIHByb21pc2UpO1xuICAgICAgdm9pZCBwcm9taXNlLmZpbmFsbHkoKCkgPT4geyBpZiAodGhpcy5pbkZsaWdodC5nZXQob3JnSWQpID09PSBwcm9taXNlKSB0aGlzLmluRmxpZ2h0LmRlbGV0ZShvcmdJZCk7IH0pO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwcm9taXNlO1xuICAgIGlmIChyZXN1bHQpIHRoaXMubWFzdGVycy5zZXQob3JnSWQsIHJlc3VsdCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlc29sdmVBbmREZWNyeXB0KG9yZ0lkOiBzdHJpbmcpOiBQcm9taXNlPHsga2V5OiBCdWZmZXI7IGtpZDogc3RyaW5nIH0gfCBudWxsPiB7XG4gICAgbGV0IGNmZyA9IHRoaXMuY29uZmlncy5nZXQob3JnSWQpO1xuICAgIGlmICghY2ZnKSB7XG4gICAgICBjb25zdCByZXNvbHZlZCA9IGF3YWl0IHRoaXMucmVzb2x2ZXIob3JnSWQpO1xuICAgICAgaWYgKCFyZXNvbHZlZCkgcmV0dXJuIG51bGw7IC8vIG5vIHBlci1vcmcgY29uZmlnIOKGkiBjYWxsZXIgdXNlcyBmYWxsYmFja1xuICAgICAgY2ZnID0gcmVzb2x2ZWQ7XG4gICAgICB0aGlzLmNvbmZpZ3Muc2V0KG9yZ0lkLCBjZmcpO1xuICAgIH1cbiAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLmZldGNoQW5kRGVjcnlwdChjZmcpO1xuICAgIHJldHVybiB7IGtleSwga2lkOiBjZmcua2V5SWQgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hBbmREZWNyeXB0KGNmZzogUGVyT3JnS21zQ29uZmlnKTogUHJvbWlzZTxCdWZmZXI+IHtcbiAgICBjb25zdCB7IEtNU0NsaWVudCwgRGVjcnlwdENvbW1hbmQgfSA9IGF3YWl0IGltcG9ydCgnQGF3cy1zZGsvY2xpZW50LWttcycpO1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBLTVNDbGllbnQoe1xuICAgICAgcmVnaW9uOiB0aGlzLnJlZ2lvbixcbiAgICAgIC4uLih0aGlzLmVuZHBvaW50ID8geyBlbmRwb2ludDogdGhpcy5lbmRwb2ludCB9IDoge30pLFxuICAgIH0pO1xuICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBjbGllbnQuc2VuZChuZXcgRGVjcnlwdENvbW1hbmQoe1xuICAgICAgS2V5SWQ6IGNmZy5rZXlJZCxcbiAgICAgIENpcGhlcnRleHRCbG9iOiBCdWZmZXIuZnJvbShjZmcuY2lwaGVydGV4dEJhc2U2NCwgJ2Jhc2U2NCcpLFxuICAgIH0pKTtcbiAgICBpZiAoIXJlc3AuUGxhaW50ZXh0KSB0aHJvdyBuZXcgRXJyb3IoYEtNUyBEZWNyeXB0IHJldHVybmVkIGVtcHR5IFBsYWludGV4dCBmb3Iga2V5ICR7Y2ZnLmtleUlkfWApO1xuICAgIGNvbnN0IGJ1ZiA9IEJ1ZmZlci5mcm9tKHJlc3AuUGxhaW50ZXh0KTtcbiAgICBpZiAoYnVmLmxlbmd0aCAhPT0gMzIpIHRocm93IG5ldyBFcnJvcihgS01TIERlY3J5cHQgcmV0dXJuZWQgJHtidWYubGVuZ3RofS1ieXRlIGtleSBmb3IgJHtjZmcua2V5SWR9OyBleHBlY3RlZCAzMmApO1xuICAgIHJldHVybiBidWY7XG4gIH1cblxuICAvKiogRXZpY3QgYSBjYWNoZWQgcGVyLW9yZyBtYXN0ZXIuIFVzZSBhZnRlciBhIGtleSByb3RhdGlvbiBzbyB0aGUgbmV4dFxuICAgKiAgdG91Y2ggcmUtZmV0Y2hlcyB0aGUgbmV3IHdyYXBwZWQgbWFzdGVyIGZyb20gdGhlIHJlc29sdmVyLiAqL1xuICBldmljdChvcmdJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5tYXN0ZXJzLmRlbGV0ZShvcmdJZCk7XG4gICAgdGhpcy5jb25maWdzLmRlbGV0ZShvcmdJZCk7XG4gIH1cbn1cblxuLyoqXG4gKiBFbmNyeXB0IGEgcGxhaW50ZXh0IHN0cmluZyBmb3Igc3RvcmFnZS4gUmV0dXJucyBhbiBgRW5jcnlwdGVkQmxvYmAgdGhhdFxuICogY2FuIGJlIEpTT04tc2VyaWFsaXplZCBpbnRvIHRoZSB1bmRlcmx5aW5nIGNvbHVtbiAvIE1vbmdvIGRvY3VtZW50LlxuICpcbiAqIEVtcHR5IHN0cmluZ3Mgcm91bmQtdHJpcCBhcyBgbnVsbGAgc28gdGhlIGNhbGxpbmcgbW9kZWwgbGF5ZXIgY2FuIHRyZWF0XG4gKiBcIm5vIHNlY3JldCBzZXRcIiBpZGVudGljYWxseSB0byBcImZpZWxkIGFic2VudFwiLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5jcnlwdFNlY3JldCggcGxhaW50ZXh0OiBzdHJpbmcsXG4gIG9yZ0lkOiBzdHJpbmcsXG4gIHByb3ZpZGVyOiBLZXlQcm92aWRlciA9IGdldERlZmF1bHRQcm92aWRlcigpLFxuKTogRW5jcnlwdGVkQmxvYiB7XG4gIGlmICghcGxhaW50ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdSZWZ1c2luZyB0byBlbmNyeXB0IGVtcHR5IHN0cmluZzsgY2FsbGVyIHNob3VsZCBzdG9yZSBudWxsIGluc3RlYWQnKTtcbiAgfVxuICBjb25zdCBrZXkgPSBwcm92aWRlci5kZXJpdmVLZXkob3JnSWQpO1xuICBjb25zdCBpdiA9IHJhbmRvbUJ5dGVzKDEyKTtcbiAgY29uc3QgY2lwaGVyID0gY3JlYXRlQ2lwaGVyaXYoJ2Flcy0yNTYtZ2NtJywga2V5LCBpdik7XG4gIGNvbnN0IGVuYyA9IEJ1ZmZlci5jb25jYXQoW2NpcGhlci51cGRhdGUocGxhaW50ZXh0LCAndXRmOCcpLCBjaXBoZXIuZmluYWwoKV0pO1xuICBjb25zdCB0YWcgPSBjaXBoZXIuZ2V0QXV0aFRhZygpO1xuICAvLyBQZXJPcmdLbXNLZXlQcm92aWRlciB0YWdzIGJsb2JzIHdpdGggdGhlIEtNUyBrZXkgaWQgdXNlZCBzbyB0aGVcbiAgLy8gZGVjcnlwdCBwYXRoIGNhbiByZWZ1c2UgdG8gb3BlcmF0ZSBpZiB0aGUgb3BlcmF0b3IgbGF0ZXIgc3dhcHMgaW4gYVxuICAvLyBkaWZmZXJlbnQgcGVyLW9yZyBjb25maWcgKGEgbWlzY29uZmlndXJlZCBzd2FwIHNob3VsZG4ndCBzaWxlbnRseVxuICAvLyBhY2NlcHQgYSBzdGFsZSBibG9iIGl0IGNhbid0IHZlcmlmeSBhZ2FpbnN0IHRoZSByaWdodCBDTUspLlxuICBjb25zdCBraWQgPSBwcm92aWRlci5raWRGb3I/LihvcmdJZCk7XG4gIHJldHVybiB7XG4gICAgYWxnOiAnYWVzLTI1Ni1nY20tdjEnLFxuICAgIGl2OiBpdi50b1N0cmluZygnYmFzZTY0JyksXG4gICAgLy8gR0NNIHRhZyBNVVNUIHRyYXZlbCB3aXRoIHRoZSBjaXBoZXJ0ZXh0IG9yIGBkZWNyeXB0U2VjcmV0YCBjYW4ndFxuICAgIC8vIHZlcmlmeSBpbnRlZ3JpdHkgIGNvbmNhdGVuYXRlIHNvIHRoZSBvbi1kaXNrIHNoYXBlIGlzIG9uZSBmaWVsZC5cbiAgICBjaXBoZXJ0ZXh0OiBCdWZmZXIuY29uY2F0KFtlbmMsIHRhZ10pLnRvU3RyaW5nKCdiYXNlNjQnKSxcbiAgICAuLi4oa2lkICE9PSB1bmRlZmluZWQgPyB7IGtpZCB9IDoge30pLFxuICB9O1xufVxuXG4vKipcbiAqIERlY3J5cHQgYW4gYEVuY3J5cHRlZEJsb2JgIHdyaXR0ZW4gYnkgYGVuY3J5cHRTZWNyZXRgLiBUaHJvd3Mgb24gKiAtIHVua25vd24gYGFsZ2AgKGZvcmNlcyBhbiBleHBsaWNpdCBtaWdyYXRpb24gd2hlbiB0aGUgZm9ybWF0IGNoYW5nZXMpXG4gKiAtIHdyb25nIG9yZ0lkIChIS0RGIGJpbmRpbmcgbWlzbWF0Y2ggZmFpbHMgdGhlIGF1dGggdGFnKVxuICogLSB0YW1wZXJlZCBjaXBoZXJ0ZXh0IChHQ00gYXV0aCB0YWcgY2hlY2sgZmFpbHMpXG4gKlxuICogQ2FsbGVycyBoYW5kbGUgdGhlIHRocm93ICBtYXNraW5nIHRoZSBmYWlsdXJlIGFzIGBudWxsYCB3b3VsZCBoaWRlXG4gKiBzaWxlbnQgY29ycnVwdGlvbiAvIHdyb25nLW9yZyByZWFkcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY3J5cHRTZWNyZXQoIGJsb2I6IEVuY3J5cHRlZEJsb2IsXG4gIG9yZ0lkOiBzdHJpbmcsXG4gIHByb3ZpZGVyOiBLZXlQcm92aWRlciA9IGdldERlZmF1bHRQcm92aWRlcigpLFxuKTogc3RyaW5nIHtcbiAgaWYgKGJsb2IuYWxnICE9PSAnYWVzLTI1Ni1nY20tdjEnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBlbmNyeXB0aW9uIGFsZzogJHtibG9iLmFsZ31gKTtcbiAgfVxuICAvLyBJZiBib3RoIHRoZSBwcm92aWRlciBBTkQgdGhlIGJsb2IgcmVwb3J0IGEga2lkLCB0aGV5IG11c3QgbWF0Y2guXG4gIC8vIE1pc21hdGNoIHVzdWFsbHkgbWVhbnMgYW4gb3BlcmF0b3Igcm90YXRlZC9yZXBsYWNlZCBhbiBvcmcncyBLTVNcbiAgLy8gY29uZmlnIGFuZCBpcyBub3cgcmVhZGluZyBhIGJsb2IgZW5jcnlwdGVkIHVuZGVyIHRoZSBPTEQga2V5IOKAlFxuICAvLyBmYWlsaW5nIGxvdWQgaGVyZSBiZWF0cyBsZXR0aW5nIEFFUy1HQ00gdGhyb3cgYW4gb3BhcXVlIGF1dGgtdGFnIGVycm9yLlxuICBjb25zdCBwcm92aWRlcktpZCA9IHByb3ZpZGVyLmtpZEZvcj8uKG9yZ0lkKTtcbiAgaWYgKHByb3ZpZGVyS2lkICE9PSB1bmRlZmluZWQgJiYgYmxvYi5raWQgIT09IHVuZGVmaW5lZCAmJiBwcm92aWRlcktpZCAhPT0gYmxvYi5raWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEtNUyBrZXkgaWQgbWlzbWF0Y2g6IGJsb2Igd2FzIGVuY3J5cHRlZCB1bmRlciAke2Jsb2Iua2lkfSwgY3VycmVudCBwcm92aWRlciB1c2VzICR7cHJvdmlkZXJLaWR9IGZvciBvcmcgJHtvcmdJZH1gKTtcbiAgfVxuICBjb25zdCBrZXkgPSBwcm92aWRlci5kZXJpdmVLZXkob3JnSWQpO1xuICBjb25zdCBpdiA9IEJ1ZmZlci5mcm9tKGJsb2IuaXYsICdiYXNlNjQnKTtcbiAgY29uc3QgYWxsID0gQnVmZmVyLmZyb20oYmxvYi5jaXBoZXJ0ZXh0LCAnYmFzZTY0Jyk7XG4gIC8vIFNwbGl0IG9mZiB0aGUgMTYtYnl0ZSBhdXRoIHRhZyBhcHBlbmRlZCBpbiBlbmNyeXB0U2VjcmV0LiBBbnkgdGFtcGVyaW5nXG4gIC8vICB0byBlaXRoZXIgdGhlIGNpcGhlcnRleHQgT1IgdGhlIHRhZyAgY2F1c2VzIHRoZSBuZXh0IGBmaW5hbCgpYCB0b1xuICAvLyB0aHJvdyB3aXRoIFwiVW5zdXBwb3J0ZWQgc3RhdGUgb3IgdW5hYmxlIHRvIGF1dGhlbnRpY2F0ZSBkYXRhXCIuXG4gIGNvbnN0IHRhZyA9IGFsbC5zdWJhcnJheShhbGwubGVuZ3RoIC0gMTYpO1xuICBjb25zdCBlbmMgPSBhbGwuc3ViYXJyYXkoMCwgYWxsLmxlbmd0aCAtIDE2KTtcbiAgY29uc3QgZGVjaXBoZXIgPSBjcmVhdGVEZWNpcGhlcml2KCdhZXMtMjU2LWdjbScsIGtleSwgaXYpO1xuICBkZWNpcGhlci5zZXRBdXRoVGFnKHRhZyk7XG4gIGNvbnN0IGRlYyA9IEJ1ZmZlci5jb25jYXQoW2RlY2lwaGVyLnVwZGF0ZShlbmMpLCBkZWNpcGhlci5maW5hbCgpXSk7XG4gIHJldHVybiBkZWMudG9TdHJpbmcoJ3V0ZjgnKTtcbn1cblxuLyoqXG4gKiBUeXBlIGd1YXJkICBoYW5keSBmb3IgbW9kZWwgbGF5ZXJzIHRoYXQgaG9sZCBhIGNvbHVtbiB3aG9zZSB2YWx1ZSBtYXkgYmVcbiAqIGVpdGhlciBhIGNsZWFyLXRleHQgc3RyaW5nIChsZWdhY3kgLyB1bmVuY3J5cHRlZCkgT1IgYW4gZW5jcnlwdGVkIGJsb2JcbiAqIChwb3N0LW1pZ3JhdGlvbikuIE1peGVkIHN0YXRlcyBhcmlzZSBtaWQtbWlncmF0aW9uOyB0aGUgbW9kZWwgZGVjaWRlc1xuICogd2hhdCB0byBkbyAoZGVjcnlwdCBvbiByZWFkLCBlbmNyeXB0IG9uIG5leHQgd3JpdGUpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFbmNyeXB0ZWRCbG9iKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgRW5jcnlwdGVkQmxvYiB7XG4gIHJldHVybiAoIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCdcbiAgICAmJiB2YWx1ZSAhPT0gbnVsbFxuICAgICYmICh2YWx1ZSBhcyB7IGFsZz86IHVua25vd24gfSkuYWxnID09PSAnYWVzLTI1Ni1nY20tdjEnXG4gICAgJiYgdHlwZW9mICh2YWx1ZSBhcyB7IGl2PzogdW5rbm93biB9KS5pdiA9PT0gJ3N0cmluZydcbiAgICAmJiB0eXBlb2YgKHZhbHVlIGFzIHsgY2lwaGVydGV4dD86IHVua25vd24gfSkuY2lwaGVydGV4dCA9PT0gJ3N0cmluZydcbiAgKTtcbn1cbiJdfQ==
@@ -21,7 +21,7 @@ export declare function assertSafeUrl(rawUrl: string, opts?: SafeUrlOptions): Pr
21
21
  * redirect response as a failed delivery rather than following it.
22
22
  */
23
23
  export declare const SSRF_FETCH_INIT: {
24
- redirect: "manual";
24
+ redirect: 'manual';
25
25
  };
26
26
  /** True when a `fetch` Response is (or was) a redirect the caller must refuse. */
27
27
  export declare function isRefusedRedirect(resp: {
package/lib/utils/ssrf.js CHANGED
@@ -103,4 +103,4 @@ export const SSRF_FETCH_INIT = { redirect: 'manual' };
103
103
  export function isRefusedRedirect(resp) {
104
104
  return resp.type === 'opaqueredirect' || (resp.status >= 300 && resp.status < 400);
105
105
  }
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NyZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9zc3JmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEtBQUssQ0FBQztBQUUzQjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsRUFBVTtJQUN6QyxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN0RCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7SUFDdEUsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUNQLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHO2VBQ2xDLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsNENBQTRDO2VBQ3JFLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7ZUFDakMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUM7ZUFDeEIsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUTtJ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RyxNQUFNLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUFDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFBQyxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFBQyxDQUFDO0lBQ3pHLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQ3BFLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0FBQzNHLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEVBQUUsUUFBUSxFQUFFLFFBQWlCLEVBQUUsQ0FBQztBQUUvRCxrRkFBa0Y7QUFDbEYsTUFBTSxVQUFVLGlCQUFpQixDQUFDLElBQXVDO0lBQ3ZFLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxnQkFBZ0IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDckYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFNoYXJlZCBTU1JGIGd1YXJkIGZvciB1c2VyL3RlbmFudC1zdXBwbGllZCBvdXRib3VuZCBVUkxzICh3ZWJob29rIHRhcmdldHMsXG4gKiBjYWxsYmFja3MsIOKApikuIFByb21vdGVkIHRvIGFwaS1jb3JlIHNvIGV2ZXJ5IHNlcnZpY2UgdGhhdCBsZXRzIGFuIG9yZyBwb2ludFxuICogdGhlIHBsYXRmb3JtIGF0IGFuIGFyYml0cmFyeSBVUkwgZW5mb3JjZXMgdGhlIFNBTUUgZGVueWxpc3QgaW5zdGVhZCBvZiBlYWNoXG4gKiByZS1kZXJpdmluZyBpdCAodGhlIGNvbXBsaWFuY2Ugbm90aWZpZXIgYW5kIHRoZSBwbGF0Zm9ybSBhbGVydCByZWxheSBib3RoXG4gKiBjb25zdW1lIHRoaXMpLlxuICpcbiAqIFRoZSBndWFyZCByZXNvbHZlcyB0aGUgaG9zdCB1cCBmcm9udCBhbmQgcmVqZWN0cyBhbnkgYWRkcmVzcyB0aGF0IGlzIOKAlCBvclxuICogcmVzb2x2ZXMgdG8g4oCUIGEgbG9vcGJhY2sgLyBwcml2YXRlIC8gbGluay1sb2NhbCAvIHVuaXF1ZS1sb2NhbCAvIGNhcnJpZXItZ3JhZGVcbiAqIE5BVCAvIGNsb3VkLW1ldGFkYXRhIHJhbmdlLCBzbyBhIHRlbmFudCBjYW4ndCBhaW0gYSB3ZWJob29rIGF0XG4gKiBgMTY5LjI1NC4xNjkuMjU0YCBvciBhbiBpbi1jbHVzdGVyIHNlcnZpY2UuXG4gKlxuICogRE5TLXJlYmluZGluZyBub3RlOiB0aGUgdXAtZnJvbnQgcmVzb2x2ZSB2YWxpZGF0ZXMgdGhlICppbml0aWFsKiBob3N0IG9ubHkuXG4gKiBOb2RlJ3MgZ2xvYmFsIGBmZXRjaGAgKHVuZGljaSkgcmUtcmVzb2x2ZXMgRE5TIGZvciBhIHJlZGlyZWN0IHRhcmdldFxuICogaW5kZXBlbmRlbnRseSwgc28gY2FsbGVycyBNVVNUIHNlbmQgd2l0aCBgcmVkaXJlY3Q6ICdtYW51YWwnYCBhbmQgdHJlYXQgYW55XG4gKiAzeHggYXMgYSBmYWlsZWQgZGVsaXZlcnkg4oCUIHNlZSB7QGxpbmsgU1NSRl9GRVRDSF9JTklUfS4gUGlubmluZyB0aGUgZXhhY3RcbiAqIHJlc29sdmVkIElQIGZvciB0aGUgY29ubmVjdGlvbiB3b3VsZCBuZWVkIGEgY3VzdG9tIHVuZGljaSBkaXNwYXRjaGVyIChub3QgYVxuICogZGVwZW5kZW5jeSBoZXJlKTsgcmVmdXNpbmcgcmVkaXJlY3RzIGNsb3NlcyB0aGUgcHJhY3RpY2FsIHJlYmluZGluZyBwaXZvdC5cbiAqL1xuXG5pbXBvcnQgeyBsb29rdXAgfSBmcm9tICdkbnMvcHJvbWlzZXMnO1xuaW1wb3J0IHsgaXNJUCB9IGZyb20gJ25ldCc7XG5cbi8qKlxuICogVHJ1ZSBmb3IgbG9vcGJhY2sgLyBwcml2YXRlIC8gbGluay1sb2NhbCAvIENHTkFUIC8gY2xvdWQtbWV0YWRhdGEgLyBVTEFcbiAqIGFkZHJlc3NlcyDigJQgdGhlIHJhbmdlcyBhbiBvdXRib3VuZCB0ZW5hbnQgd2ViaG9vayBtdXN0IG5ldmVyIHJlYWNoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNQcml2YXRlQWRkcmVzcyhpcDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IGFkZHIgPSBpcC5yZXBsYWNlKC9eXFxbfFxcXSQvZywgJycpLnRvTG93ZXJDYXNlKCk7XG4gIGNvbnN0IHY0ID0gYWRkci5tYXRjaCgvXihcXGR7MSwzfSlcXC4oXFxkezEsM30pXFwuKFxcZHsxLDN9KVxcLihcXGR7MSwzfSkkLyk7XG4gIGlmICh2NCkge1xuICAgIGNvbnN0IGEgPSBOdW1iZXIodjRbMV0pLCBiID0gTnVtYmVyKHY0WzJdKTtcbiAgICByZXR1cm4gYSA9PT0gMCB8fCBhID09PSAxMCB8fCBhID09PSAxMjdcbiAgICAgIHx8IChhID09PSAxNjkgJiYgYiA9PT0gMjU0KSAvLyBsaW5rLWxvY2FsIGluY2wuIDE2OS4yNTQuMTY5LjI1NCBtZXRhZGF0YVxuICAgICAgfHwgKGEgPT09IDE3MiAmJiBiID49IDE2ICYmIGIgPD0gMzEpXG4gICAgICB8fCAoYSA9PT0gMTkyICYmIGIgPT09IDE2OClcbiAgICAgIHx8IChhID09PSAxMDAgJiYgYiA+PSA2NCAmJiBiIDw9IDEyNyk7IC8vIENHTkFUXG4gIH1cbiAgaWYgKGFkZHIgPT09ICc6OjEnIHx8IGFkZHIgPT09ICc6OicpIHJldHVybiB0cnVlO1xuICBpZiAoYWRkci5zdGFydHNXaXRoKCc6OmZmZmY6JykpIHtcbiAgICBjb25zdCBzdWZmaXggPSBhZGRyLnNsaWNlKDcpO1xuICAgIC8vIERvdHRlZCBmb3JtIChgOjpmZmZmOjEyNy4wLjAuMWApIOKAlCByZWN1cnNlIHN0cmFpZ2h0IGludG8gdGhlIHY0IGNoZWNrcy5cbiAgICBpZiAoc3VmZml4LmluY2x1ZGVzKCcuJykpIHJldHVybiBpc1ByaXZhdGVBZGRyZXNzKHN1ZmZpeCk7XG4gICAgLy8gSGV4IGZvcm0gKGA6OmZmZmY6N2YwMDoxYCA9IDEyNy4wLjAuMSwgYDo6ZmZmZjpjMGE4OjFgID0gMTkyLjE2OC4wLjEpOlxuICAgIC8vIHRoZSBsb3cgMzIgYml0cyBhcmUgd3JpdHRlbiBhcyB0aGUgbGFzdCBvbmUvdHdvIGhleCBncm91cHMuIEZvbGQgdGhlbSBpbnRvXG4gICAgLy8gYSBkb3R0ZWQgcXVhZCBhbmQgcmVjdXJzZSBzbyB0aGUgdjQgcmFuZ2VzIGJlbG93IHN0aWxsIGNhdGNoIGl0IOKAlCB3aXRob3V0XG4gICAgLy8gdGhpcyB0aGUgaGV4IGZvcm0gc2xpcHMgcGFzdCBldmVyeSBjaGVjayBhbmQgcmVhY2hlcyBsb29wYmFjay9wcml2YXRlIHNwYWNlLlxuICAgIGNvbnN0IGdyb3VwcyA9IHN1ZmZpeC5zcGxpdCgnOicpO1xuICAgIGNvbnN0IGhpZ2ggPSBwYXJzZUludChncm91cHNbZ3JvdXBzLmxlbmd0aCAtIDJdID8/ICcwJywgMTYpO1xuICAgIGNvbnN0IGxvdyA9IHBhcnNlSW50KGdyb3Vwc1tncm91cHMubGVuZ3RoIC0gMV0gPz8gJzAnLCAxNik7XG4gICAgaWYgKE51bWJlci5pc05hTihoaWdoKSB8fCBOdW1iZXIuaXNOYU4obG93KSkgcmV0dXJuIGZhbHNlO1xuICAgIC8vIEZvbGQgZWFjaCAxNi1iaXQgaGFsZiBpbnRvIHR3byBvY3RldHMgKGFyaXRobWV0aWMsIG5vdCBiaXR3aXNlLCB0byBzYXRpc2Z5XG4gICAgLy8gdGhlIG5vLWJpdHdpc2UgbGludCk6IGhpZ2gg4oaSIGEuYiwgbG93IOKGkiBjLmQuXG4gICAgY29uc3QgZG90dGVkID0gYCR7TWF0aC5mbG9vcihoaWdoIC8gMjU2KSAlIDI1Nn0uJHtoaWdoICUgMjU2fS4ke01hdGguZmxvb3IobG93IC8gMjU2KSAlIDI1Nn0uJHtsb3cgJSAyNTZ9YDtcbiAgICByZXR1cm4gaXNQcml2YXRlQWRkcmVzcyhkb3R0ZWQpO1xuICB9XG4gIHJldHVybiBhZGRyLnN0YXJ0c1dpdGgoJ2ZjJykgfHwgYWRkci5zdGFydHNXaXRoKCdmZCcpIC8vIHVuaXF1ZS1sb2NhbFxuICAgIHx8IGFkZHIuc3RhcnRzV2l0aCgnZmU4MCcpOyAvLyBsaW5rLWxvY2FsXG59XG5cbi8qKiBPcHRpb25zIGZvciB7QGxpbmsgYXNzZXJ0U2FmZVVybH0uICovXG5leHBvcnQgaW50ZXJmYWNlIFNhZmVVcmxPcHRpb25zIHtcbiAgLyoqIEFsbG93ZWQgVVJMIHByb3RvY29scyAoZGVmYXVsdDogYFsnaHR0cHM6J11gKS4gKi9cbiAgcHJvdG9jb2xzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogUmVqZWN0IGEgVVJMIHRoYXQgaXMgbWFsZm9ybWVkLCB1c2VzIGEgZGlzYWxsb3dlZCBwcm90b2NvbCwgb3IgcG9pbnRzIGF0IGFcbiAqIHByaXZhdGUvbG9vcGJhY2svbGluay1sb2NhbC9tZXRhZGF0YSBhZGRyZXNzIChieSBJUCBsaXRlcmFsIG9yIGJ5IEROU1xuICogcmVzb2x1dGlvbikuIFRocm93cyBhIHBsYWluIGBFcnJvcmAgd2l0aCBhIGNhbGxlci1zYWZlIG1lc3NhZ2Ugb24gcmVqZWN0aW9uO1xuICogcmVzb2x2ZXMgc2lsZW50bHkgd2hlbiB0aGUgVVJMIGlzIHNhZmUgdG8gZmV0Y2guXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhc3NlcnRTYWZlVXJsKHJhd1VybDogc3RyaW5nLCBvcHRzOiBTYWZlVXJsT3B0aW9ucyA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHByb3RvY29scyA9IG9wdHMucHJvdG9jb2xzID8/IFsnaHR0cHM6J107XG4gIGxldCB1OiBVUkw7XG4gIHRyeSB7IHUgPSBuZXcgVVJMKHJhd1VybCk7IH0gY2F0Y2ggeyB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgdXJsJyk7IH1cbiAgaWYgKCFwcm90b2NvbHMuaW5jbHVkZXModS5wcm90b2NvbCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHVybCBtdXN0IHVzZSAke3Byb3RvY29scy5tYXAoKHApID0+IHAucmVwbGFjZSgvOiQvLCAnJykpLmpvaW4oJy8nKX1gKTtcbiAgfVxuICBjb25zdCBob3N0ID0gdS5ob3N0bmFtZTtcbiAgaWYgKGlzSVAoaG9zdCkgJiYgaXNQcml2YXRlQWRkcmVzcyhob3N0KSkgdGhyb3cgbmV3IEVycm9yKCd1cmwgdGFyZ2V0cyBhIHByaXZhdGUgYWRkcmVzcycpO1xuICBsZXQgYWRkcnM6IHsgYWRkcmVzczogc3RyaW5nIH1bXTtcbiAgdHJ5IHsgYWRkcnMgPSBhd2FpdCBsb29rdXAoaG9zdCwgeyBhbGw6IHRydWUgfSk7IH0gY2F0Y2ggeyB0aHJvdyBuZXcgRXJyb3IoJ3VybCBob3N0IGRpZCBub3QgcmVzb2x2ZScpOyB9XG4gIGlmIChhZGRycy5sZW5ndGggPT09IDApIHRocm93IG5ldyBFcnJvcigndXJsIGhvc3QgZGlkIG5vdCByZXNvbHZlJyk7XG4gIGlmIChhZGRycy5zb21lKChhKSA9PiBpc1ByaXZhdGVBZGRyZXNzKGEuYWRkcmVzcykpKSB0aHJvdyBuZXcgRXJyb3IoJ3VybCByZXNvbHZlcyB0byBhIHByaXZhdGUgYWRkcmVzcycpO1xufVxuXG4vKipcbiAqIGBmZXRjaGAgaW5pdCBmcmFnbWVudCBldmVyeSBTU1JGLWd1YXJkZWQgY2FsbCBNVVNUIHNwcmVhZCBzbyBhIHJlZGlyZWN0IGNhbid0XG4gKiBwaXZvdCB0byBhbiB1bnZhbGlkYXRlZCAoYW5kIHJlLXJlc29sdmVkKSBob3N0LiBDYWxsZXJzIHRyZWF0IGEgM3h4IC8gb3BhcXVlXG4gKiByZWRpcmVjdCByZXNwb25zZSBhcyBhIGZhaWxlZCBkZWxpdmVyeSByYXRoZXIgdGhhbiBmb2xsb3dpbmcgaXQuXG4gKi9cbmV4cG9ydCBjb25zdCBTU1JGX0ZFVENIX0lOSVQgPSB7IHJlZGlyZWN0OiAnbWFudWFsJyBhcyBjb25zdCB9O1xuXG4vKiogVHJ1ZSB3aGVuIGEgYGZldGNoYCBSZXNwb25zZSBpcyAob3Igd2FzKSBhIHJlZGlyZWN0IHRoZSBjYWxsZXIgbXVzdCByZWZ1c2UuICovXG5leHBvcnQgZnVuY3Rpb24gaXNSZWZ1c2VkUmVkaXJlY3QocmVzcDogeyB0eXBlPzogc3RyaW5nOyBzdGF0dXM6IG51bWJlciB9KTogYm9vbGVhbiB7XG4gIHJldHVybiByZXNwLnR5cGUgPT09ICdvcGFxdWVyZWRpcmVjdCcgfHwgKHJlc3Auc3RhdHVzID49IDMwMCAmJiByZXNwLnN0YXR1cyA8IDQwMCk7XG59XG4iXX0=
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NyZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9zc3JmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEtBQUssQ0FBQztBQUUzQjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsRUFBVTtJQUN6QyxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN0RCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7SUFDdEUsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUNQLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHO2VBQ2xDLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsNENBQTRDO2VBQ3JFLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7ZUFDakMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUM7ZUFDeEIsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUTtJ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SyxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUFDLENBQUM7SUFDekcsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDcEUsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7QUFDM0csQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsRUFBRSxRQUFRLEVBQUUsUUFBaUIsRUFBRSxDQUFDO0FBRS9ELGtGQUFrRjtBQUNsRixNQUFNLFVBQVUsaUJBQWlCLENBQUMsSUFBdUM7SUFDdkUsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLGdCQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQztBQUNyRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogU2hhcmVkIFNTUkYgZ3VhcmQgZm9yIHVzZXIvdGVuYW50LXN1cHBsaWVkIG91dGJvdW5kIFVSTHMgKHdlYmhvb2sgdGFyZ2V0cyxcbiAqIGNhbGxiYWNrcywg4oCmKS4gUHJvbW90ZWQgdG8gYXBpLWNvcmUgc28gZXZlcnkgc2VydmljZSB0aGF0IGxldHMgYW4gb3JnIHBvaW50XG4gKiB0aGUgcGxhdGZvcm0gYXQgYW4gYXJiaXRyYXJ5IFVSTCBlbmZvcmNlcyB0aGUgU0FNRSBkZW55bGlzdCBpbnN0ZWFkIG9mIGVhY2hcbiAqIHJlLWRlcml2aW5nIGl0ICh0aGUgY29tcGxpYW5jZSBub3RpZmllciBhbmQgdGhlIHBsYXRmb3JtIGFsZXJ0IHJlbGF5IGJvdGhcbiAqIGNvbnN1bWUgdGhpcykuXG4gKlxuICogVGhlIGd1YXJkIHJlc29sdmVzIHRoZSBob3N0IHVwIGZyb250IGFuZCByZWplY3RzIGFueSBhZGRyZXNzIHRoYXQgaXMg4oCUIG9yXG4gKiByZXNvbHZlcyB0byDigJQgYSBsb29wYmFjayAvIHByaXZhdGUgLyBsaW5rLWxvY2FsIC8gdW5pcXVlLWxvY2FsIC8gY2Fycmllci1ncmFkZVxuICogTkFUIC8gY2xvdWQtbWV0YWRhdGEgcmFuZ2UsIHNvIGEgdGVuYW50IGNhbid0IGFpbSBhIHdlYmhvb2sgYXRcbiAqIGAxNjkuMjU0LjE2OS4yNTRgIG9yIGFuIGluLWNsdXN0ZXIgc2VydmljZS5cbiAqXG4gKiBETlMtcmViaW5kaW5nIG5vdGU6IHRoZSB1cC1mcm9udCByZXNvbHZlIHZhbGlkYXRlcyB0aGUgKmluaXRpYWwqIGhvc3Qgb25seS5cbiAqIE5vZGUncyBnbG9iYWwgYGZldGNoYCAodW5kaWNpKSByZS1yZXNvbHZlcyBETlMgZm9yIGEgcmVkaXJlY3QgdGFyZ2V0XG4gKiBpbmRlcGVuZGVudGx5LCBzbyBjYWxsZXJzIE1VU1Qgc2VuZCB3aXRoIGByZWRpcmVjdDogJ21hbnVhbCdgIGFuZCB0cmVhdCBhbnlcbiAqIDN4eCBhcyBhIGZhaWxlZCBkZWxpdmVyeSDigJQgc2VlIHtAbGluayBTU1JGX0ZFVENIX0lOSVR9LiBQaW5uaW5nIHRoZSBleGFjdFxuICogcmVzb2x2ZWQgSVAgZm9yIHRoZSBjb25uZWN0aW9uIHdvdWxkIG5lZWQgYSBjdXN0b20gdW5kaWNpIGRpc3BhdGNoZXIgKG5vdCBhXG4gKiBkZXBlbmRlbmN5IGhlcmUpOyByZWZ1c2luZyByZWRpcmVjdHMgY2xvc2VzIHRoZSBwcmFjdGljYWwgcmViaW5kaW5nIHBpdm90LlxuICovXG5cbmltcG9ydCB7IGxvb2t1cCB9IGZyb20gJ2Rucy9wcm9taXNlcyc7XG5pbXBvcnQgeyBpc0lQIH0gZnJvbSAnbmV0JztcblxuLyoqXG4gKiBUcnVlIGZvciBsb29wYmFjayAvIHByaXZhdGUgLyBsaW5rLWxvY2FsIC8gQ0dOQVQgLyBjbG91ZC1tZXRhZGF0YSAvIFVMQVxuICogYWRkcmVzc2VzIOKAlCB0aGUgcmFuZ2VzIGFuIG91dGJvdW5kIHRlbmFudCB3ZWJob29rIG11c3QgbmV2ZXIgcmVhY2guXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ByaXZhdGVBZGRyZXNzKGlwOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgYWRkciA9IGlwLnJlcGxhY2UoL15cXFt8XFxdJC9nLCAnJykudG9Mb3dlckNhc2UoKTtcbiAgY29uc3QgdjQgPSBhZGRyLm1hdGNoKC9eKFxcZHsxLDN9KVxcLihcXGR7MSwzfSlcXC4oXFxkezEsM30pXFwuKFxcZHsxLDN9KSQvKTtcbiAgaWYgKHY0KSB7XG4gICAgY29uc3QgYSA9IE51bWJlcih2NFsxXSksIGIgPSBOdW1iZXIodjRbMl0pO1xuICAgIHJldHVybiBhID09PSAwIHx8IGEgPT09IDEwIHx8IGEgPT09IDEyN1xuICAgICAgfHwgKGEgPT09IDE2OSAmJiBiID09PSAyNTQpIC8vIGxpbmstbG9jYWwgaW5jbC4gMTY5LjI1NC4xNjkuMjU0IG1ldGFkYXRhXG4gICAgICB8fCAoYSA9PT0gMTcyICYmIGIgPj0gMTYgJiYgYiA8PSAzMSlcbiAgICAgIHx8IChhID09PSAxOTIgJiYgYiA9PT0gMTY4KVxuICAgICAgfHwgKGEgPT09IDEwMCAmJiBiID49IDY0ICYmIGIgPD0gMTI3KTsgLy8gQ0dOQVRcbiAgfVxuICBpZiAoYWRkciA9PT0gJzo6MScgfHwgYWRkciA9PT0gJzo6JykgcmV0dXJuIHRydWU7XG4gIGlmIChhZGRyLnN0YXJ0c1dpdGgoJzo6ZmZmZjonKSkge1xuICAgIGNvbnN0IHN1ZmZpeCA9IGFkZHIuc2xpY2UoNyk7XG4gICAgLy8gRG90dGVkIGZvcm0gKGA6OmZmZmY6MTI3LjAuMC4xYCkg4oCUIHJlY3Vyc2Ugc3RyYWlnaHQgaW50byB0aGUgdjQgY2hlY2tzLlxuICAgIGlmIChzdWZmaXguaW5jbHVkZXMoJy4nKSkgcmV0dXJuIGlzUHJpdmF0ZUFkZHJlc3Moc3VmZml4KTtcbiAgICAvLyBIZXggZm9ybSAoYDo6ZmZmZjo3ZjAwOjFgID0gMTI3LjAuMC4xLCBgOjpmZmZmOmMwYTg6MWAgPSAxOTIuMTY4LjAuMSk6XG4gICAgLy8gdGhlIGxvdyAzMiBiaXRzIGFyZSB3cml0dGVuIGFzIHRoZSBsYXN0IG9uZS90d28gaGV4IGdyb3Vwcy4gRm9sZCB0aGVtIGludG9cbiAgICAvLyBhIGRvdHRlZCBxdWFkIGFuZCByZWN1cnNlIHNvIHRoZSB2NCByYW5nZXMgYmVsb3cgc3RpbGwgY2F0Y2ggaXQg4oCUIHdpdGhvdXRcbiAgICAvLyB0aGlzIHRoZSBoZXggZm9ybSBzbGlwcyBwYXN0IGV2ZXJ5IGNoZWNrIGFuZCByZWFjaGVzIGxvb3BiYWNrL3ByaXZhdGUgc3BhY2UuXG4gICAgY29uc3QgZ3JvdXBzID0gc3VmZml4LnNwbGl0KCc6Jyk7XG4gICAgY29uc3QgaGlnaCA9IHBhcnNlSW50KGdyb3Vwc1tncm91cHMubGVuZ3RoIC0gMl0gPz8gJzAnLCAxNik7XG4gICAgY29uc3QgbG93ID0gcGFyc2VJbnQoZ3JvdXBzW2dyb3Vwcy5sZW5ndGggLSAxXSA/PyAnMCcsIDE2KTtcbiAgICBpZiAoTnVtYmVyLmlzTmFOKGhpZ2gpIHx8IE51bWJlci5pc05hTihsb3cpKSByZXR1cm4gZmFsc2U7XG4gICAgLy8gRm9sZCBlYWNoIDE2LWJpdCBoYWxmIGludG8gdHdvIG9jdGV0cyAoYXJpdGhtZXRpYywgbm90IGJpdHdpc2UsIHRvIHNhdGlzZnlcbiAgICAvLyB0aGUgbm8tYml0d2lzZSBsaW50KTogaGlnaCDihpIgYS5iLCBsb3cg4oaSIGMuZC5cbiAgICBjb25zdCBkb3R0ZWQgPSBgJHtNYXRoLmZsb29yKGhpZ2ggLyAyNTYpICUgMjU2fS4ke2hpZ2ggJSAyNTZ9LiR7TWF0aC5mbG9vcihsb3cgLyAyNTYpICUgMjU2fS4ke2xvdyAlIDI1Nn1gO1xuICAgIHJldHVybiBpc1ByaXZhdGVBZGRyZXNzKGRvdHRlZCk7XG4gIH1cbiAgcmV0dXJuIGFkZHIuc3RhcnRzV2l0aCgnZmMnKSB8fCBhZGRyLnN0YXJ0c1dpdGgoJ2ZkJykgLy8gdW5pcXVlLWxvY2FsXG4gICAgfHwgYWRkci5zdGFydHNXaXRoKCdmZTgwJyk7IC8vIGxpbmstbG9jYWxcbn1cblxuLyoqIE9wdGlvbnMgZm9yIHtAbGluayBhc3NlcnRTYWZlVXJsfS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2FmZVVybE9wdGlvbnMge1xuICAvKiogQWxsb3dlZCBVUkwgcHJvdG9jb2xzIChkZWZhdWx0OiBgWydodHRwczonXWApLiAqL1xuICBwcm90b2NvbHM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBSZWplY3QgYSBVUkwgdGhhdCBpcyBtYWxmb3JtZWQsIHVzZXMgYSBkaXNhbGxvd2VkIHByb3RvY29sLCBvciBwb2ludHMgYXQgYVxuICogcHJpdmF0ZS9sb29wYmFjay9saW5rLWxvY2FsL21ldGFkYXRhIGFkZHJlc3MgKGJ5IElQIGxpdGVyYWwgb3IgYnkgRE5TXG4gKiByZXNvbHV0aW9uKS4gVGhyb3dzIGEgcGxhaW4gYEVycm9yYCB3aXRoIGEgY2FsbGVyLXNhZmUgbWVzc2FnZSBvbiByZWplY3Rpb247XG4gKiByZXNvbHZlcyBzaWxlbnRseSB3aGVuIHRoZSBVUkwgaXMgc2FmZSB0byBmZXRjaC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFzc2VydFNhZmVVcmwocmF3VXJsOiBzdHJpbmcsIG9wdHM6IFNhZmVVcmxPcHRpb25zID0ge30pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcHJvdG9jb2xzID0gb3B0cy5wcm90b2NvbHMgPz8gWydodHRwczonXTtcbiAgbGV0IHU6IFVSTDtcbiAgdHJ5IHsgdSA9IG5ldyBVUkwocmF3VXJsKTsgfSBjYXRjaCB7IHRocm93IG5ldyBFcnJvcignaW52YWxpZCB1cmwnKTsgfVxuICBpZiAoIXByb3RvY29scy5pbmNsdWRlcyh1LnByb3RvY29sKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgdXJsIG11c3QgdXNlICR7cHJvdG9jb2xzLm1hcCgocCkgPT4gcC5yZXBsYWNlKC86JC8sICcnKSkuam9pbignLycpfWApO1xuICB9XG4gIGNvbnN0IGhvc3QgPSB1Lmhvc3RuYW1lO1xuICBpZiAoaXNJUChob3N0KSAmJiBpc1ByaXZhdGVBZGRyZXNzKGhvc3QpKSB0aHJvdyBuZXcgRXJyb3IoJ3VybCB0YXJnZXRzIGEgcHJpdmF0ZSBhZGRyZXNzJyk7XG4gIGxldCBhZGRyczogeyBhZGRyZXNzOiBzdHJpbmcgfVtdO1xuICB0cnkgeyBhZGRycyA9IGF3YWl0IGxvb2t1cChob3N0LCB7IGFsbDogdHJ1ZSB9KTsgfSBjYXRjaCB7IHRocm93IG5ldyBFcnJvcigndXJsIGhvc3QgZGlkIG5vdCByZXNvbHZlJyk7IH1cbiAgaWYgKGFkZHJzLmxlbmd0aCA9PT0gMCkgdGhyb3cgbmV3IEVycm9yKCd1cmwgaG9zdCBkaWQgbm90IHJlc29sdmUnKTtcbiAgaWYgKGFkZHJzLnNvbWUoKGEpID0+IGlzUHJpdmF0ZUFkZHJlc3MoYS5hZGRyZXNzKSkpIHRocm93IG5ldyBFcnJvcigndXJsIHJlc29sdmVzIHRvIGEgcHJpdmF0ZSBhZGRyZXNzJyk7XG59XG5cbi8qKlxuICogYGZldGNoYCBpbml0IGZyYWdtZW50IGV2ZXJ5IFNTUkYtZ3VhcmRlZCBjYWxsIE1VU1Qgc3ByZWFkIHNvIGEgcmVkaXJlY3QgY2FuJ3RcbiAqIHBpdm90IHRvIGFuIHVudmFsaWRhdGVkIChhbmQgcmUtcmVzb2x2ZWQpIGhvc3QuIENhbGxlcnMgdHJlYXQgYSAzeHggLyBvcGFxdWVcbiAqIHJlZGlyZWN0IHJlc3BvbnNlIGFzIGEgZmFpbGVkIGRlbGl2ZXJ5IHJhdGhlciB0aGFuIGZvbGxvd2luZyBpdC5cbiAqL1xuZXhwb3J0IGNvbnN0IFNTUkZfRkVUQ0hfSU5JVCA9IHsgcmVkaXJlY3Q6ICdtYW51YWwnIGFzIGNvbnN0IH07XG5cbi8qKiBUcnVlIHdoZW4gYSBgZmV0Y2hgIFJlc3BvbnNlIGlzIChvciB3YXMpIGEgcmVkaXJlY3QgdGhlIGNhbGxlciBtdXN0IHJlZnVzZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1JlZnVzZWRSZWRpcmVjdChyZXNwOiB7IHR5cGU/OiBzdHJpbmc7IHN0YXR1czogbnVtYmVyIH0pOiBib29sZWFuIHtcbiAgcmV0dXJuIHJlc3AudHlwZSA9PT0gJ29wYXF1ZXJlZGlyZWN0JyB8fCAocmVzcC5zdGF0dXMgPj0gMzAwICYmIHJlc3Auc3RhdHVzIDwgNDAwKTtcbn1cbiJdfQ==
@@ -21,13 +21,13 @@ export declare const PluginDeployGeneratedSchema: z.ZodObject<{
21
21
  version: z.ZodString;
22
22
  pluginType: z.ZodDefault<z.ZodEnum<{
23
23
  CodeBuildStep: "CodeBuildStep";
24
- ShellStep: "ShellStep";
25
24
  ManualApprovalStep: "ManualApprovalStep";
25
+ ShellStep: "ShellStep";
26
26
  }>>;
27
27
  computeType: z.ZodDefault<z.ZodEnum<{
28
- SMALL: "SMALL";
29
- MEDIUM: "MEDIUM";
30
28
  LARGE: "LARGE";
29
+ MEDIUM: "MEDIUM";
30
+ SMALL: "SMALL";
31
31
  X2_LARGE: "X2_LARGE";
32
32
  }>>;
33
33
  keywords: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
@@ -38,8 +38,8 @@ export declare const PluginDeployGeneratedSchema: z.ZodObject<{
38
38
  buildArgs: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
39
39
  dockerfile: z.ZodString;
40
40
  accessModifier: z.ZodDefault<z.ZodEnum<{
41
- public: "public";
42
41
  private: "private";
42
+ public: "public";
43
43
  }>>;
44
44
  }, z.core.$strip>;
45
45
  /**