@lowlighter/is 1.3.3 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/is.d.ts +11 -0
- package/is.js +4 -1
- package/package.json +8 -4
package/is.d.ts
CHANGED
|
@@ -11,6 +11,17 @@ export type * from "@zod/zod";
|
|
|
11
11
|
/** Parses a regular expression back into a `RegExp`. */ export declare function regex<T extends is.ZodType>(schema: T): is.ZodPreprocess<T>;
|
|
12
12
|
/** Parses a date string back into a `Date`. */ export declare function date<T extends is.ZodType>(schema: T): is.ZodPreprocess<T>;
|
|
13
13
|
/** Parses a duration string into milliseconds. */ export declare function duration<T extends is.ZodType>(schema: T): is.ZodPreprocess<T>;
|
|
14
|
+
/** Type alias for timestamp. */ export declare function timestamp(options?: {
|
|
15
|
+
default?: true;
|
|
16
|
+
}): is.ZodDefault<is.ZodNumberFormat>;
|
|
17
|
+
/** Type alias for timestamp (without a default). */ export declare function timestamp(options: {
|
|
18
|
+
default: false;
|
|
19
|
+
}): is.ZodNumberFormat;
|
|
20
|
+
/** Type alias for timestamp. */ export declare function timestamp(options?: {
|
|
21
|
+
default?: true;
|
|
22
|
+
} | {
|
|
23
|
+
default: false;
|
|
24
|
+
}): is.ZodNumberFormat | is.ZodDefault<is.ZodNumberFormat>;
|
|
14
25
|
/** Type alias for primitive values. */ export declare const primitive: is.ZodUnion<readonly [is.ZodString, is.ZodNumber, is.ZodBigInt, is.ZodBoolean, is.ZodUndefined, is.ZodNull, is.ZodDate, is.ZodCustom<Error, Error>]>;
|
|
15
26
|
/** Type alias for typed arrays. */ export declare const typedArray: is.ZodUnion<readonly [is.ZodCustom<Int8Array, Int8Array>, is.ZodCustom<Uint8Array, Uint8Array>, is.ZodCustom<Uint8ClampedArray, Uint8ClampedArray>, is.ZodCustom<Int16Array, Int16Array>, is.ZodCustom<Uint16Array, Uint16Array>, is.ZodCustom<Int32Array, Int32Array>, is.ZodCustom<Uint32Array, Uint32Array>, is.ZodCustom<Float16Array, Float16Array>, is.ZodCustom<Float32Array, Float32Array>, is.ZodCustom<Float64Array, Float64Array>, is.ZodCustom<BigInt64Array, BigInt64Array>, is.ZodCustom<BigUint64Array, BigUint64Array>]>;
|
|
16
27
|
/** Type alias for URLs with supported protocols. */ export declare const url: is.ZodURL & {
|
package/is.js
CHANGED
|
@@ -130,6 +130,9 @@ export * as is from "@zod/zod";
|
|
|
130
130
|
return value;
|
|
131
131
|
}, schema);
|
|
132
132
|
}
|
|
133
|
+
export function timestamp({ default: defaults = true } = {}) {
|
|
134
|
+
return defaults ? is.int().min(0).default(()=>Date.now()) : is.int().min(0);
|
|
135
|
+
}
|
|
133
136
|
/** Type alias for primitive values. */ export const primitive = is.union([
|
|
134
137
|
is.string(),
|
|
135
138
|
is.number(),
|
|
@@ -335,4 +338,4 @@ export function parse(schema, values, { async = false, zodError } = {}) {
|
|
|
335
338
|
throw new TypeError(`Validation failed: \n${prettifyIssue(error.issues)}`);
|
|
336
339
|
}
|
|
337
340
|
}
|
|
338
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9saWJzL2xpYnMvQGxpYnMvaXMvaXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW1wb3J0c1xuLy8gZGVuby1saW50LWlnbm9yZS1maWxlIG5vLWV4cGxpY2l0LWFueSBiYW4tdHlwZXNcbmltcG9ydCB0eXBlIHsgUGFyc2VPcHRpb25zIGFzIFBhcnNlQXJnc09wdGlvbnMgfSBmcm9tIFwiQHN0ZC9jbGkvcGFyc2UtYXJnc1wiXG5pbXBvcnQgeyBwYXJzZUFyZ3MgfSBmcm9tIFwiQHN0ZC9jbGkvcGFyc2UtYXJnc1wiXG5pbXBvcnQgKiBhcyBpcyBmcm9tIFwiQHpvZC96b2RcIlxuZXhwb3J0ICogYXMgaXMgZnJvbSBcIkB6b2Qvem9kXCJcbmV4cG9ydCB0eXBlICogZnJvbSBcIkB6b2Qvem9kXCJcblxuLyoqIENvYWxlc2NlcyBhIHBhcnNlZCB2YWx1ZSB0byBgdW5kZWZpbmVkYCBzbyBzY2hlbWEgZGVmYXVsdHMgY2FuIGJlIGFwcGxpZWQuICovXG5leHBvcnQgZnVuY3Rpb24gY29hbGVzY2U8VCBleHRlbmRzIGlzLlpvZFR5cGU+KHNjaGVtYTogVCk6IGlzLlpvZFByZXByb2Nlc3M8VD4ge1xuICByZXR1cm4gaXMucHJlcHJvY2VzcygodmFsdWUpID0+IHtcbiAgICByZXR1cm4gdmFsdWUgPz8gdW5kZWZpbmVkXG4gIH0sIHNjaGVtYSlcbn1cblxuLyoqIENvZXJjZXMgYSBwYXJzZWQgdmFsdWUgaW50byBgbnVtYmVyYCB0eXBlIHdoZW4gcG9zc2libGUuICovXG5leHBvcnQgZnVuY3Rpb24gY29lcmNlPFQgZXh0ZW5kcyBpcy5ab2RUeXBlPihzY2hlbWE6IFQpOiBpcy5ab2RQcmVwcm9jZXNzPFQ+IHtcbiAgcmV0dXJuIGlzLnByZXByb2Nlc3MoKHZhbHVlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgY29uc3QgY29lcmNlZCA9IE51bWJlcih2YWx1ZSlcbiAgICAgIGlmICgoIU51bWJlci5pc05hTihjb2VyY2VkKSkgfHwgKHZhbHVlID09PSBcIk5hTlwiKSlcbiAgICAgICAgcmV0dXJuIGNvZXJjZWRcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlXG4gIH0sIHNjaGVtYSlcbn1cblxuLyoqIEFsbG93cyB0aGUgYG51bGxgIHZhbHVlIGFuZCBtYWtlcyBpdCB0aGUgZGVmYXVsdCB2YWx1ZSBpbiBzY2hlbWFzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG51bGxhYmxlPFQgZXh0ZW5kcyBpcy5ab2RUeXBlPihzY2hlbWE6IFQpOiBpcy5ab2REZWZhdWx0PGlzLlpvZE51bGxhYmxlPFQ+PiB7XG4gIHJldHVybiBzY2hlbWEubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpXG59XG5cbi8qKiBFbnN1cmVzIGEgcGFyc2VkIHZhbHVlIGlzIGNvbXBhdGlibGUgd2l0aCBgc3RydWN0dXJlZENsb25lYCBhbGdvcml0aG0uICovXG5leHBvcnQgZnVuY3Rpb24gY2xvbmFibGU8VCBleHRlbmRzIGlzLlpvZFR5cGU+KHNjaGVtYTogVCk6IGlzLlpvZFByZXByb2Nlc3M8VD4ge1xuICByZXR1cm4gaXMucHJlcHJvY2VzcygodmFsdWUsIGNvbnRleHQpID0+IHtcbiAgICB0cnkge1xuICAgICAgc3RydWN0dXJlZENsb25lKHZhbHVlKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb250ZXh0LmFkZElzc3VlKGBJbnZhbGlkIGlucHV0OiBWYWx1ZSBtdXN0IGJlIGNvbXBhdGlibGUgd2l0aCBzdHJ1Y3R1cmVkQ2xvbmUgYWxnb3JpdGhtOiAke2Vycm9yfWApXG4gICAgfVxuICAgIHJldHVybiB2YWx1ZVxuICB9LCBzY2hlbWEpXG59XG5cbi8qKiBUcmFuc2Zvcm1zIGEgcGFyc2VkIHZhbHVlIGludG8gYW4gYXJyYXkgaWYgaXQgaXMgbm90IGFscmVhZHkgb25lLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFycmF5YWJsZTxUIGV4dGVuZHMgaXMuWm9kVHlwZT4oc2NoZW1hOiBUKTogaXMuWm9kUHJlcHJvY2VzczxUPiB7XG4gIHJldHVybiBpcy5wcmVwcm9jZXNzKCh2YWx1ZSkgPT4ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICByZXR1cm4gW3ZhbHVlXVxuICAgIHJldHVybiB2YWx1ZVxuICB9LCBzY2hlbWEpXG59XG5cbi8qKiBUcmFuc2Zvcm1zIGEgQ0xJIGFyZ3VtZW50cyBzdHJpbmcgaW50byBhbiBvYmplY3Qgb3IgYXJyYXkuICovXG5leHBvcnQgZnVuY3Rpb24gY2xpYWJsZTxUIGV4dGVuZHMgaXMuWm9kVHlwZT4oc2NoZW1hOiBULCBvcHRpb25zPzogUGFyc2VBcmdzT3B0aW9ucyk6IGlzLlpvZFByZXByb2Nlc3M8VD4ge1xuICByZXR1cm4gaXMucHJlcHJvY2VzcygodmFsdWUsIGNvbnRleHQpID0+IHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBjb25zdCBhcmdzID0gW11cbiAgICAgIGxldCBjdXJyZW50ID0gXCJcIlxuICAgICAgbGV0IHF1b3RlZCA9IFwiXCJcbiAgICAgIGxldCBlc2NhcGUgPSBmYWxzZVxuICAgICAgbGV0IHF1b3RlcyA9IGZhbHNlXG4gICAgICBmb3IgKGNvbnN0IGNoYXIgb2YgdmFsdWUpIHtcbiAgICAgICAgaWYgKGVzY2FwZSkge1xuICAgICAgICAgIGN1cnJlbnQgKz0gY2hhclxuICAgICAgICAgIGVzY2FwZSA9IGZhbHNlXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBpZiAoKHF1b3RlZCA9PT0gJ1wiJykgJiYgKGNoYXIgPT09IFwiXFxcXFwiKSkge1xuICAgICAgICAgIGVzY2FwZSA9IHRydWVcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGlmICgoIXF1b3RlZCkgJiYgKChjaGFyID09PSAnXCInKSB8fCAoY2hhciA9PT0gXCInXCIpKSkge1xuICAgICAgICAgIHF1b3RlZCA9IGNoYXJcbiAgICAgICAgICBxdW90ZXMgPSB0cnVlXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBpZiAocXVvdGVkID09PSBjaGFyKSB7XG4gICAgICAgICAgcXVvdGVkID0gXCJcIlxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgaWYgKCghcXVvdGVkKSAmJiAoY2hhciA9PT0gXCIgXCIpKSB7XG4gICAgICAgICAgaWYgKGN1cnJlbnQgfHwgcXVvdGVzKSB7XG4gICAgICAgICAgICBhcmdzLnB1c2goY3VycmVudClcbiAgICAgICAgICAgIGN1cnJlbnQgPSBcIlwiXG4gICAgICAgICAgICBxdW90ZXMgPSBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnQgKz0gY2hhclxuICAgICAgfVxuICAgICAgaWYgKHF1b3RlZCkge1xuICAgICAgICBjb250ZXh0LmFkZElzc3VlKGBVbmNsb3NlZCBxdW90ZTogJHtxdW90ZWR9JHtjdXJyZW50fWApXG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgfVxuICAgICAgaWYgKGN1cnJlbnQgfHwgcXVvdGVzKVxuICAgICAgICBhcmdzLnB1c2goY3VycmVudClcbiAgICAgIHJldHVybiBvcHRpb25zID8gcGFyc2VBcmdzKGFyZ3MsIG9wdGlvbnMpIDogYXJnc1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWVcbiAgfSwgc2NoZW1hKVxufVxuXG4vKiogUGFyc2VzIGEgcmVndWxhciBleHByZXNzaW9uIGJhY2sgaW50byBhIGBSZWdFeHBgLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2V4PFQgZXh0ZW5kcyBpcy5ab2RUeXBlPihzY2hlbWE6IFQpOiBpcy5ab2RQcmVwcm9jZXNzPFQ+IHtcbiAgY29uc3QgZGVmaW5pdGlvbiA9IC9eXFwvKD88cGF0dGVybj4uKj8pXFwvKD88ZmxhZ3M+W2RnaW1zdXZ5XSopJC9zXG4gIHJldHVybiBpcy5wcmVwcm9jZXNzKCh2YWx1ZSkgPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGNvbnN0IGdyb3VwcyA9IHZhbHVlLm1hdGNoKGRlZmluaXRpb24pPy5ncm91cHNcbiAgICAgIGlmIChncm91cHMpIHtcbiAgICAgICAgY29uc3QgeyBwYXR0ZXJuLCBmbGFncyB9ID0gZ3JvdXBzXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAocGF0dGVybiwgZmxhZ3MpXG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZVxuICB9LCBzY2hlbWEpXG59XG5cbi8qKiBQYXJzZXMgYSBkYXRlIHN0cmluZyBiYWNrIGludG8gYSBgRGF0ZWAuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0ZTxUIGV4dGVuZHMgaXMuWm9kVHlwZT4oc2NoZW1hOiBUKTogaXMuWm9kUHJlcHJvY2VzczxUPiB7XG4gIHJldHVybiBpcy5wcmVwcm9jZXNzKCh2YWx1ZSkgPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh2YWx1ZSlcbiAgICAgIGlmICghTnVtYmVyLmlzTmFOKGRhdGUuZ2V0VGltZSgpKSlcbiAgICAgICAgcmV0dXJuIGRhdGVcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlXG4gIH0sIHNjaGVtYSlcbn1cblxuLyoqIFBhcnNlcyBhIGR1cmF0aW9uIHN0cmluZyBpbnRvIG1pbGxpc2Vjb25kcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkdXJhdGlvbjxUIGV4dGVuZHMgaXMuWm9kVHlwZT4oc2NoZW1hOiBUKTogaXMuWm9kUHJlcHJvY2VzczxUPiB7XG4gIHJldHVybiBpcy5wcmVwcm9jZXNzKCh2YWx1ZSkgPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGNvbnN0IGdyb3VwcyA9IHZhbHVlLm1hdGNoKC9eXFxzKig/Oig/PGRheXM+XFxkKylkKD86YXlzPyk/KT9cXHMqKD86KD88aG91cnM+XFxkKyloKD86KD86b3UpP3JzPyk/KT9cXHMqKD86KD88bWludXRlcz5cXGQrKW0oPzppbig/OnV0ZSk/cz8pPyk/XFxzKig/Oig/PHNlY29uZHM+XFxkKylzKD86ZWMoPzpvbmQpP3M/KT8pP1xccyooPzooPzxtaWxsaXNlY29uZHM+XFxkKykoPzptKD86aWxsaSk/cyg/OmVjKD86b25kKT9zPyk/KT8pP1xccyokLyk/Lmdyb3Vwc1xuICAgICAgaWYgKGdyb3Vwcykge1xuICAgICAgICBsZXQgeyBkYXlzID0gMCwgaG91cnMgPSAwLCBtaW51dGVzID0gMCwgc2Vjb25kcyA9IDAsIG1pbGxpc2Vjb25kcyA9IDAgfSA9IE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhncm91cHMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBba2V5LCBOdW1iZXIodmFsdWUpXSkuZmlsdGVyKChbXywgdmFsdWVdKSA9PiBOdW1iZXIuaXNGaW5pdGUodmFsdWUpKSlcbiAgICAgICAgaG91cnMgKz0gZGF5cyAqIDI0XG4gICAgICAgIG1pbnV0ZXMgKz0gaG91cnMgKiA2MFxuICAgICAgICBzZWNvbmRzICs9IG1pbnV0ZXMgKiA2MFxuICAgICAgICBtaWxsaXNlY29uZHMgKz0gc2Vjb25kcyAqIDEwMDBcbiAgICAgICAgcmV0dXJuIG1pbGxpc2Vjb25kc1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmFsdWVcbiAgfSwgc2NoZW1hKVxufVxuXG4vKiogVHlwZSBhbGlhcyBmb3IgcHJpbWl0aXZlIHZhbHVlcy4gKi9cbmV4cG9ydCBjb25zdCBwcmltaXRpdmUgPSBpcy51bmlvbihbaXMuc3RyaW5nKCksIGlzLm51bWJlcigpLCBpcy5iaWdpbnQoKSwgaXMuYm9vbGVhbigpLCBpcy51bmRlZmluZWQoKSwgaXMubnVsbCgpLCBpcy5kYXRlKCksIGlzLmluc3RhbmNlb2YoRXJyb3IpXSkgYXMgaXMuWm9kVW5pb248XG4gIHJlYWRvbmx5IFtpcy5ab2RTdHJpbmcsIGlzLlpvZE51bWJlciwgaXMuWm9kQmlnSW50LCBpcy5ab2RCb29sZWFuLCBpcy5ab2RVbmRlZmluZWQsIGlzLlpvZE51bGwsIGlzLlpvZERhdGUsIGlzLlpvZEN1c3RvbTxFcnJvciwgRXJyb3I+XVxuPlxuXG4vKiogVHlwZSBhbGlhcyBmb3IgdHlwZWQgYXJyYXlzLiAqL1xuZXhwb3J0IGNvbnN0IHR5cGVkQXJyYXkgPSBpcy51bmlvbihbXG4gIGlzLmluc3RhbmNlb2YoSW50OEFycmF5KSxcbiAgaXMuaW5zdGFuY2VvZihVaW50OEFycmF5KSxcbiAgaXMuaW5zdGFuY2VvZihVaW50OENsYW1wZWRBcnJheSksXG4gIGlzLmluc3RhbmNlb2YoSW50MTZBcnJheSksXG4gIGlzLmluc3RhbmNlb2YoVWludDE2QXJyYXkpLFxuICBpcy5pbnN0YW5jZW9mKEludDMyQXJyYXkpLFxuICBpcy5pbnN0YW5jZW9mKFVpbnQzMkFycmF5KSxcbiAgaXMuaW5zdGFuY2VvZihGbG9hdDE2QXJyYXkpLFxuICBpcy5pbnN0YW5jZW9mKEZsb2F0MzJBcnJheSksXG4gIGlzLmluc3RhbmNlb2YoRmxvYXQ2NEFycmF5KSxcbiAgaXMuaW5zdGFuY2VvZihCaWdJbnQ2NEFycmF5KSxcbiAgaXMuaW5zdGFuY2VvZihCaWdVaW50NjRBcnJheSksXG5dKSBhcyBpcy5ab2RVbmlvbjxcbiAgcmVhZG9ubHkgW1xuICAgIGlzLlpvZEN1c3RvbTxJbnQ4QXJyYXksIEludDhBcnJheT4sXG4gICAgaXMuWm9kQ3VzdG9tPFVpbnQ4QXJyYXksIFVpbnQ4QXJyYXk+LFxuICAgIGlzLlpvZEN1c3RvbTxVaW50OENsYW1wZWRBcnJheSwgVWludDhDbGFtcGVkQXJyYXk+LFxuICAgIGlzLlpvZEN1c3RvbTxJbnQxNkFycmF5LCBJbnQxNkFycmF5PixcbiAgICBpcy5ab2RDdXN0b208VWludDE2QXJyYXksIFVpbnQxNkFycmF5PixcbiAgICBpcy5ab2RDdXN0b208SW50MzJBcnJheSwgSW50MzJBcnJheT4sXG4gICAgaXMuWm9kQ3VzdG9tPFVpbnQzMkFycmF5LCBVaW50MzJBcnJheT4sXG4gICAgaXMuWm9kQ3VzdG9tPEZsb2F0MTZBcnJheSwgRmxvYXQxNkFycmF5PixcbiAgICBpcy5ab2RDdXN0b208RmxvYXQzMkFycmF5LCBGbG9hdDMyQXJyYXk+LFxuICAgIGlzLlpvZEN1c3RvbTxGbG9hdDY0QXJyYXksIEZsb2F0NjRBcnJheT4sXG4gICAgaXMuWm9kQ3VzdG9tPEJpZ0ludDY0QXJyYXksIEJpZ0ludDY0QXJyYXk+LFxuICAgIGlzLlpvZEN1c3RvbTxCaWdVaW50NjRBcnJheSwgQmlnVWludDY0QXJyYXk+LFxuICBdXG4+XG5cbi8qKiBTdXBwb3J0ZWQgcHJvdG9jb2xzIGZvciB7QGxpbmtjb2RlIHVybH0gdHlwZSBhbGlhcy4gKi9cbmNvbnN0IHByb3RvY29scyA9IFtcImh0dHBzP1wiLCBcImZpbGVcIiwgXCJ3YXNtXCIsIFwiZGF0YVwiLCBcImJsb2JcIiwgXCJqc3JcIiwgXCJucG1cIl1cblxuLyoqIFR5cGUgYWxpYXMgZm9yIFVSTHMgd2l0aCBzdXBwb3J0ZWQgcHJvdG9jb2xzLiAqL1xuZXhwb3J0IGNvbnN0IHVybCA9IE9iamVjdC5hc3NpZ24oaXMudXJsKHsgcHJvdG9jb2w6IG5ldyBSZWdFeHAoYF4oPzoke3Byb3RvY29scy5qb2luKFwifFwiKX0pJGApLCBob3N0bmFtZTogLy4qLyB9KSwge1xuICB3aXRoKGFkZGl0aW9uYWw6IHN0cmluZ1tdLCB7IGhvc3RuYW1lID0gLy4qLywgLi4ub3B0aW9ucyB9OiBPbWl0PGlzLnouY29yZS4kWm9kVVJMUGFyYW1zLCBcInByb3RvY29sXCI+ID0ge30pIHtcbiAgICBjb25zdCBlc2NhcGVkID0gYWRkaXRpb25hbC5tYXAoKHByb3RvY29sKSA9PiBwcm90b2NvbC5yZXBsYWNlKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZywgXCJcXFxcJCZcIikpXG4gICAgcmV0dXJuIGlzLnVybCh7IC4uLm9wdGlvbnMsIHByb3RvY29sOiBuZXcgUmVnRXhwKGBeKD86JHtbLi4ucHJvdG9jb2xzLCAuLi5lc2NhcGVkXS5qb2luKFwifFwiKX0pJGApLCBob3N0bmFtZSB9KVxuICB9LFxufSkgYXMgaXMuWm9kVVJMICYge1xuICAvKiogQ3JlYXRlIGEgbmV3IHR5cGUgYWxpYXMgZm9yIFVSTHMgd2l0aCBhZGRpdGlvbmFsIGN1c3RvbSBzdXBwb3J0ZWQgcHJvdG9jb2xzLiAqL1xuICB3aXRoKGFkZGl0aW9uYWw6IHN0cmluZ1tdLCBwYXJhbXM/OiBPbWl0PGlzLnouY29yZS4kWm9kVVJMUGFyYW1zLCBcInByb3RvY29sXCI+KTogaXMuWm9kVVJMXG59XG5cbi8qKiBUeXBlIGFsaWFzIGZvciBib2R5IGluaXQuICovXG5leHBvcnQgY29uc3QgYm9keUluaXQgPSBpcy51bmlvbihbXG4gIGlzLnN0cmluZygpLFxuICBpcy5pbnN0YW5jZW9mKFN0cmluZyksXG4gIGlzLmluc3RhbmNlb2YoQmxvYiksXG4gIGlzLmluc3RhbmNlb2YoQXJyYXlCdWZmZXIpLFxuICBpcy5pbnN0YW5jZW9mKERhdGFWaWV3KSxcbiAgaXMuaW5zdGFuY2VvZihGb3JtRGF0YSksXG4gIGlzLmluc3RhbmNlb2YoUmVhZGFibGVTdHJlYW0pLFxuICBpcy5pbnN0YW5jZW9mKFVSTFNlYXJjaFBhcmFtcyksXG4gIHR5cGVkQXJyYXksXG5dKS5udWxsYWJsZSgpIGFzIGlzLlpvZE51bGxhYmxlPFxuICBpcy5ab2RVbmlvbjxcbiAgICByZWFkb25seSBbXG4gICAgICBpcy5ab2RTdHJpbmcsXG4gICAgICBpcy5ab2RDdXN0b208U3RyaW5nLCBTdHJpbmc+LFxuICAgICAgaXMuWm9kQ3VzdG9tPEJsb2IsIEJsb2I+LFxuICAgICAgaXMuWm9kQ3VzdG9tPEFycmF5QnVmZmVyLCBBcnJheUJ1ZmZlcj4sXG4gICAgICBpcy5ab2RDdXN0b208RGF0YVZpZXcsIERhdGFWaWV3PixcbiAgICAgIGlzLlpvZEN1c3RvbTxGb3JtRGF0YSwgRm9ybURhdGE+LFxuICAgICAgaXMuWm9kQ3VzdG9tPFJlYWRhYmxlU3RyZWFtLCBSZWFkYWJsZVN0cmVhbT4sXG4gICAgICBpcy5ab2RDdXN0b208VVJMU2VhcmNoUGFyYW1zLCBVUkxTZWFyY2hQYXJhbXM+LFxuICAgICAgdHlwZW9mIHR5cGVkQXJyYXksXG4gICAgXVxuICA+XG4+XG5cbi8qKlxuICogU3lzdGVtIHBlcm1pc3Npb25zIGZsYWdzLlxuICpcbiAqIFNlZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLmRlbm8uY29tL3J1bnRpbWUvZnVuZGFtZW50YWxzL3NlY3VyaXR5LyNzeXN0ZW0taW5mb3JtYXRpb259LlxuICovXG5jb25zdCBzeXNmbGFncyA9IFtcImhvc3RuYW1lXCIsIFwib3NSZWxlYXNlXCIsIFwib3NVcHRpbWVcIiwgXCJsb2FkYXZnXCIsIFwibmV0d29ya0ludGVyZmFjZXNcIiwgXCJzeXN0ZW1NZW1vcnlJbmZvXCIsIFwidWlkXCIsIFwiZ2lkXCJdIGFzIGNvbnN0XG5cbi8qKiBUeXBlIGFsaWFzIGZhY3RvcnkgZm9yIHBlcm1pc3Npb24gZGVzY3JpcHRvcnMuICovXG5mdW5jdGlvbiBwZXJtaXNzaW9uKHsgZXhwYW5kID0gZmFsc2UsIHVybHMgPSBmYWxzZSwgc3lzID0gZmFsc2UgfSA9IHt9KSB7XG4gIHJldHVybiBpcy5wcmVwcm9jZXNzKCh2YWx1ZSkgPT4ge1xuICAgIGlmICh2YWx1ZSA9PT0gXCJpbmhlcml0XCIpXG4gICAgICByZXR1cm4gdmFsdWVcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKVxuICAgICAgdmFsdWUgPSBbdmFsdWVdXG4gICAgaWYgKGV4cGFuZCkge1xuICAgICAgaWYgKCh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB8fCAodmFsdWUgPT09IGZhbHNlKSlcbiAgICAgICAgdmFsdWUgPSBbXVxuICAgIH1cbiAgICBpZiAodXJscyAmJiBBcnJheS5pc0FycmF5KHZhbHVlKSlcbiAgICAgIHZhbHVlID0gdmFsdWUubWFwKCh2YWx1ZSkgPT4gdmFsdWUgaW5zdGFuY2VvZiBVUkwgPyB2YWx1ZS5ocmVmIDogdmFsdWUpXG4gICAgcmV0dXJuIHZhbHVlXG4gIH0sIGlzLnVuaW9uKFtpcy5saXRlcmFsKFwiaW5oZXJpdFwiKSwgaXMuYm9vbGVhbigpLCBpcy5hcnJheShzeXMgPyBpcy5lbnVtKHN5c2ZsYWdzKSA6IGlzLnN0cmluZygpKV0pKVxufVxuXG4vKiogVHlwZSBhbGlhcyBmYWN0b3J5IGZvciBwZXJtaXNzaW9ucyBvYmplY3QuICovXG5leHBvcnQgZnVuY3Rpb24gcGVybWlzc2lvbnM8VCBleHRlbmRzIGtleW9mIERlbm8uUGVybWlzc2lvbk9wdGlvbnNPYmplY3Q+KFxuICBvcHRpb25zPzogeyBzZXQ/OiBUW107IGV4cGFuZD86IGZhbHNlIH0sXG4pOiBpcy5ab2RVbmlvbjxyZWFkb25seSBbaXMuWm9kT2JqZWN0PFJlY29yZDxULCBpcy5ab2RPcHRpb25hbDxpcy5ab2RQcmVwcm9jZXNzPGlzLlpvZFVuaW9uPFtpcy5ab2RMaXRlcmFsPFwiaW5oZXJpdFwiPiwgaXMuWm9kQm9vbGVhbiwgaXMuWm9kQXJyYXk8aXMuWm9kU3RyaW5nPl0+Pj4+PiwgaXMuWm9kVW5pb248cmVhZG9ubHkgW2lzLlpvZExpdGVyYWw8XCJpbmhlcml0XCI+LCBpcy5ab2RMaXRlcmFsPFwibm9uZVwiPl0+XT5cbi8qKiBUeXBlIGFsaWFzIGZhY3RvcnkgZm9yIHBlcm1pc3Npb25zIG9iamVjdC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwZXJtaXNzaW9uczxUIGV4dGVuZHMga2V5b2YgRGVuby5QZXJtaXNzaW9uT3B0aW9uc09iamVjdD4oXG4gIG9wdGlvbnM6IHsgc2V0PzogVFtdOyBleHBhbmQ6IHRydWUgfSxcbik6IGlzLlpvZFByZXByb2Nlc3M8aXMuWm9kT2JqZWN0PFJlY29yZDxULCBpcy5ab2RQcmVwcm9jZXNzPGlzLlpvZFVuaW9uPFtpcy5ab2RMaXRlcmFsPFwiaW5oZXJpdFwiPiwgaXMuWm9kTGl0ZXJhbDx0cnVlPiwgaXMuWm9kQXJyYXk8aXMuWm9kU3RyaW5nPl0+Pj4+PlxuZXhwb3J0IGZ1bmN0aW9uIHBlcm1pc3Npb25zPFQgZXh0ZW5kcyBrZXlvZiBEZW5vLlBlcm1pc3Npb25PcHRpb25zT2JqZWN0Pih7IHNldCA9IFtcInJlYWRcIiwgXCJ3cml0ZVwiLCBcIm5ldFwiLCBcImVudlwiLCBcInJ1blwiLCBcInN5c1wiLCBcImZmaVwiLCBcImltcG9ydFwiXSBhcyBUW10sIGV4cGFuZCA9IGZhbHNlIH06IHsgc2V0PzogVFtdOyBleHBhbmQ/OiBib29sZWFuIH0gPSB7fSkge1xuICBjb25zdCB2YWxpZGF0b3IgPSBpcy5vYmplY3Qoe1xuICAgIHJlYWQ6IHBlcm1pc3Npb24oeyBleHBhbmQsIHVybHM6IHRydWUgfSksXG4gICAgd3JpdGU6IHBlcm1pc3Npb24oeyBleHBhbmQsIHVybHM6IHRydWUgfSksXG4gICAgbmV0OiBwZXJtaXNzaW9uKHsgZXhwYW5kIH0pLFxuICAgIGVudjogcGVybWlzc2lvbih7IGV4cGFuZCB9KSxcbiAgICBzeXM6IHBlcm1pc3Npb24oeyBleHBhbmQsIHN5czogdHJ1ZSB9KSxcbiAgICBydW46IHBlcm1pc3Npb24oeyBleHBhbmQsIHVybHM6IHRydWUgfSksXG4gICAgZmZpOiBwZXJtaXNzaW9uKHsgZXhwYW5kLCB1cmxzOiB0cnVlIH0pLFxuICAgIGltcG9ydDogcGVybWlzc2lvbih7IGV4cGFuZCB9KSxcbiAgfSkucGljazxhbnk+KE9iamVjdC5mcm9tRW50cmllcyhzZXQubWFwKChrZXkpID0+IFtrZXksIHRydWVdKSkpLnN0cmljdCgpXG5cbiAgLy8gUmV0dXJuIGVpdGhlciB0aGUgY29tcGFjdCBvciBleHBhbmRlZCB2ZXJzaW9uXG4gIGlmICghZXhwYW5kKVxuICAgIHJldHVybiB2YWxpZGF0b3IucGFydGlhbCgpLm9yKGlzLnVuaW9uKFtpcy5saXRlcmFsKFwiaW5oZXJpdFwiKSwgaXMubGl0ZXJhbChcIm5vbmVcIildKSlcbiAgcmV0dXJuIGlzLnByZXByb2Nlc3MoKHZhbHVlKSA9PiB7XG4gICAgaWYgKCh2YWx1ZSA9PT0gXCJpbmhlcml0XCIpIHx8ICh2YWx1ZSA9PT0gXCJub25lXCIpKVxuICAgICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhzZXQubWFwKChrZXkpID0+IFtrZXksIHZhbHVlID09PSBcIm5vbmVcIiA/IFtdIDogdmFsdWVdKSlcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKVxuICAgICAgdmFsdWUgPSBbdmFsdWVdXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKVxuICAgICAgcmV0dXJuIHsgLi4uT2JqZWN0LmZyb21FbnRyaWVzKHNldC5tYXAoKHBlcm1pc3Npb24pID0+IFtwZXJtaXNzaW9uLCBmYWxzZV0pKSwgLi4uT2JqZWN0LmZyb21FbnRyaWVzKHZhbHVlLm1hcCgocGVybWlzc2lvbikgPT4gW3Blcm1pc3Npb24sIFwiaW5oZXJpdFwiXSkpIH1cbiAgICByZXR1cm4gdmFsdWVcbiAgfSwgdmFsaWRhdG9yKSBhcyB1bmtub3duXG59XG5cbi8qKiBUeXBlIGFsaWFzIGZvciBleHByZXNzaW9uIHN0cmluZ3MuICovXG5leHBvcnQgY29uc3QgZXhwcmVzc2lvbiA9IGlzLnN0cmluZygpLnJlZ2V4KC9cXCRcXHsuKlxcfS8pIGFzIGlzLlpvZFN0cmluZ1xuXG4vKiogVHlwZSBhbGlhcyBmb3IgY2FsbGFibGUgdmFsdWVzLiAqL1xuZXhwb3J0IGNvbnN0IGNhbGxhYmxlID0gaXMudW5rbm93bigpLnJlZmluZSgodmFsdWUpID0+IHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiLCB7IG1lc3NhZ2U6IFwiSW52YWxpZCBpbnB1dDogVmFsdWUgbXVzdCBiZSBjYWxsYWJsZVwiIH0pIGFzIHVua25vd24gYXMgaXMuWm9kQ3VzdG9tPEZ1bmN0aW9uLCB1bmtub3duPlxuXG4vKiogVHlwZSBhbGlhcyBmb3IgWm9kIHNjaGVtYXMuICovXG5leHBvcnQgY29uc3QgcGFyc2VyID0gaXMuY3VzdG9tKCh2YWx1ZSkgPT4gKHZhbHVlIGluc3RhbmNlb2YgaXMuWm9kVHlwZSkgfHwgKHZhbHVlICYmICh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIpICYmICh0eXBlb2YgKHZhbHVlIGFzIFJlY29yZDxQcm9wZXJ0eUtleSwgdW5rbm93bj4pLnBhcnNlID09PSBcImZ1bmN0aW9uXCIpKSwgeyBtZXNzYWdlOiBcIkludmFsaWQgaW5wdXQ6IFZhbHVlIG11c3QgYmUgYSBab2Qgc2NoZW1hXCIgfSkgYXMgaXMuWm9kQ3VzdG9tPFxuICBpcy5ab2RUeXBlLFxuICB1bmtub3duXG4+XG5cbi8qKiBPYmplY3QgdGhhdCByZXNzZW1ibGUgYSBab2RFcnJvci4gKi9cbnR5cGUgWm9kRXJyb3JMaWtlID0geyBwYXRoPzogUHJvcGVydHlLZXlbXTsgbWVzc2FnZTogc3RyaW5nOyBlcnJvcnM/OiBab2RFcnJvckxpa2VbXVtdIH1cblxuLyoqIENvbnZlcnQgYSBwcm9wZXJ0eSBrZXkgcGF0aCB0byBhIHN0cmluZy4gKi9cbmZ1bmN0aW9uIHRvUGF0aChwYXRoOiBQcm9wZXJ0eUtleVtdID0gW10pOiBzdHJpbmcge1xuICBjb25zdCBzZWdtZW50cyA9IFtdXG4gIGZvciAoY29uc3Qgc2VnbWVudCBvZiBwYXRoKSB7XG4gICAgaWYgKHR5cGVvZiBzZWdtZW50ID09PSBcIm51bWJlclwiKVxuICAgICAgc2VnbWVudHMucHVzaChgWyR7c2VnbWVudH1dYClcbiAgICBlbHNlIGlmICh0eXBlb2Ygc2VnbWVudCA9PT0gXCJzeW1ib2xcIiB8fCAvW15cXHckXS8udGVzdChTdHJpbmcoc2VnbWVudCkpKVxuICAgICAgc2VnbWVudHMucHVzaChgWyR7SlNPTi5zdHJpbmdpZnkoU3RyaW5nKHNlZ21lbnQpKX1dYClcbiAgICBlbHNlXG4gICAgICBzZWdtZW50cy5wdXNoKGAuJHtzZWdtZW50fWApXG4gIH1cbiAgcmV0dXJuIHNlZ21lbnRzLmpvaW4oXCJcIilcbn1cblxuLyoqIFByZXR0aWZ5IHZhbGlkYXRpb24gaXNzdWVzIGluIGEgbW9yZSBkZXRhaWxlZCB3YXkuICovXG5mdW5jdGlvbiBwcmV0dGlmeUlzc3VlKGVycm9yczogWm9kRXJyb3JMaWtlW10sIHsgaW5kZW50ID0gXCJcIiB9ID0ge30pOiBzdHJpbmcge1xuICBjb25zdCBsaW5lcyA9IFtdXG4gIGVycm9ycyA9IFsuLi5lcnJvcnNdLnNvcnQoKGEsIGIpID0+IChhLnBhdGggPz8gW10pLmxlbmd0aCAtIChiLnBhdGggPz8gW10pLmxlbmd0aClcbiAgZm9yIChjb25zdCBlcnJvciBvZiBlcnJvcnMpIHtcbiAgICBsaW5lcy5wdXNoKGAke2luZGVudH3inJggJHtlcnJvci5tZXNzYWdlfWApXG4gICAgaWYgKGVycm9yLnBhdGg/Lmxlbmd0aClcbiAgICAgIGxpbmVzLnB1c2goYCR7aW5kZW50fSAg4oaSIGF0ICR7dG9QYXRoKGVycm9yLnBhdGgpfWApXG4gICAgaWYgKGVycm9yLmVycm9ycz8ubGVuZ3RoKSB7XG4gICAgICBsaW5lcy5wdXNoKGAke2luZGVudH0gIOKGkiB0cmllZCB0byBmaXQgaW50byBvbmUgb2YgdGhlIGFsbG93ZWQgdHlwZXM6YClcbiAgICAgIGZvciAoY29uc3Qgc3ViZXJyb3Igb2YgZXJyb3IuZXJyb3JzKVxuICAgICAgICBsaW5lcy5wdXNoKHByZXR0aWZ5SXNzdWUoc3ViZXJyb3IsIHsgaW5kZW50OiBgJHtpbmRlbnR9ICAgICAgYCB9KS5yZXBsYWNlKFwiICDinJhcIiwgXCItIOKcmFwiKSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGxpbmVzLmpvaW4oXCJcXG5cIilcbn1cblxuLyoqIE9wdGlvbnMgZm9yIHtAbGlua2NvZGUgcGFyc2UoKX0uICovXG5leHBvcnQgdHlwZSBQYXJzZU9wdGlvbnMgPSB7XG4gIC8qKiBXaGV0aGVyIHRvIHBhcnNlIGFzeW5jaHJvbm91c2x5LiAqL1xuICBhc3luYz86IGJvb2xlYW5cbiAgLyoqIFdoZXRoZXIgdG8gdGhyb3cgYSBgWm9kRXJyb3JgIHJhdGhlciB0aGFuIGEgYFR5cGVFcnJvcmAgaW4gY2FzZSBvZiBmYWlsdXJlICovXG4gIHpvZEVycm9yPzogYm9vbGVhblxufVxuXG4vKiogUGFyc2UgYSBzY2hlbWEgc3luY2hyb25vdXNseS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZTxUIGV4dGVuZHMgaXMuWm9kVHlwZT4oc2NoZW1hOiBULCB2YWx1ZXM6IHVua25vd24sIG9wdGlvbnM/OiBPbWl0PFBhcnNlT3B0aW9ucywgXCJhc3luY1wiPiAmIHsgYXN5bmM/OiBmYWxzZSB9KTogaXMuaW5mZXI8VD5cbi8qKiBQYXJzZSBhIHNjaGVtYSBhc3luY2hyb25vdXNseS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZTxUIGV4dGVuZHMgaXMuWm9kVHlwZT4oc2NoZW1hOiBULCB2YWx1ZXM6IHVua25vd24sIG9wdGlvbnM6IE9taXQ8UGFyc2VPcHRpb25zLCBcImFzeW5jXCI+ICYgeyBhc3luYzogdHJ1ZSB9KTogUHJvbWlzZTxpcy5pbmZlcjxUPj5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZTxUIGV4dGVuZHMgaXMuWm9kVHlwZT4oc2NoZW1hOiBULCB2YWx1ZXM6IHVua25vd24sIHsgYXN5bmMgPSBmYWxzZSwgem9kRXJyb3IgfTogUGFyc2VPcHRpb25zID0ge30pIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXN5bmNcbiAgICAgID8gc2NoZW1hLnBhcnNlQXN5bmModmFsdWVzKS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgaWYgKCghKGVycm9yIGluc3RhbmNlb2YgaXMuWm9kRXJyb3IpKSB8fCB6b2RFcnJvcilcbiAgICAgICAgICB0aHJvdyBlcnJvclxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBWYWxpZGF0aW9uIGZhaWxlZDogXFxuJHtwcmV0dGlmeUlzc3VlKGVycm9yLmlzc3Vlcyl9YClcbiAgICAgIH0pXG4gICAgICA6IHNjaGVtYS5wYXJzZSh2YWx1ZXMpXG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKCghKGVycm9yIGluc3RhbmNlb2YgaXMuWm9kRXJyb3IpKSB8fCB6b2RFcnJvcilcbiAgICAgIHRocm93IGVycm9yXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgVmFsaWRhdGlvbiBmYWlsZWQ6IFxcbiR7cHJldHRpZnlJc3N1ZShlcnJvci5pc3N1ZXMpfWApXG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1Ysa0RBQWtEO0FBRWxELFNBQVMsU0FBUyxRQUFRLHNCQUFxQjtBQUMvQyxZQUFZLFFBQVEsV0FBVTtBQUM5QixPQUFPLEtBQUssRUFBRSxNQUFNLFdBQVU7QUFHOUIsK0VBQStFLEdBQy9FLE9BQU8sU0FBUyxTQUErQixNQUFTO0VBQ3RELE9BQU8sR0FBRyxVQUFVLENBQUMsQ0FBQztJQUNwQixPQUFPLFNBQVM7RUFDbEIsR0FBRztBQUNMO0FBRUEsNkRBQTZELEdBQzdELE9BQU8sU0FBUyxPQUE2QixNQUFTO0VBQ3BELE9BQU8sR0FBRyxVQUFVLENBQUMsQ0FBQztJQUNwQixJQUFJLE9BQU8sVUFBVSxVQUFVO01BQzdCLE1BQU0sVUFBVSxPQUFPO01BQ3ZCLElBQUksQUFBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLFlBQWMsVUFBVSxPQUN6QyxPQUFPO0lBQ1g7SUFDQSxPQUFPO0VBQ1QsR0FBRztBQUNMO0FBRUEsdUVBQXVFLEdBQ3ZFLE9BQU8sU0FBUyxTQUErQixNQUFTO0VBQ3RELE9BQU8sT0FBTyxRQUFRLEdBQUcsT0FBTyxDQUFDO0FBQ25DO0FBRUEsMkVBQTJFLEdBQzNFLE9BQU8sU0FBUyxTQUErQixNQUFTO0VBQ3RELE9BQU8sR0FBRyxVQUFVLENBQUMsQ0FBQyxPQUFPO0lBQzNCLElBQUk7TUFDRixnQkFBZ0I7SUFDbEIsRUFBRSxPQUFPLE9BQU87TUFDZCxRQUFRLFFBQVEsQ0FBQyxDQUFDLHdFQUF3RSxFQUFFLE9BQU87SUFDckc7SUFDQSxPQUFPO0VBQ1QsR0FBRztBQUNMO0FBRUEsc0VBQXNFLEdBQ3RFLE9BQU8sU0FBUyxVQUFnQyxNQUFTO0VBQ3ZELE9BQU8sR0FBRyxVQUFVLENBQUMsQ0FBQztJQUNwQixJQUFJLENBQUMsTUFBTSxPQUFPLENBQUMsUUFDakIsT0FBTztNQUFDO0tBQU07SUFDaEIsT0FBTztF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
|
|
341
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9saWJzL2xpYnMvQGxpYnMvaXMvaXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW1wb3J0c1xuLy8gZGVuby1saW50LWlnbm9yZS1maWxlIG5vLWV4cGxpY2l0LWFueSBiYW4tdHlwZXNcbmltcG9ydCB0eXBlIHsgUGFyc2VPcHRpb25zIGFzIFBhcnNlQXJnc09wdGlvbnMgfSBmcm9tIFwiQHN0ZC9jbGkvcGFyc2UtYXJnc1wiXG5pbXBvcnQgeyBwYXJzZUFyZ3MgfSBmcm9tIFwiQHN0ZC9jbGkvcGFyc2UtYXJnc1wiXG5pbXBvcnQgKiBhcyBpcyBmcm9tIFwiQHpvZC96b2RcIlxuZXhwb3J0ICogYXMgaXMgZnJvbSBcIkB6b2Qvem9kXCJcbmV4cG9ydCB0eXBlICogZnJvbSBcIkB6b2Qvem9kXCJcblxuLyoqIENvYWxlc2NlcyBhIHBhcnNlZCB2YWx1ZSB0byBgdW5kZWZpbmVkYCBzbyBzY2hlbWEgZGVmYXVsdHMgY2FuIGJlIGFwcGxpZWQuICovXG5leHBvcnQgZnVuY3Rpb24gY29hbGVzY2U8VCBleHRlbmRzIGlzLlpvZFR5cGU+KHNjaGVtYTogVCk6IGlzLlpvZFByZXByb2Nlc3M8VD4ge1xuICByZXR1cm4gaXMucHJlcHJvY2VzcygodmFsdWUpID0+IHtcbiAgICByZXR1cm4gdmFsdWUgPz8gdW5kZWZpbmVkXG4gIH0sIHNjaGVtYSlcbn1cblxuLyoqIENvZXJjZXMgYSBwYXJzZWQgdmFsdWUgaW50byBgbnVtYmVyYCB0eXBlIHdoZW4gcG9zc2libGUuICovXG5leHBvcnQgZnVuY3Rpb24gY29lcmNlPFQgZXh0ZW5kcyBpcy5ab2RUeXBlPihzY2hlbWE6IFQpOiBpcy5ab2RQcmVwcm9jZXNzPFQ+IHtcbiAgcmV0dXJuIGlzLnByZXByb2Nlc3MoKHZhbHVlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgY29uc3QgY29lcmNlZCA9IE51bWJlcih2YWx1ZSlcbiAgICAgIGlmICgoIU51bWJlci5pc05hTihjb2VyY2VkKSkgfHwgKHZhbHVlID09PSBcIk5hTlwiKSlcbiAgICAgICAgcmV0dXJuIGNvZXJjZWRcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlXG4gIH0sIHNjaGVtYSlcbn1cblxuLyoqIEFsbG93cyB0aGUgYG51bGxgIHZhbHVlIGFuZCBtYWtlcyBpdCB0aGUgZGVmYXVsdCB2YWx1ZSBpbiBzY2hlbWFzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG51bGxhYmxlPFQgZXh0ZW5kcyBpcy5ab2RUeXBlPihzY2hlbWE6IFQpOiBpcy5ab2REZWZhdWx0PGlzLlpvZE51bGxhYmxlPFQ+PiB7XG4gIHJldHVybiBzY2hlbWEubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpXG59XG5cbi8qKiBFbnN1cmVzIGEgcGFyc2VkIHZhbHVlIGlzIGNvbXBhdGlibGUgd2l0aCBgc3RydWN0dXJlZENsb25lYCBhbGdvcml0aG0uICovXG5leHBvcnQgZnVuY3Rpb24gY2xvbmFibGU8VCBleHRlbmRzIGlzLlpvZFR5cGU+KHNjaGVtYTogVCk6IGlzLlpvZFByZXByb2Nlc3M8VD4ge1xuICByZXR1cm4gaXMucHJlcHJvY2VzcygodmFsdWUsIGNvbnRleHQpID0+IHtcbiAgICB0cnkge1xuICAgICAgc3RydWN0dXJlZENsb25lKHZhbHVlKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb250ZXh0LmFkZElzc3VlKGBJbnZhbGlkIGlucHV0OiBWYWx1ZSBtdXN0IGJlIGNvbXBhdGlibGUgd2l0aCBzdHJ1Y3R1cmVkQ2xvbmUgYWxnb3JpdGhtOiAke2Vycm9yfWApXG4gICAgfVxuICAgIHJldHVybiB2YWx1ZVxuICB9LCBzY2hlbWEpXG59XG5cbi8qKiBUcmFuc2Zvcm1zIGEgcGFyc2VkIHZhbHVlIGludG8gYW4gYXJyYXkgaWYgaXQgaXMgbm90IGFscmVhZHkgb25lLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFycmF5YWJsZTxUIGV4dGVuZHMgaXMuWm9kVHlwZT4oc2NoZW1hOiBUKTogaXMuWm9kUHJlcHJvY2VzczxUPiB7XG4gIHJldHVybiBpcy5wcmVwcm9jZXNzKCh2YWx1ZSkgPT4ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICByZXR1cm4gW3ZhbHVlXVxuICAgIHJldHVybiB2YWx1ZVxuICB9LCBzY2hlbWEpXG59XG5cbi8qKiBUcmFuc2Zvcm1zIGEgQ0xJIGFyZ3VtZW50cyBzdHJpbmcgaW50byBhbiBvYmplY3Qgb3IgYXJyYXkuICovXG5leHBvcnQgZnVuY3Rpb24gY2xpYWJsZTxUIGV4dGVuZHMgaXMuWm9kVHlwZT4oc2NoZW1hOiBULCBvcHRpb25zPzogUGFyc2VBcmdzT3B0aW9ucyk6IGlzLlpvZFByZXByb2Nlc3M8VD4ge1xuICByZXR1cm4gaXMucHJlcHJvY2VzcygodmFsdWUsIGNvbnRleHQpID0+IHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBjb25zdCBhcmdzID0gW11cbiAgICAgIGxldCBjdXJyZW50ID0gXCJcIlxuICAgICAgbGV0IHF1b3RlZCA9IFwiXCJcbiAgICAgIGxldCBlc2NhcGUgPSBmYWxzZVxuICAgICAgbGV0IHF1b3RlcyA9IGZhbHNlXG4gICAgICBmb3IgKGNvbnN0IGNoYXIgb2YgdmFsdWUpIHtcbiAgICAgICAgaWYgKGVzY2FwZSkge1xuICAgICAgICAgIGN1cnJlbnQgKz0gY2hhclxuICAgICAgICAgIGVzY2FwZSA9IGZhbHNlXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBpZiAoKHF1b3RlZCA9PT0gJ1wiJykgJiYgKGNoYXIgPT09IFwiXFxcXFwiKSkge1xuICAgICAgICAgIGVzY2FwZSA9IHRydWVcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGlmICgoIXF1b3RlZCkgJiYgKChjaGFyID09PSAnXCInKSB8fCAoY2hhciA9PT0gXCInXCIpKSkge1xuICAgICAgICAgIHF1b3RlZCA9IGNoYXJcbiAgICAgICAgICBxdW90ZXMgPSB0cnVlXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBpZiAocXVvdGVkID09PSBjaGFyKSB7XG4gICAgICAgICAgcXVvdGVkID0gXCJcIlxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgaWYgKCghcXVvdGVkKSAmJiAoY2hhciA9PT0gXCIgXCIpKSB7XG4gICAgICAgICAgaWYgKGN1cnJlbnQgfHwgcXVvdGVzKSB7XG4gICAgICAgICAgICBhcmdzLnB1c2goY3VycmVudClcbiAgICAgICAgICAgIGN1cnJlbnQgPSBcIlwiXG4gICAgICAgICAgICBxdW90ZXMgPSBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnQgKz0gY2hhclxuICAgICAgfVxuICAgICAgaWYgKHF1b3RlZCkge1xuICAgICAgICBjb250ZXh0LmFkZElzc3VlKGBVbmNsb3NlZCBxdW90ZTogJHtxdW90ZWR9JHtjdXJyZW50fWApXG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgfVxuICAgICAgaWYgKGN1cnJlbnQgfHwgcXVvdGVzKVxuICAgICAgICBhcmdzLnB1c2goY3VycmVudClcbiAgICAgIHJldHVybiBvcHRpb25zID8gcGFyc2VBcmdzKGFyZ3MsIG9wdGlvbnMpIDogYXJnc1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWVcbiAgfSwgc2NoZW1hKVxufVxuXG4vKiogUGFyc2VzIGEgcmVndWxhciBleHByZXNzaW9uIGJhY2sgaW50byBhIGBSZWdFeHBgLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2V4PFQgZXh0ZW5kcyBpcy5ab2RUeXBlPihzY2hlbWE6IFQpOiBpcy5ab2RQcmVwcm9jZXNzPFQ+IHtcbiAgY29uc3QgZGVmaW5pdGlvbiA9IC9eXFwvKD88cGF0dGVybj4uKj8pXFwvKD88ZmxhZ3M+W2RnaW1zdXZ5XSopJC9zXG4gIHJldHVybiBpcy5wcmVwcm9jZXNzKCh2YWx1ZSkgPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGNvbnN0IGdyb3VwcyA9IHZhbHVlLm1hdGNoKGRlZmluaXRpb24pPy5ncm91cHNcbiAgICAgIGlmIChncm91cHMpIHtcbiAgICAgICAgY29uc3QgeyBwYXR0ZXJuLCBmbGFncyB9ID0gZ3JvdXBzXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAocGF0dGVybiwgZmxhZ3MpXG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZVxuICB9LCBzY2hlbWEpXG59XG5cbi8qKiBQYXJzZXMgYSBkYXRlIHN0cmluZyBiYWNrIGludG8gYSBgRGF0ZWAuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0ZTxUIGV4dGVuZHMgaXMuWm9kVHlwZT4oc2NoZW1hOiBUKTogaXMuWm9kUHJlcHJvY2VzczxUPiB7XG4gIHJldHVybiBpcy5wcmVwcm9jZXNzKCh2YWx1ZSkgPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh2YWx1ZSlcbiAgICAgIGlmICghTnVtYmVyLmlzTmFOKGRhdGUuZ2V0VGltZSgpKSlcbiAgICAgICAgcmV0dXJuIGRhdGVcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlXG4gIH0sIHNjaGVtYSlcbn1cblxuLyoqIFBhcnNlcyBhIGR1cmF0aW9uIHN0cmluZyBpbnRvIG1pbGxpc2Vjb25kcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkdXJhdGlvbjxUIGV4dGVuZHMgaXMuWm9kVHlwZT4oc2NoZW1hOiBUKTogaXMuWm9kUHJlcHJvY2VzczxUPiB7XG4gIHJldHVybiBpcy5wcmVwcm9jZXNzKCh2YWx1ZSkgPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGNvbnN0IGdyb3VwcyA9IHZhbHVlLm1hdGNoKC9eXFxzKig/Oig/PGRheXM+XFxkKylkKD86YXlzPyk/KT9cXHMqKD86KD88aG91cnM+XFxkKyloKD86KD86b3UpP3JzPyk/KT9cXHMqKD86KD88bWludXRlcz5cXGQrKW0oPzppbig/OnV0ZSk/cz8pPyk/XFxzKig/Oig/PHNlY29uZHM+XFxkKylzKD86ZWMoPzpvbmQpP3M/KT8pP1xccyooPzooPzxtaWxsaXNlY29uZHM+XFxkKykoPzptKD86aWxsaSk/cyg/OmVjKD86b25kKT9zPyk/KT8pP1xccyokLyk/Lmdyb3Vwc1xuICAgICAgaWYgKGdyb3Vwcykge1xuICAgICAgICBsZXQgeyBkYXlzID0gMCwgaG91cnMgPSAwLCBtaW51dGVzID0gMCwgc2Vjb25kcyA9IDAsIG1pbGxpc2Vjb25kcyA9IDAgfSA9IE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhncm91cHMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBba2V5LCBOdW1iZXIodmFsdWUpXSkuZmlsdGVyKChbXywgdmFsdWVdKSA9PiBOdW1iZXIuaXNGaW5pdGUodmFsdWUpKSlcbiAgICAgICAgaG91cnMgKz0gZGF5cyAqIDI0XG4gICAgICAgIG1pbnV0ZXMgKz0gaG91cnMgKiA2MFxuICAgICAgICBzZWNvbmRzICs9IG1pbnV0ZXMgKiA2MFxuICAgICAgICBtaWxsaXNlY29uZHMgKz0gc2Vjb25kcyAqIDEwMDBcbiAgICAgICAgcmV0dXJuIG1pbGxpc2Vjb25kc1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmFsdWVcbiAgfSwgc2NoZW1hKVxufVxuXG4vKiogVHlwZSBhbGlhcyBmb3IgdGltZXN0YW1wLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRpbWVzdGFtcChvcHRpb25zPzogeyBkZWZhdWx0PzogdHJ1ZSB9KTogaXMuWm9kRGVmYXVsdDxpcy5ab2ROdW1iZXJGb3JtYXQ+XG4vKiogVHlwZSBhbGlhcyBmb3IgdGltZXN0YW1wICh3aXRob3V0IGEgZGVmYXVsdCkuICovXG5leHBvcnQgZnVuY3Rpb24gdGltZXN0YW1wKG9wdGlvbnM6IHsgZGVmYXVsdDogZmFsc2UgfSk6IGlzLlpvZE51bWJlckZvcm1hdFxuLyoqIFR5cGUgYWxpYXMgZm9yIHRpbWVzdGFtcC4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0aW1lc3RhbXAob3B0aW9ucz86IHsgZGVmYXVsdD86IHRydWUgfSB8IHsgZGVmYXVsdDogZmFsc2UgfSk6IGlzLlpvZE51bWJlckZvcm1hdCB8IGlzLlpvZERlZmF1bHQ8aXMuWm9kTnVtYmVyRm9ybWF0PlxuZXhwb3J0IGZ1bmN0aW9uIHRpbWVzdGFtcCh7IGRlZmF1bHQ6IGRlZmF1bHRzID0gdHJ1ZSB9ID0ge30pOiBpcy5ab2ROdW1iZXJGb3JtYXQgfCBpcy5ab2REZWZhdWx0PGlzLlpvZE51bWJlckZvcm1hdD4ge1xuICByZXR1cm4gZGVmYXVsdHMgPyBpcy5pbnQoKS5taW4oMCkuZGVmYXVsdCgoKSA9PiBEYXRlLm5vdygpKSA6IGlzLmludCgpLm1pbigwKVxufVxuXG4vKiogVHlwZSBhbGlhcyBmb3IgcHJpbWl0aXZlIHZhbHVlcy4gKi9cbmV4cG9ydCBjb25zdCBwcmltaXRpdmUgPSBpcy51bmlvbihbaXMuc3RyaW5nKCksIGlzLm51bWJlcigpLCBpcy5iaWdpbnQoKSwgaXMuYm9vbGVhbigpLCBpcy51bmRlZmluZWQoKSwgaXMubnVsbCgpLCBpcy5kYXRlKCksIGlzLmluc3RhbmNlb2YoRXJyb3IpXSkgYXMgaXMuWm9kVW5pb248XG4gIHJlYWRvbmx5IFtpcy5ab2RTdHJpbmcsIGlzLlpvZE51bWJlciwgaXMuWm9kQmlnSW50LCBpcy5ab2RCb29sZWFuLCBpcy5ab2RVbmRlZmluZWQsIGlzLlpvZE51bGwsIGlzLlpvZERhdGUsIGlzLlpvZEN1c3RvbTxFcnJvciwgRXJyb3I+XVxuPlxuXG4vKiogVHlwZSBhbGlhcyBmb3IgdHlwZWQgYXJyYXlzLiAqL1xuZXhwb3J0IGNvbnN0IHR5cGVkQXJyYXkgPSBpcy51bmlvbihbXG4gIGlzLmluc3RhbmNlb2YoSW50OEFycmF5KSxcbiAgaXMuaW5zdGFuY2VvZihVaW50OEFycmF5KSxcbiAgaXMuaW5zdGFuY2VvZihVaW50OENsYW1wZWRBcnJheSksXG4gIGlzLmluc3RhbmNlb2YoSW50MTZBcnJheSksXG4gIGlzLmluc3RhbmNlb2YoVWludDE2QXJyYXkpLFxuICBpcy5pbnN0YW5jZW9mKEludDMyQXJyYXkpLFxuICBpcy5pbnN0YW5jZW9mKFVpbnQzMkFycmF5KSxcbiAgaXMuaW5zdGFuY2VvZihGbG9hdDE2QXJyYXkpLFxuICBpcy5pbnN0YW5jZW9mKEZsb2F0MzJBcnJheSksXG4gIGlzLmluc3RhbmNlb2YoRmxvYXQ2NEFycmF5KSxcbiAgaXMuaW5zdGFuY2VvZihCaWdJbnQ2NEFycmF5KSxcbiAgaXMuaW5zdGFuY2VvZihCaWdVaW50NjRBcnJheSksXG5dKSBhcyBpcy5ab2RVbmlvbjxcbiAgcmVhZG9ubHkgW1xuICAgIGlzLlpvZEN1c3RvbTxJbnQ4QXJyYXksIEludDhBcnJheT4sXG4gICAgaXMuWm9kQ3VzdG9tPFVpbnQ4QXJyYXksIFVpbnQ4QXJyYXk+LFxuICAgIGlzLlpvZEN1c3RvbTxVaW50OENsYW1wZWRBcnJheSwgVWludDhDbGFtcGVkQXJyYXk+LFxuICAgIGlzLlpvZEN1c3RvbTxJbnQxNkFycmF5LCBJbnQxNkFycmF5PixcbiAgICBpcy5ab2RDdXN0b208VWludDE2QXJyYXksIFVpbnQxNkFycmF5PixcbiAgICBpcy5ab2RDdXN0b208SW50MzJBcnJheSwgSW50MzJBcnJheT4sXG4gICAgaXMuWm9kQ3VzdG9tPFVpbnQzMkFycmF5LCBVaW50MzJBcnJheT4sXG4gICAgaXMuWm9kQ3VzdG9tPEZsb2F0MTZBcnJheSwgRmxvYXQxNkFycmF5PixcbiAgICBpcy5ab2RDdXN0b208RmxvYXQzMkFycmF5LCBGbG9hdDMyQXJyYXk+LFxuICAgIGlzLlpvZEN1c3RvbTxGbG9hdDY0QXJyYXksIEZsb2F0NjRBcnJheT4sXG4gICAgaXMuWm9kQ3VzdG9tPEJpZ0ludDY0QXJyYXksIEJpZ0ludDY0QXJyYXk+LFxuICAgIGlzLlpvZEN1c3RvbTxCaWdVaW50NjRBcnJheSwgQmlnVWludDY0QXJyYXk+LFxuICBdXG4+XG5cbi8qKiBTdXBwb3J0ZWQgcHJvdG9jb2xzIGZvciB7QGxpbmtjb2RlIHVybH0gdHlwZSBhbGlhcy4gKi9cbmNvbnN0IHByb3RvY29scyA9IFtcImh0dHBzP1wiLCBcImZpbGVcIiwgXCJ3YXNtXCIsIFwiZGF0YVwiLCBcImJsb2JcIiwgXCJqc3JcIiwgXCJucG1cIl1cblxuLyoqIFR5cGUgYWxpYXMgZm9yIFVSTHMgd2l0aCBzdXBwb3J0ZWQgcHJvdG9jb2xzLiAqL1xuZXhwb3J0IGNvbnN0IHVybCA9IE9iamVjdC5hc3NpZ24oaXMudXJsKHsgcHJvdG9jb2w6IG5ldyBSZWdFeHAoYF4oPzoke3Byb3RvY29scy5qb2luKFwifFwiKX0pJGApLCBob3N0bmFtZTogLy4qLyB9KSwge1xuICB3aXRoKGFkZGl0aW9uYWw6IHN0cmluZ1tdLCB7IGhvc3RuYW1lID0gLy4qLywgLi4ub3B0aW9ucyB9OiBPbWl0PGlzLnouY29yZS4kWm9kVVJMUGFyYW1zLCBcInByb3RvY29sXCI+ID0ge30pIHtcbiAgICBjb25zdCBlc2NhcGVkID0gYWRkaXRpb25hbC5tYXAoKHByb3RvY29sKSA9PiBwcm90b2NvbC5yZXBsYWNlKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZywgXCJcXFxcJCZcIikpXG4gICAgcmV0dXJuIGlzLnVybCh7IC4uLm9wdGlvbnMsIHByb3RvY29sOiBuZXcgUmVnRXhwKGBeKD86JHtbLi4ucHJvdG9jb2xzLCAuLi5lc2NhcGVkXS5qb2luKFwifFwiKX0pJGApLCBob3N0bmFtZSB9KVxuICB9LFxufSkgYXMgaXMuWm9kVVJMICYge1xuICAvKiogQ3JlYXRlIGEgbmV3IHR5cGUgYWxpYXMgZm9yIFVSTHMgd2l0aCBhZGRpdGlvbmFsIGN1c3RvbSBzdXBwb3J0ZWQgcHJvdG9jb2xzLiAqL1xuICB3aXRoKGFkZGl0aW9uYWw6IHN0cmluZ1tdLCBwYXJhbXM/OiBPbWl0PGlzLnouY29yZS4kWm9kVVJMUGFyYW1zLCBcInByb3RvY29sXCI+KTogaXMuWm9kVVJMXG59XG5cbi8qKiBUeXBlIGFsaWFzIGZvciBib2R5IGluaXQuICovXG5leHBvcnQgY29uc3QgYm9keUluaXQgPSBpcy51bmlvbihbXG4gIGlzLnN0cmluZygpLFxuICBpcy5pbnN0YW5jZW9mKFN0cmluZyksXG4gIGlzLmluc3RhbmNlb2YoQmxvYiksXG4gIGlzLmluc3RhbmNlb2YoQXJyYXlCdWZmZXIpLFxuICBpcy5pbnN0YW5jZW9mKERhdGFWaWV3KSxcbiAgaXMuaW5zdGFuY2VvZihGb3JtRGF0YSksXG4gIGlzLmluc3RhbmNlb2YoUmVhZGFibGVTdHJlYW0pLFxuICBpcy5pbnN0YW5jZW9mKFVSTFNlYXJjaFBhcmFtcyksXG4gIHR5cGVkQXJyYXksXG5dKS5udWxsYWJsZSgpIGFzIGlzLlpvZE51bGxhYmxlPFxuICBpcy5ab2RVbmlvbjxcbiAgICByZWFkb25seSBbXG4gICAgICBpcy5ab2RTdHJpbmcsXG4gICAgICBpcy5ab2RDdXN0b208U3RyaW5nLCBTdHJpbmc+LFxuICAgICAgaXMuWm9kQ3VzdG9tPEJsb2IsIEJsb2I+LFxuICAgICAgaXMuWm9kQ3VzdG9tPEFycmF5QnVmZmVyLCBBcnJheUJ1ZmZlcj4sXG4gICAgICBpcy5ab2RDdXN0b208RGF0YVZpZXcsIERhdGFWaWV3PixcbiAgICAgIGlzLlpvZEN1c3RvbTxGb3JtRGF0YSwgRm9ybURhdGE+LFxuICAgICAgaXMuWm9kQ3VzdG9tPFJlYWRhYmxlU3RyZWFtLCBSZWFkYWJsZVN0cmVhbT4sXG4gICAgICBpcy5ab2RDdXN0b208VVJMU2VhcmNoUGFyYW1zLCBVUkxTZWFyY2hQYXJhbXM+LFxuICAgICAgdHlwZW9mIHR5cGVkQXJyYXksXG4gICAgXVxuICA+XG4+XG5cbi8qKlxuICogU3lzdGVtIHBlcm1pc3Npb25zIGZsYWdzLlxuICpcbiAqIFNlZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLmRlbm8uY29tL3J1bnRpbWUvZnVuZGFtZW50YWxzL3NlY3VyaXR5LyNzeXN0ZW0taW5mb3JtYXRpb259LlxuICovXG5jb25zdCBzeXNmbGFncyA9IFtcImhvc3RuYW1lXCIsIFwib3NSZWxlYXNlXCIsIFwib3NVcHRpbWVcIiwgXCJsb2FkYXZnXCIsIFwibmV0d29ya0ludGVyZmFjZXNcIiwgXCJzeXN0ZW1NZW1vcnlJbmZvXCIsIFwidWlkXCIsIFwiZ2lkXCJdIGFzIGNvbnN0XG5cbi8qKiBUeXBlIGFsaWFzIGZhY3RvcnkgZm9yIHBlcm1pc3Npb24gZGVzY3JpcHRvcnMuICovXG5mdW5jdGlvbiBwZXJtaXNzaW9uKHsgZXhwYW5kID0gZmFsc2UsIHVybHMgPSBmYWxzZSwgc3lzID0gZmFsc2UgfSA9IHt9KSB7XG4gIHJldHVybiBpcy5wcmVwcm9jZXNzKCh2YWx1ZSkgPT4ge1xuICAgIGlmICh2YWx1ZSA9PT0gXCJpbmhlcml0XCIpXG4gICAgICByZXR1cm4gdmFsdWVcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKVxuICAgICAgdmFsdWUgPSBbdmFsdWVdXG4gICAgaWYgKGV4cGFuZCkge1xuICAgICAgaWYgKCh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB8fCAodmFsdWUgPT09IGZhbHNlKSlcbiAgICAgICAgdmFsdWUgPSBbXVxuICAgIH1cbiAgICBpZiAodXJscyAmJiBBcnJheS5pc0FycmF5KHZhbHVlKSlcbiAgICAgIHZhbHVlID0gdmFsdWUubWFwKCh2YWx1ZSkgPT4gdmFsdWUgaW5zdGFuY2VvZiBVUkwgPyB2YWx1ZS5ocmVmIDogdmFsdWUpXG4gICAgcmV0dXJuIHZhbHVlXG4gIH0sIGlzLnVuaW9uKFtpcy5saXRlcmFsKFwiaW5oZXJpdFwiKSwgaXMuYm9vbGVhbigpLCBpcy5hcnJheShzeXMgPyBpcy5lbnVtKHN5c2ZsYWdzKSA6IGlzLnN0cmluZygpKV0pKVxufVxuXG4vKiogVHlwZSBhbGlhcyBmYWN0b3J5IGZvciBwZXJtaXNzaW9ucyBvYmplY3QuICovXG5leHBvcnQgZnVuY3Rpb24gcGVybWlzc2lvbnM8VCBleHRlbmRzIGtleW9mIERlbm8uUGVybWlzc2lvbk9wdGlvbnNPYmplY3Q+KFxuICBvcHRpb25zPzogeyBzZXQ/OiBUW107IGV4cGFuZD86IGZhbHNlIH0sXG4pOiBpcy5ab2RVbmlvbjxyZWFkb25seSBbaXMuWm9kT2JqZWN0PFJlY29yZDxULCBpcy5ab2RPcHRpb25hbDxpcy5ab2RQcmVwcm9jZXNzPGlzLlpvZFVuaW9uPFtpcy5ab2RMaXRlcmFsPFwiaW5oZXJpdFwiPiwgaXMuWm9kQm9vbGVhbiwgaXMuWm9kQXJyYXk8aXMuWm9kU3RyaW5nPl0+Pj4+PiwgaXMuWm9kVW5pb248cmVhZG9ubHkgW2lzLlpvZExpdGVyYWw8XCJpbmhlcml0XCI+LCBpcy5ab2RMaXRlcmFsPFwibm9uZVwiPl0+XT5cbi8qKiBUeXBlIGFsaWFzIGZhY3RvcnkgZm9yIHBlcm1pc3Npb25zIG9iamVjdC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwZXJtaXNzaW9uczxUIGV4dGVuZHMga2V5b2YgRGVuby5QZXJtaXNzaW9uT3B0aW9uc09iamVjdD4oXG4gIG9wdGlvbnM6IHsgc2V0PzogVFtdOyBleHBhbmQ6IHRydWUgfSxcbik6IGlzLlpvZFByZXByb2Nlc3M8aXMuWm9kT2JqZWN0PFJlY29yZDxULCBpcy5ab2RQcmVwcm9jZXNzPGlzLlpvZFVuaW9uPFtpcy5ab2RMaXRlcmFsPFwiaW5oZXJpdFwiPiwgaXMuWm9kTGl0ZXJhbDx0cnVlPiwgaXMuWm9kQXJyYXk8aXMuWm9kU3RyaW5nPl0+Pj4+PlxuZXhwb3J0IGZ1bmN0aW9uIHBlcm1pc3Npb25zPFQgZXh0ZW5kcyBrZXlvZiBEZW5vLlBlcm1pc3Npb25PcHRpb25zT2JqZWN0Pih7IHNldCA9IFtcInJlYWRcIiwgXCJ3cml0ZVwiLCBcIm5ldFwiLCBcImVudlwiLCBcInJ1blwiLCBcInN5c1wiLCBcImZmaVwiLCBcImltcG9ydFwiXSBhcyBUW10sIGV4cGFuZCA9IGZhbHNlIH06IHsgc2V0PzogVFtdOyBleHBhbmQ/OiBib29sZWFuIH0gPSB7fSkge1xuICBjb25zdCB2YWxpZGF0b3IgPSBpcy5vYmplY3Qoe1xuICAgIHJlYWQ6IHBlcm1pc3Npb24oeyBleHBhbmQsIHVybHM6IHRydWUgfSksXG4gICAgd3JpdGU6IHBlcm1pc3Npb24oeyBleHBhbmQsIHVybHM6IHRydWUgfSksXG4gICAgbmV0OiBwZXJtaXNzaW9uKHsgZXhwYW5kIH0pLFxuICAgIGVudjogcGVybWlzc2lvbih7IGV4cGFuZCB9KSxcbiAgICBzeXM6IHBlcm1pc3Npb24oeyBleHBhbmQsIHN5czogdHJ1ZSB9KSxcbiAgICBydW46IHBlcm1pc3Npb24oeyBleHBhbmQsIHVybHM6IHRydWUgfSksXG4gICAgZmZpOiBwZXJtaXNzaW9uKHsgZXhwYW5kLCB1cmxzOiB0cnVlIH0pLFxuICAgIGltcG9ydDogcGVybWlzc2lvbih7IGV4cGFuZCB9KSxcbiAgfSkucGljazxhbnk+KE9iamVjdC5mcm9tRW50cmllcyhzZXQubWFwKChrZXkpID0+IFtrZXksIHRydWVdKSkpLnN0cmljdCgpXG5cbiAgLy8gUmV0dXJuIGVpdGhlciB0aGUgY29tcGFjdCBvciBleHBhbmRlZCB2ZXJzaW9uXG4gIGlmICghZXhwYW5kKVxuICAgIHJldHVybiB2YWxpZGF0b3IucGFydGlhbCgpLm9yKGlzLnVuaW9uKFtpcy5saXRlcmFsKFwiaW5oZXJpdFwiKSwgaXMubGl0ZXJhbChcIm5vbmVcIildKSlcbiAgcmV0dXJuIGlzLnByZXByb2Nlc3MoKHZhbHVlKSA9PiB7XG4gICAgaWYgKCh2YWx1ZSA9PT0gXCJpbmhlcml0XCIpIHx8ICh2YWx1ZSA9PT0gXCJub25lXCIpKVxuICAgICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhzZXQubWFwKChrZXkpID0+IFtrZXksIHZhbHVlID09PSBcIm5vbmVcIiA/IFtdIDogdmFsdWVdKSlcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKVxuICAgICAgdmFsdWUgPSBbdmFsdWVdXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKVxuICAgICAgcmV0dXJuIHsgLi4uT2JqZWN0LmZyb21FbnRyaWVzKHNldC5tYXAoKHBlcm1pc3Npb24pID0+IFtwZXJtaXNzaW9uLCBmYWxzZV0pKSwgLi4uT2JqZWN0LmZyb21FbnRyaWVzKHZhbHVlLm1hcCgocGVybWlzc2lvbikgPT4gW3Blcm1pc3Npb24sIFwiaW5oZXJpdFwiXSkpIH1cbiAgICByZXR1cm4gdmFsdWVcbiAgfSwgdmFsaWRhdG9yKSBhcyB1bmtub3duXG59XG5cbi8qKiBUeXBlIGFsaWFzIGZvciBleHByZXNzaW9uIHN0cmluZ3MuICovXG5leHBvcnQgY29uc3QgZXhwcmVzc2lvbiA9IGlzLnN0cmluZygpLnJlZ2V4KC9cXCRcXHsuKlxcfS8pIGFzIGlzLlpvZFN0cmluZ1xuXG4vKiogVHlwZSBhbGlhcyBmb3IgY2FsbGFibGUgdmFsdWVzLiAqL1xuZXhwb3J0IGNvbnN0IGNhbGxhYmxlID0gaXMudW5rbm93bigpLnJlZmluZSgodmFsdWUpID0+IHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiLCB7IG1lc3NhZ2U6IFwiSW52YWxpZCBpbnB1dDogVmFsdWUgbXVzdCBiZSBjYWxsYWJsZVwiIH0pIGFzIHVua25vd24gYXMgaXMuWm9kQ3VzdG9tPEZ1bmN0aW9uLCB1bmtub3duPlxuXG4vKiogVHlwZSBhbGlhcyBmb3IgWm9kIHNjaGVtYXMuICovXG5leHBvcnQgY29uc3QgcGFyc2VyID0gaXMuY3VzdG9tKCh2YWx1ZSkgPT4gKHZhbHVlIGluc3RhbmNlb2YgaXMuWm9kVHlwZSkgfHwgKHZhbHVlICYmICh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIpICYmICh0eXBlb2YgKHZhbHVlIGFzIFJlY29yZDxQcm9wZXJ0eUtleSwgdW5rbm93bj4pLnBhcnNlID09PSBcImZ1bmN0aW9uXCIpKSwgeyBtZXNzYWdlOiBcIkludmFsaWQgaW5wdXQ6IFZhbHVlIG11c3QgYmUgYSBab2Qgc2NoZW1hXCIgfSkgYXMgaXMuWm9kQ3VzdG9tPFxuICBpcy5ab2RUeXBlLFxuICB1bmtub3duXG4+XG5cbi8qKiBPYmplY3QgdGhhdCByZXNzZW1ibGUgYSBab2RFcnJvci4gKi9cbnR5cGUgWm9kRXJyb3JMaWtlID0geyBwYXRoPzogUHJvcGVydHlLZXlbXTsgbWVzc2FnZTogc3RyaW5nOyBlcnJvcnM/OiBab2RFcnJvckxpa2VbXVtdIH1cblxuLyoqIENvbnZlcnQgYSBwcm9wZXJ0eSBrZXkgcGF0aCB0byBhIHN0cmluZy4gKi9cbmZ1bmN0aW9uIHRvUGF0aChwYXRoOiBQcm9wZXJ0eUtleVtdID0gW10pOiBzdHJpbmcge1xuICBjb25zdCBzZWdtZW50cyA9IFtdXG4gIGZvciAoY29uc3Qgc2VnbWVudCBvZiBwYXRoKSB7XG4gICAgaWYgKHR5cGVvZiBzZWdtZW50ID09PSBcIm51bWJlclwiKVxuICAgICAgc2VnbWVudHMucHVzaChgWyR7c2VnbWVudH1dYClcbiAgICBlbHNlIGlmICh0eXBlb2Ygc2VnbWVudCA9PT0gXCJzeW1ib2xcIiB8fCAvW15cXHckXS8udGVzdChTdHJpbmcoc2VnbWVudCkpKVxuICAgICAgc2VnbWVudHMucHVzaChgWyR7SlNPTi5zdHJpbmdpZnkoU3RyaW5nKHNlZ21lbnQpKX1dYClcbiAgICBlbHNlXG4gICAgICBzZWdtZW50cy5wdXNoKGAuJHtzZWdtZW50fWApXG4gIH1cbiAgcmV0dXJuIHNlZ21lbnRzLmpvaW4oXCJcIilcbn1cblxuLyoqIFByZXR0aWZ5IHZhbGlkYXRpb24gaXNzdWVzIGluIGEgbW9yZSBkZXRhaWxlZCB3YXkuICovXG5mdW5jdGlvbiBwcmV0dGlmeUlzc3VlKGVycm9yczogWm9kRXJyb3JMaWtlW10sIHsgaW5kZW50ID0gXCJcIiB9ID0ge30pOiBzdHJpbmcge1xuICBjb25zdCBsaW5lcyA9IFtdXG4gIGVycm9ycyA9IFsuLi5lcnJvcnNdLnNvcnQoKGEsIGIpID0+IChhLnBhdGggPz8gW10pLmxlbmd0aCAtIChiLnBhdGggPz8gW10pLmxlbmd0aClcbiAgZm9yIChjb25zdCBlcnJvciBvZiBlcnJvcnMpIHtcbiAgICBsaW5lcy5wdXNoKGAke2luZGVudH3inJggJHtlcnJvci5tZXNzYWdlfWApXG4gICAgaWYgKGVycm9yLnBhdGg/Lmxlbmd0aClcbiAgICAgIGxpbmVzLnB1c2goYCR7aW5kZW50fSAg4oaSIGF0ICR7dG9QYXRoKGVycm9yLnBhdGgpfWApXG4gICAgaWYgKGVycm9yLmVycm9ycz8ubGVuZ3RoKSB7XG4gICAgICBsaW5lcy5wdXNoKGAke2luZGVudH0gIOKGkiB0cmllZCB0byBmaXQgaW50byBvbmUgb2YgdGhlIGFsbG93ZWQgdHlwZXM6YClcbiAgICAgIGZvciAoY29uc3Qgc3ViZXJyb3Igb2YgZXJyb3IuZXJyb3JzKVxuICAgICAgICBsaW5lcy5wdXNoKHByZXR0aWZ5SXNzdWUoc3ViZXJyb3IsIHsgaW5kZW50OiBgJHtpbmRlbnR9ICAgICAgYCB9KS5yZXBsYWNlKFwiICDinJhcIiwgXCItIOKcmFwiKSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGxpbmVzLmpvaW4oXCJcXG5cIilcbn1cblxuLyoqIE9wdGlvbnMgZm9yIHtAbGlua2NvZGUgcGFyc2UoKX0uICovXG5leHBvcnQgdHlwZSBQYXJzZU9wdGlvbnMgPSB7XG4gIC8qKiBXaGV0aGVyIHRvIHBhcnNlIGFzeW5jaHJvbm91c2x5LiAqL1xuICBhc3luYz86IGJvb2xlYW5cbiAgLyoqIFdoZXRoZXIgdG8gdGhyb3cgYSBgWm9kRXJyb3JgIHJhdGhlciB0aGFuIGEgYFR5cGVFcnJvcmAgaW4gY2FzZSBvZiBmYWlsdXJlICovXG4gIHpvZEVycm9yPzogYm9vbGVhblxufVxuXG4vKiogUGFyc2UgYSBzY2hlbWEgc3luY2hyb25vdXNseS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZTxUIGV4dGVuZHMgaXMuWm9kVHlwZT4oc2NoZW1hOiBULCB2YWx1ZXM6IHVua25vd24sIG9wdGlvbnM/OiBPbWl0PFBhcnNlT3B0aW9ucywgXCJhc3luY1wiPiAmIHsgYXN5bmM/OiBmYWxzZSB9KTogaXMuaW5mZXI8VD5cbi8qKiBQYXJzZSBhIHNjaGVtYSBhc3luY2hyb25vdXNseS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZTxUIGV4dGVuZHMgaXMuWm9kVHlwZT4oc2NoZW1hOiBULCB2YWx1ZXM6IHVua25vd24sIG9wdGlvbnM6IE9taXQ8UGFyc2VPcHRpb25zLCBcImFzeW5jXCI+ICYgeyBhc3luYzogdHJ1ZSB9KTogUHJvbWlzZTxpcy5pbmZlcjxUPj5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZTxUIGV4dGVuZHMgaXMuWm9kVHlwZT4oc2NoZW1hOiBULCB2YWx1ZXM6IHVua25vd24sIHsgYXN5bmMgPSBmYWxzZSwgem9kRXJyb3IgfTogUGFyc2VPcHRpb25zID0ge30pIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXN5bmNcbiAgICAgID8gc2NoZW1hLnBhcnNlQXN5bmModmFsdWVzKS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgaWYgKCghKGVycm9yIGluc3RhbmNlb2YgaXMuWm9kRXJyb3IpKSB8fCB6b2RFcnJvcilcbiAgICAgICAgICB0aHJvdyBlcnJvclxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBWYWxpZGF0aW9uIGZhaWxlZDogXFxuJHtwcmV0dGlmeUlzc3VlKGVycm9yLmlzc3Vlcyl9YClcbiAgICAgIH0pXG4gICAgICA6IHNjaGVtYS5wYXJzZSh2YWx1ZXMpXG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKCghKGVycm9yIGluc3RhbmNlb2YgaXMuWm9kRXJyb3IpKSB8fCB6b2RFcnJvcilcbiAgICAgIHRocm93IGVycm9yXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgVmFsaWRhdGlvbiBmYWlsZWQ6IFxcbiR7cHJldHRpZnlJc3N1ZShlcnJvci5pc3N1ZXMpfWApXG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1Ysa0RBQWtEO0FBRWxELFNBQVMsU0FBUyxRQUFRLHNCQUFxQjtBQUMvQyxZQUFZLFFBQVEsV0FBVTtBQUM5QixPQUFPLEtBQUssRUFBRSxNQUFNLFdBQVU7QUFHOUIsK0VBQStFLEdBQy9FLE9BQU8sU0FBUyxTQUErQixNQUFTO0VBQ3RELE9BQU8sR0FBRyxVQUFVLENBQUMsQ0FBQztJQUNwQixPQUFPLFNB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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lowlighter/is",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./mod.js",
|
|
6
6
|
"types": "./mod.d.ts",
|
|
@@ -17,9 +17,13 @@
|
|
|
17
17
|
}
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@
|
|
21
|
-
"@
|
|
22
|
-
"@
|
|
20
|
+
"@std/cli": "npm:@jsr/std__cli@^1.0.32",
|
|
21
|
+
"@std/collections": "npm:@jsr/std__collections@^1.3.0",
|
|
22
|
+
"@zod/zod": "npm:@jsr/zod__zod@^4.6.5",
|
|
23
23
|
"@lowlighter/testing": "^6.0.0"
|
|
24
|
+
},
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "git+https://github.com/lowlighter/libs.git"
|
|
24
28
|
}
|
|
25
29
|
}
|