@mnaoumov/obsidian-lib 6.0.4 → 6.1.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.
@@ -36,6 +36,7 @@ import {
36
36
  } from "@mnaoumov/typescript-lib/path";
37
37
  import { oneOf } from "@mnaoumov/typescript-lib/reg-exp";
38
38
  import { Platform } from "obsidian";
39
+ import { t } from "./i18n/i18n.mjs";
39
40
  function isValidationMessageHolder(value) {
40
41
  return value.validationMessage !== void 0;
41
42
  }
@@ -44,6 +45,23 @@ const WINDOWS_UNSAFE_PATH_CHARS = /[*\\/<>:|?"]/g;
44
45
  const UNIX_UNSAFE_PATH_CHARS = /[\0/]/g;
45
46
  const WINDOWS_RESERVED_NAME_REG_EXP = /^(?:AUX|COM[1-9]|CON|LPT[1-9]|NUL|PRN)$/i;
46
47
  const WINDOWS_TRAILING_CHARS_REG_EXP = /[ .]+$/;
48
+ const FIRST_NON_CONTROL_CHAR = " ";
49
+ function getFileNameValidationMessage(name, isWindows) {
50
+ if (name === "") {
51
+ return t(($) => $.obsidianLib.validation.emptyName);
52
+ }
53
+ if (hasControlChars(name)) {
54
+ return t(($) => $.obsidianLib.validation.controlCharacter, { name });
55
+ }
56
+ const unsafeChars = new Set(name.match(getOsAndObsidianUnsafePathCharsRegExp(isWindows)));
57
+ if (unsafeChars.size > 0) {
58
+ return t(($) => $.obsidianLib.validation.unsafeCharacters, { characters: [...unsafeChars].join(" "), name });
59
+ }
60
+ if (hasWindowsTrailingChars(name)) {
61
+ return t(($) => $.obsidianLib.validation.trailingCharacters, { name });
62
+ }
63
+ return isWindowsReservedName(name) ? t(($) => $.obsidianLib.validation.windowsReservedName, { name }) : "";
64
+ }
47
65
  function getOsAndObsidianUnsafePathCharsRegExp(isWindows) {
48
66
  return oneOf([
49
67
  getOsUnsafePathCharsRegExp(isWindows),
@@ -54,6 +72,9 @@ function getOsUnsafePathCharsRegExp(isWindows) {
54
72
  isWindows ??= Platform.isWin;
55
73
  return isWindows ? WINDOWS_UNSAFE_PATH_CHARS : UNIX_UNSAFE_PATH_CHARS;
56
74
  }
75
+ function getPathValidationMessage(path, isWindows) {
76
+ return path.split("/").map((segment) => getFileNameValidationMessage(segment, isWindows)).find(Boolean) ?? "";
77
+ }
57
78
  function hasWindowsTrailingChars(name) {
58
79
  return WINDOWS_TRAILING_CHARS_REG_EXP.test(name);
59
80
  }
@@ -64,15 +85,25 @@ function isWindowsReservedName(name) {
64
85
  function trimWindowsTrailingChars(name) {
65
86
  return name.replace(WINDOWS_TRAILING_CHARS_REG_EXP, "");
66
87
  }
88
+ function hasControlChars(name) {
89
+ for (const char of name) {
90
+ if (char < FIRST_NON_CONTROL_CHAR) {
91
+ return true;
92
+ }
93
+ }
94
+ return false;
95
+ }
67
96
  export {
68
97
  OBSIDIAN_UNSAFE_FILENAME_CHARS,
69
98
  UNIX_UNSAFE_PATH_CHARS,
70
99
  WINDOWS_UNSAFE_PATH_CHARS,
100
+ getFileNameValidationMessage,
71
101
  getOsAndObsidianUnsafePathCharsRegExp,
72
102
  getOsUnsafePathCharsRegExp,
103
+ getPathValidationMessage,
73
104
  hasWindowsTrailingChars,
74
105
  isValidationMessageHolder,
75
106
  isWindowsReservedName,
76
107
  trimWindowsTrailingChars
77
108
  };
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92YWxpZGF0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBWYWxpZGF0aW9uIHV0aWxpdGllcy5cbiAqL1xuXG5pbXBvcnQge1xuICBiYXNlbmFtZSxcbiAgZXh0bmFtZVxufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5pbXBvcnQgeyBvbmVPZiB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9yZWctZXhwJztcbmltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG4vKipcbiAqIEhvbGRzIGEgdmFsaWRhdGlvbiBtZXNzYWdlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRpb25NZXNzYWdlSG9sZGVyIHtcbiAgLyoqXG4gICAqIEEgdmFsaWRhdGlvbiBtZXNzYWdlLlxuICAgKi9cbiAgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUeXBlIGd1YXJkIHRvIGNoZWNrIGlmIGEgdmFsdWUgaXMgYSB2YWxpZGF0aW9uIG1lc3NhZ2UgaG9sZGVyLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWUgaXMgYSB2YWxpZGF0aW9uIG1lc3NhZ2UgaG9sZGVyLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRhdGlvbk1lc3NhZ2VIb2xkZXIodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBWYWxpZGF0aW9uTWVzc2FnZUhvbGRlciB7XG4gIHJldHVybiAodmFsdWUgYXMgUGFydGlhbDxWYWxpZGF0aW9uTWVzc2FnZUhvbGRlcj4pLnZhbGlkYXRpb25NZXNzYWdlICE9PSB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogTWF0Y2hlcyBjaGFyYWN0ZXJzIHRoYXQgYXJlIG5vdCBzYWZlIHRvIHVzZSBpbiBmaWxlIG5hbWVzIHdpdGhpbiBPYnNpZGlhbi5cbiAqL1xuZXhwb3J0IGNvbnN0IE9CU0lESUFOX1VOU0FGRV9GSUxFTkFNRV9DSEFSUyA9IC9bI15bXFxdfF0vZztcblxuLyoqXG4gKiBXaW5kb3dzLXNwZWNpZmljIHVuc2FmZSBmaWxlIG5hbWUgcGF0aCBjaGFyYWN0ZXJzLlxuICovXG5leHBvcnQgY29uc3QgV0lORE9XU19VTlNBRkVfUEFUSF9DSEFSUyA9IC9bKlxcXFwvPD46fD9cIl0vZztcblxuLyoqXG4gKiBVbml4LXNwZWNpZmljIHVuc2FmZSBmaWxlIG5hbWUgcGF0aCBjaGFyYWN0ZXJzLlxuICovXG5leHBvcnQgY29uc3QgVU5JWF9VTlNBRkVfUEFUSF9DSEFSUyA9IC9bXFwwL10vZztcblxuLyoqXG4gKiBUaGUgTVMtRE9TIGRldmljZSBuYW1lcyBXaW5kb3dzIHN0aWxsIHJlZnVzZXMgYXMgYSBmaWxlIG5hbWUsIHdpdGggb3Igd2l0aG91dCBhbiBleHRlbnNpb24uXG4gKlxuICogYENPTklOJGAgLyBgQ09OT1VUJGAgYW5kIHRoZSBzdXBlcnNjcmlwdCBgQ09NwrJgIGZvcm1zIGFyZSBkZWxpYmVyYXRlbHkgYWJzZW50OiB0aGV5IGFyZSBhY2NlcHRlZCBieVxuICogZXZlcnkgV2luZG93cyB2ZXJzaW9uIHRoYXQgcnVucyBPYnNpZGlhbiwgYW5kIG1hdGNoaW5nIHRoZW0gd291bGQgcmVuYW1lIGZpbGVzIHRoYXQgd29yay5cbiAqXG4gKiBVbmxpa2UgdGhlIGV4cG9ydGVkIGNoYXJhY3RlciBzZXRzIGFib3ZlLCB0aGlzIGNhcnJpZXMgbm8gYGdgIGZsYWcsIHNvIGB0ZXN0YCBtYXkgYmUgY2FsbGVkIG9uIGl0XG4gKiByZXBlYXRlZGx5IOKAlCBhIGBnYC1mbGFnZ2VkIHJlZ2V4cCBhZHZhbmNlcyBgbGFzdEluZGV4YCBhbmQgYW5zd2VycyBkaWZmZXJlbnRseSBvbiBjb25zZWN1dGl2ZSBjYWxscy5cbiAqL1xuY29uc3QgV0lORE9XU19SRVNFUlZFRF9OQU1FX1JFR19FWFAgPSAvXig/OkFVWHxDT01bMS05XXxDT058TFBUWzEtOV18TlVMfFBSTikkL2k7XG5cbi8qKlxuICogVGhlIHRyYWlsaW5nIGRvdHMgYW5kIHNwYWNlcyBXaW5kb3dzIHN0cmlwcyBmcm9tIGEgbmFtZSBiZWZvcmUgaXQgZG9lcyBhbnl0aGluZyBlbHNlIHdpdGggaXQuXG4gKi9cbmNvbnN0IFdJTkRPV1NfVFJBSUxJTkdfQ0hBUlNfUkVHX0VYUCA9IC9bIC5dKyQvO1xuXG4vKipcbiAqIFJldHVybnMgYSByZWdleHAgbWF0Y2hpbmcgYWxsIHVuc2FmZSBjaGFyYWN0ZXJzIGluIGZpbGUgbmFtZXMvcGF0aHMuXG4gKlxuICogSW5jbHVkZXMgYm90aCBPUy1zcGVjaWZpYyByZXN0cmljdGlvbnMgYW5kIE9ic2lkaWFuLXNwZWNpZmljIG9uZXMuXG4gKlxuICogQHBhcmFtIGlzV2luZG93cyAtIFdoZXRoZXIgdG8gaW5jbHVkZSBXaW5kb3dzLXNwZWNpZmljIHJlc3RyaWN0aW9ucy4gRGVmYXVsdHMgdG8gYFBsYXRmb3JtLmlzV2luYC5cbiAqIEByZXR1cm5zIEEgcmVnZXhwIG1hdGNoaW5nIGFsbCB1bnNhZmUgY2hhcmFjdGVycyBpbiBmaWxlIG5hbWVzL3BhdGhzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3NBbmRPYnNpZGlhblVuc2FmZVBhdGhDaGFyc1JlZ0V4cChpc1dpbmRvd3M/OiBib29sZWFuKTogUmVnRXhwIHtcbiAgcmV0dXJuIG9uZU9mKFtcbiAgICBnZXRPc1Vuc2FmZVBhdGhDaGFyc1JlZ0V4cChpc1dpbmRvd3MpLFxuICAgIE9CU0lESUFOX1VOU0FGRV9GSUxFTkFNRV9DSEFSU1xuICBdKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgcmVnZXhwIG1hdGNoaW5nIGNoYXJhY3RlcnMgdGhhdCBhcmUgbm90IHNhZmUgdG8gdXNlIGluIGZpbGUgbmFtZXMvcGF0aHMgYXQgdGhlIE9TIGxldmVsLlxuICpcbiAqIEBwYXJhbSBpc1dpbmRvd3MgLSBXaGV0aGVyIHRvIGluY2x1ZGUgV2luZG93cy1zcGVjaWZpYyByZXN0cmljdGlvbnMuIERlZmF1bHRzIHRvIGBQbGF0Zm9ybS5pc1dpbmAuXG4gKiBAcmV0dXJucyBBIHJlZ2V4cCBtYXRjaGluZyBjaGFyYWN0ZXJzIHRoYXQgYXJlIG5vdCBzYWZlIHRvIHVzZSBpbiBmaWxlIG5hbWVzL3BhdGhzIGF0IHRoZSBPUyBsZXZlbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE9zVW5zYWZlUGF0aENoYXJzUmVnRXhwKGlzV2luZG93cz86IGJvb2xlYW4pOiBSZWdFeHAge1xuICBpc1dpbmRvd3MgPz89IFBsYXRmb3JtLmlzV2luO1xuICByZXR1cm4gaXNXaW5kb3dzID8gV0lORE9XU19VTlNBRkVfUEFUSF9DSEFSUyA6IFVOSVhfVU5TQUZFX1BBVEhfQ0hBUlM7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSBuYW1lIGVuZHMgd2l0aCB0aGUgZG90cyBvciBzcGFjZXMgV2luZG93cyByZWZ1c2VzLlxuICpcbiAqIEFuc3dlcnMgZm9yIFdpbmRvd3MgcmVnYXJkbGVzcyBvZiB0aGUgcGxhdGZvcm0gaW4gdXNlOiBhIHZhdWx0IGlzIHN5bmNlZCwgc28gdGhlIHJ1bGVzIHRoYXQgbWF0dGVyIGFyZVxuICogbm90IG5lY2Vzc2FyaWx5IHRob3NlIG9mIHRoZSBtYWNoaW5lIGFza2luZy5cbiAqXG4gKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIHRvIGNoZWNrLiBBIHNpbmdsZSBwYXRoIHNlZ21lbnQsIG5vdCBhIHBhdGguXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG5hbWUgZW5kcyB3aXRoIGEgZG90IG9yIGEgc3BhY2UsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzV2luZG93c1RyYWlsaW5nQ2hhcnMobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBXSU5ET1dTX1RSQUlMSU5HX0NIQVJTX1JFR19FWFAudGVzdChuYW1lKTtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIG5hbWUgaXMgb25lIG9mIHRoZSBNUy1ET1MgZGV2aWNlIG5hbWVzIFdpbmRvd3MgcmVmdXNlcy5cbiAqXG4gKiBUd28gc3RlcHMgdGhlIGNhbGxlciB3b3VsZCBvdGhlcndpc2UgaGF2ZSB0byBrbm93IGFib3V0IGhhcHBlbiBoZXJlOiB0cmFpbGluZyBkb3RzIGFuZCBzcGFjZXMgYXJlXG4gKiB0cmltbWVkIEJFRk9SRSB0aGUgdGVzdCwgYmVjYXVzZSBXaW5kb3dzIHN0cmlwcyB0aGVtIGJlZm9yZSBkZWNpZGluZyBhbmQgYENPTiBgIGlzIHRoZXJlZm9yZSBhc1xuICogcmVzZXJ2ZWQgYXMgYENPTmA7IGFuZCB0aGUgZXh0ZW5zaW9uIGlzIGRyb3BwZWQsIGJlY2F1c2UgYENPTi5tZGAgaXMgcmVzZXJ2ZWQgdG9vLlxuICpcbiAqIGBDT05JTiRgIC8gYENPTk9VVCRgIGFuZCB0aGUgc3VwZXJzY3JpcHQgYENPTcKyYCBmb3JtcyBhcmUgZGVsaWJlcmF0ZWx5IE5PVCByZXNlcnZlZDogdGhleSBhcmUgYWNjZXB0ZWRcbiAqIGJ5IGV2ZXJ5IFdpbmRvd3MgdmVyc2lvbiB0aGF0IHJ1bnMgT2JzaWRpYW4sIGFuZCBtYXRjaGluZyB0aGVtIHdvdWxkIHJlbmFtZSBmaWxlcyB0aGF0IHdvcmsuXG4gKlxuICogQW5zd2VycyBmb3IgV2luZG93cyByZWdhcmRsZXNzIG9mIHRoZSBwbGF0Zm9ybSBpbiB1c2U6IGEgdmF1bHQgaXMgc3luY2VkLCBzbyB0aGUgcnVsZXMgdGhhdCBtYXR0ZXIgYXJlXG4gKiBub3QgbmVjZXNzYXJpbHkgdGhvc2Ugb2YgdGhlIG1hY2hpbmUgYXNraW5nLlxuICpcbiAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgdG8gY2hlY2suIEEgc2luZ2xlIHBhdGggc2VnbWVudCwgd2l0aCBvciB3aXRob3V0IGl0cyBleHRlbnNpb24uXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG5hbWUgaXMgcmVzZXJ2ZWQsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNXaW5kb3dzUmVzZXJ2ZWROYW1lKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCB0cmltbWVkTmFtZSA9IHRyaW1XaW5kb3dzVHJhaWxpbmdDaGFycyhuYW1lKTtcbiAgcmV0dXJuIFdJTkRPV1NfUkVTRVJWRURfTkFNRV9SRUdfRVhQLnRlc3QoYmFzZW5hbWUodHJpbW1lZE5hbWUsIGV4dG5hbWUodHJpbW1lZE5hbWUpKSk7XG59XG5cbi8qKlxuICogUmVtb3ZlcyB0aGUgdHJhaWxpbmcgZG90cyBhbmQgc3BhY2VzIFdpbmRvd3MgcmVmdXNlcyBmcm9tIHRoZSBlbmQgb2YgYSBuYW1lLlxuICpcbiAqIFRyaW0gYmVmb3JlIHRlc3RpbmcgZm9yIGEgcmVzZXJ2ZWQgbmFtZSwgbmV2ZXIgYWZ0ZXI6IHRyaW1taW5nIGFmdGVyd2FyZHMgdHVybnMgYW4gYWNjZXB0ZWQgYENPTiBgIGludG9cbiAqIGEgcmVqZWN0ZWQgYENPTmAuIHtAbGluayBpc1dpbmRvd3NSZXNlcnZlZE5hbWV9IGFscmVhZHkgZG9lcyB0aGlzIGludGVybmFsbHkuXG4gKlxuICogQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSB0byB0cmltLiBBIHNpbmdsZSBwYXRoIHNlZ21lbnQsIG5vdCBhIHBhdGguXG4gKiBAcmV0dXJucyBUaGUgbmFtZSB3aXRob3V0IGl0cyB0cmFpbGluZyBkb3RzIGFuZCBzcGFjZXMsIHdoaWNoIG1heSBiZSBlbXB0eS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyaW1XaW5kb3dzVHJhaWxpbmdDaGFycyhuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gbmFtZS5yZXBsYWNlKFdJTkRPV1NfVFJBSUxJTkdfQ0hBUlNfUkVHX0VYUCwgJycpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU1BO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxhQUFhO0FBQ3RCLFNBQVMsZ0JBQWdCO0FBa0JsQixTQUFTLDBCQUEwQixPQUFrRDtBQUMxRixTQUFRLE1BQTJDLHNCQUFzQjtBQUMzRTtBQUtPLE1BQU0saUNBQWlDO0FBS3ZDLE1BQU0sNEJBQTRCO0FBS2xDLE1BQU0seUJBQXlCO0FBV3RDLE1BQU0sZ0NBQWdDO0FBS3RDLE1BQU0saUNBQWlDO0FBVWhDLFNBQVMsc0NBQXNDLFdBQTZCO0FBQ2pGLFNBQU8sTUFBTTtBQUFBLElBQ1gsMkJBQTJCLFNBQVM7QUFBQSxJQUNwQztBQUFBLEVBQ0YsQ0FBQztBQUNIO0FBUU8sU0FBUywyQkFBMkIsV0FBNkI7QUFDdEUsZ0JBQWMsU0FBUztBQUN2QixTQUFPLFlBQVksNEJBQTRCO0FBQ2pEO0FBV08sU0FBUyx3QkFBd0IsTUFBdUI7QUFDN0QsU0FBTywrQkFBK0IsS0FBSyxJQUFJO0FBQ2pEO0FBa0JPLFNBQVMsc0JBQXNCLE1BQXVCO0FBQzNELFFBQU0sY0FBYyx5QkFBeUIsSUFBSTtBQUNqRCxTQUFPLDhCQUE4QixLQUFLLFNBQVMsYUFBYSxRQUFRLFdBQVcsQ0FBQyxDQUFDO0FBQ3ZGO0FBV08sU0FBUyx5QkFBeUIsTUFBc0I7QUFDN0QsU0FBTyxLQUFLLFFBQVEsZ0NBQWdDLEVBQUU7QUFDeEQ7IiwibmFtZXMiOltdfQ==
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92YWxpZGF0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBWYWxpZGF0aW9uIHV0aWxpdGllcy5cbiAqL1xuXG5pbXBvcnQge1xuICBiYXNlbmFtZSxcbiAgZXh0bmFtZVxufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5pbXBvcnQgeyBvbmVPZiB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9yZWctZXhwJztcbmltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyB0IH0gZnJvbSAnLi9pMThuL2kxOG4udHMnO1xuXG4vKipcbiAqIEhvbGRzIGEgdmFsaWRhdGlvbiBtZXNzYWdlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRpb25NZXNzYWdlSG9sZGVyIHtcbiAgLyoqXG4gICAqIEEgdmFsaWRhdGlvbiBtZXNzYWdlLlxuICAgKi9cbiAgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUeXBlIGd1YXJkIHRvIGNoZWNrIGlmIGEgdmFsdWUgaXMgYSB2YWxpZGF0aW9uIG1lc3NhZ2UgaG9sZGVyLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWUgaXMgYSB2YWxpZGF0aW9uIG1lc3NhZ2UgaG9sZGVyLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRhdGlvbk1lc3NhZ2VIb2xkZXIodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBWYWxpZGF0aW9uTWVzc2FnZUhvbGRlciB7XG4gIHJldHVybiAodmFsdWUgYXMgUGFydGlhbDxWYWxpZGF0aW9uTWVzc2FnZUhvbGRlcj4pLnZhbGlkYXRpb25NZXNzYWdlICE9PSB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogTWF0Y2hlcyBjaGFyYWN0ZXJzIHRoYXQgYXJlIG5vdCBzYWZlIHRvIHVzZSBpbiBmaWxlIG5hbWVzIHdpdGhpbiBPYnNpZGlhbi5cbiAqL1xuZXhwb3J0IGNvbnN0IE9CU0lESUFOX1VOU0FGRV9GSUxFTkFNRV9DSEFSUyA9IC9bI15bXFxdfF0vZztcblxuLyoqXG4gKiBXaW5kb3dzLXNwZWNpZmljIHVuc2FmZSBmaWxlIG5hbWUgcGF0aCBjaGFyYWN0ZXJzLlxuICovXG5leHBvcnQgY29uc3QgV0lORE9XU19VTlNBRkVfUEFUSF9DSEFSUyA9IC9bKlxcXFwvPD46fD9cIl0vZztcblxuLyoqXG4gKiBVbml4LXNwZWNpZmljIHVuc2FmZSBmaWxlIG5hbWUgcGF0aCBjaGFyYWN0ZXJzLlxuICovXG5leHBvcnQgY29uc3QgVU5JWF9VTlNBRkVfUEFUSF9DSEFSUyA9IC9bXFwwL10vZztcblxuLyoqXG4gKiBUaGUgTVMtRE9TIGRldmljZSBuYW1lcyBXaW5kb3dzIHN0aWxsIHJlZnVzZXMgYXMgYSBmaWxlIG5hbWUsIHdpdGggb3Igd2l0aG91dCBhbiBleHRlbnNpb24uXG4gKlxuICogYENPTklOJGAgLyBgQ09OT1VUJGAgYW5kIHRoZSBzdXBlcnNjcmlwdCBgQ09NwrJgIGZvcm1zIGFyZSBkZWxpYmVyYXRlbHkgYWJzZW50OiB0aGV5IGFyZSBhY2NlcHRlZCBieVxuICogZXZlcnkgV2luZG93cyB2ZXJzaW9uIHRoYXQgcnVucyBPYnNpZGlhbiwgYW5kIG1hdGNoaW5nIHRoZW0gd291bGQgcmVuYW1lIGZpbGVzIHRoYXQgd29yay5cbiAqXG4gKiBVbmxpa2UgdGhlIGV4cG9ydGVkIGNoYXJhY3RlciBzZXRzIGFib3ZlLCB0aGlzIGNhcnJpZXMgbm8gYGdgIGZsYWcsIHNvIGB0ZXN0YCBtYXkgYmUgY2FsbGVkIG9uIGl0XG4gKiByZXBlYXRlZGx5IOKAlCBhIGBnYC1mbGFnZ2VkIHJlZ2V4cCBhZHZhbmNlcyBgbGFzdEluZGV4YCBhbmQgYW5zd2VycyBkaWZmZXJlbnRseSBvbiBjb25zZWN1dGl2ZSBjYWxscy5cbiAqL1xuY29uc3QgV0lORE9XU19SRVNFUlZFRF9OQU1FX1JFR19FWFAgPSAvXig/OkFVWHxDT01bMS05XXxDT058TFBUWzEtOV18TlVMfFBSTikkL2k7XG5cbi8qKlxuICogVGhlIHRyYWlsaW5nIGRvdHMgYW5kIHNwYWNlcyBXaW5kb3dzIHN0cmlwcyBmcm9tIGEgbmFtZSBiZWZvcmUgaXQgZG9lcyBhbnl0aGluZyBlbHNlIHdpdGggaXQuXG4gKi9cbmNvbnN0IFdJTkRPV1NfVFJBSUxJTkdfQ0hBUlNfUkVHX0VYUCA9IC9bIC5dKyQvO1xuXG4vKipcbiAqIFRoZSBmaXJzdCBjaGFyYWN0ZXIgYWZ0ZXIgdGhlIEMwIGNvbnRyb2wgcmFuZ2UsIFUrMDAwMCB0byBVKzAwMUYsIHdoaWNoIFdpbmRvd3MgcmVmdXNlcyBpbiBhIG5hbWUuXG4gKi9cbmNvbnN0IEZJUlNUX05PTl9DT05UUk9MX0NIQVIgPSAnICc7XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgc2luZ2xlIGZpbGUgb3IgZm9sZGVyIG5hbWUgYWdhaW5zdCBldmVyeSBuYW1pbmcgcnVsZSB0aGlzIG1vZHVsZSBvd25zLlxuICpcbiAqIFRoZSBydWxlcywgY2hlY2tlZCBpbiB0aGlzIG9yZGVyLCBhbmQgdGhlIGZpcnN0IG9uZSBicm9rZW4gbmFtZXMgdGhlIG1lc3NhZ2U6XG4gKlxuICogMS4gVGhlIG5hbWUgaXMgbm90IGVtcHR5LlxuICogMi4gSXQgaG9sZHMgbm8gY29udHJvbCBjaGFyYWN0ZXIgKFUrMDAwMCB0byBVKzAwMUYpLlxuICogMy4gSXQgaG9sZHMgbm9uZSBvZiB0aGUgY2hhcmFjdGVycyB7QGxpbmsgZ2V0T3NBbmRPYnNpZGlhblVuc2FmZVBhdGhDaGFyc1JlZ0V4cH0gbWF0Y2hlcy5cbiAqIDQuIEl0IGRvZXMgbm90IGVuZCB3aXRoIGEgZG90IG9yIGEgc3BhY2UgKHtAbGluayBoYXNXaW5kb3dzVHJhaWxpbmdDaGFyc30pLlxuICogNS4gSXQgaXMgbm90IGFuIE1TLURPUyBkZXZpY2UgbmFtZSAoe0BsaW5rIGlzV2luZG93c1Jlc2VydmVkTmFtZX0pLCB3aXRoIG9yIHdpdGhvdXQgYW4gZXh0ZW5zaW9uLlxuICpcbiAqIE9ubHkgcnVsZSAzIGRlcGVuZHMgb24gYGlzV2luZG93c2AuIFJ1bGVzIDIsIDQgYW5kIDUgYXBwbHkgb24gZXZlcnkgcGxhdGZvcm0sIGJlY2F1c2UgYSB2YXVsdCBpcyBzeW5jZWQsXG4gKiBhbmQgYSBuYW1lIGNyZWF0ZWQgb24gbWFjT1Mgb3IgTGludXggdGhhdCBXaW5kb3dzIHJlZnVzZXMgYnJlYWtzIHRoZSB2YXVsdCB0aGVyZS4gVGhlIGNoYXJhY3RlciBzZXQgc3RheXNcbiAqIHBsYXRmb3JtLWRlcGVuZGVudCwgYmVjYXVzZSBhIG5hbWUgc3VjaCBhcyBgTWVldGluZzogbm90ZXNgIGlzIGNvbW1vbiBvbiBtYWNPUywgd2hlcmUgaXQgd29ya3MuXG4gKlxuICogQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSB0byB2YWxpZGF0ZS4gQSBzaW5nbGUgcGF0aCBzZWdtZW50LCB3aXRoIG9yIHdpdGhvdXQgaXRzIGV4dGVuc2lvbi5cbiAqIEBwYXJhbSBpc1dpbmRvd3MgLSBXaGV0aGVyIHRvIGluY2x1ZGUgdGhlIFdpbmRvd3Mtc3BlY2lmaWMgY2hhcmFjdGVyIHNldC4gRGVmYXVsdHMgdG8gYFBsYXRmb3JtLmlzV2luYC5cbiAqIEByZXR1cm5zIEEgbWVzc2FnZSBkZXNjcmliaW5nIHRoZSBmaXJzdCBicm9rZW4gcnVsZSwgb3IgYW4gZW1wdHkgc3RyaW5nIGlmIHRoZSBuYW1lIGlzIHZhbGlkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsZU5hbWVWYWxpZGF0aW9uTWVzc2FnZShuYW1lOiBzdHJpbmcsIGlzV2luZG93cz86IGJvb2xlYW4pOiBzdHJpbmcge1xuICBpZiAobmFtZSA9PT0gJycpIHtcbiAgICByZXR1cm4gdCgoJCkgPT4gJC5vYnNpZGlhbkxpYi52YWxpZGF0aW9uLmVtcHR5TmFtZSk7XG4gIH1cblxuICBpZiAoaGFzQ29udHJvbENoYXJzKG5hbWUpKSB7XG4gICAgcmV0dXJuIHQoKCQpID0+ICQub2JzaWRpYW5MaWIudmFsaWRhdGlvbi5jb250cm9sQ2hhcmFjdGVyLCB7IG5hbWUgfSk7XG4gIH1cblxuICBjb25zdCB1bnNhZmVDaGFycyA9IG5ldyBTZXQobmFtZS5tYXRjaChnZXRPc0FuZE9ic2lkaWFuVW5zYWZlUGF0aENoYXJzUmVnRXhwKGlzV2luZG93cykpKTtcbiAgaWYgKHVuc2FmZUNoYXJzLnNpemUgPiAwKSB7XG4gICAgcmV0dXJuIHQoKCQpID0+ICQub2JzaWRpYW5MaWIudmFsaWRhdGlvbi51bnNhZmVDaGFyYWN0ZXJzLCB7IGNoYXJhY3RlcnM6IFsuLi51bnNhZmVDaGFyc10uam9pbignICcpLCBuYW1lIH0pO1xuICB9XG5cbiAgaWYgKGhhc1dpbmRvd3NUcmFpbGluZ0NoYXJzKG5hbWUpKSB7XG4gICAgcmV0dXJuIHQoKCQpID0+ICQub2JzaWRpYW5MaWIudmFsaWRhdGlvbi50cmFpbGluZ0NoYXJhY3RlcnMsIHsgbmFtZSB9KTtcbiAgfVxuXG4gIHJldHVybiBpc1dpbmRvd3NSZXNlcnZlZE5hbWUobmFtZSkgPyB0KCgkKSA9PiAkLm9ic2lkaWFuTGliLnZhbGlkYXRpb24ud2luZG93c1Jlc2VydmVkTmFtZSwgeyBuYW1lIH0pIDogJyc7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIHJlZ2V4cCBtYXRjaGluZyBhbGwgdW5zYWZlIGNoYXJhY3RlcnMgaW4gZmlsZSBuYW1lcy9wYXRocy5cbiAqXG4gKiBJbmNsdWRlcyBib3RoIE9TLXNwZWNpZmljIHJlc3RyaWN0aW9ucyBhbmQgT2JzaWRpYW4tc3BlY2lmaWMgb25lcy5cbiAqXG4gKiBAcGFyYW0gaXNXaW5kb3dzIC0gV2hldGhlciB0byBpbmNsdWRlIFdpbmRvd3Mtc3BlY2lmaWMgcmVzdHJpY3Rpb25zLiBEZWZhdWx0cyB0byBgUGxhdGZvcm0uaXNXaW5gLlxuICogQHJldHVybnMgQSByZWdleHAgbWF0Y2hpbmcgYWxsIHVuc2FmZSBjaGFyYWN0ZXJzIGluIGZpbGUgbmFtZXMvcGF0aHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRPc0FuZE9ic2lkaWFuVW5zYWZlUGF0aENoYXJzUmVnRXhwKGlzV2luZG93cz86IGJvb2xlYW4pOiBSZWdFeHAge1xuICByZXR1cm4gb25lT2YoW1xuICAgIGdldE9zVW5zYWZlUGF0aENoYXJzUmVnRXhwKGlzV2luZG93cyksXG4gICAgT0JTSURJQU5fVU5TQUZFX0ZJTEVOQU1FX0NIQVJTXG4gIF0pO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSByZWdleHAgbWF0Y2hpbmcgY2hhcmFjdGVycyB0aGF0IGFyZSBub3Qgc2FmZSB0byB1c2UgaW4gZmlsZSBuYW1lcy9wYXRocyBhdCB0aGUgT1MgbGV2ZWwuXG4gKlxuICogQHBhcmFtIGlzV2luZG93cyAtIFdoZXRoZXIgdG8gaW5jbHVkZSBXaW5kb3dzLXNwZWNpZmljIHJlc3RyaWN0aW9ucy4gRGVmYXVsdHMgdG8gYFBsYXRmb3JtLmlzV2luYC5cbiAqIEByZXR1cm5zIEEgcmVnZXhwIG1hdGNoaW5nIGNoYXJhY3RlcnMgdGhhdCBhcmUgbm90IHNhZmUgdG8gdXNlIGluIGZpbGUgbmFtZXMvcGF0aHMgYXQgdGhlIE9TIGxldmVsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3NVbnNhZmVQYXRoQ2hhcnNSZWdFeHAoaXNXaW5kb3dzPzogYm9vbGVhbik6IFJlZ0V4cCB7XG4gIGlzV2luZG93cyA/Pz0gUGxhdGZvcm0uaXNXaW47XG4gIHJldHVybiBpc1dpbmRvd3MgPyBXSU5ET1dTX1VOU0FGRV9QQVRIX0NIQVJTIDogVU5JWF9VTlNBRkVfUEFUSF9DSEFSUztcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgZXZlcnkgc2VnbWVudCBvZiBhIHZhdWx0IHBhdGggd2l0aCB7QGxpbmsgZ2V0RmlsZU5hbWVWYWxpZGF0aW9uTWVzc2FnZX0uXG4gKlxuICogQHBhcmFtIHBhdGggLSBUaGUgdmF1bHQtcmVsYXRpdmUgcGF0aCB0byB2YWxpZGF0ZSwgd2l0aCBgL2AgYXMgdGhlIHNlcGFyYXRvci5cbiAqIEBwYXJhbSBpc1dpbmRvd3MgLSBXaGV0aGVyIHRvIGluY2x1ZGUgdGhlIFdpbmRvd3Mtc3BlY2lmaWMgY2hhcmFjdGVyIHNldC4gRGVmYXVsdHMgdG8gYFBsYXRmb3JtLmlzV2luYC5cbiAqIEByZXR1cm5zIFRoZSBtZXNzYWdlIGZvciB0aGUgZmlyc3QgaW52YWxpZCBzZWdtZW50LCBvciBhbiBlbXB0eSBzdHJpbmcgaWYgZXZlcnkgc2VnbWVudCBpcyB2YWxpZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBhdGhWYWxpZGF0aW9uTWVzc2FnZShwYXRoOiBzdHJpbmcsIGlzV2luZG93cz86IGJvb2xlYW4pOiBzdHJpbmcge1xuICByZXR1cm4gcGF0aC5zcGxpdCgnLycpLm1hcCgoc2VnbWVudCkgPT4gZ2V0RmlsZU5hbWVWYWxpZGF0aW9uTWVzc2FnZShzZWdtZW50LCBpc1dpbmRvd3MpKS5maW5kKEJvb2xlYW4pID8/ICcnO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgbmFtZSBlbmRzIHdpdGggdGhlIGRvdHMgb3Igc3BhY2VzIFdpbmRvd3MgcmVmdXNlcy5cbiAqXG4gKiBBbnN3ZXJzIGZvciBXaW5kb3dzIHJlZ2FyZGxlc3Mgb2YgdGhlIHBsYXRmb3JtIGluIHVzZTogYSB2YXVsdCBpcyBzeW5jZWQsIHNvIHRoZSBydWxlcyB0aGF0IG1hdHRlciBhcmVcbiAqIG5vdCBuZWNlc3NhcmlseSB0aG9zZSBvZiB0aGUgbWFjaGluZSBhc2tpbmcuXG4gKlxuICogQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSB0byBjaGVjay4gQSBzaW5nbGUgcGF0aCBzZWdtZW50LCBub3QgYSBwYXRoLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBuYW1lIGVuZHMgd2l0aCBhIGRvdCBvciBhIHNwYWNlLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc1dpbmRvd3NUcmFpbGluZ0NoYXJzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gV0lORE9XU19UUkFJTElOR19DSEFSU19SRUdfRVhQLnRlc3QobmFtZSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSBuYW1lIGlzIG9uZSBvZiB0aGUgTVMtRE9TIGRldmljZSBuYW1lcyBXaW5kb3dzIHJlZnVzZXMuXG4gKlxuICogVHdvIHN0ZXBzIHRoZSBjYWxsZXIgd291bGQgb3RoZXJ3aXNlIGhhdmUgdG8ga25vdyBhYm91dCBoYXBwZW4gaGVyZTogdHJhaWxpbmcgZG90cyBhbmQgc3BhY2VzIGFyZVxuICogdHJpbW1lZCBCRUZPUkUgdGhlIHRlc3QsIGJlY2F1c2UgV2luZG93cyBzdHJpcHMgdGhlbSBiZWZvcmUgZGVjaWRpbmcgYW5kIGBDT04gYCBpcyB0aGVyZWZvcmUgYXNcbiAqIHJlc2VydmVkIGFzIGBDT05gOyBhbmQgdGhlIGV4dGVuc2lvbiBpcyBkcm9wcGVkLCBiZWNhdXNlIGBDT04ubWRgIGlzIHJlc2VydmVkIHRvby5cbiAqXG4gKiBgQ09OSU4kYCAvIGBDT05PVVQkYCBhbmQgdGhlIHN1cGVyc2NyaXB0IGBDT03CsmAgZm9ybXMgYXJlIGRlbGliZXJhdGVseSBOT1QgcmVzZXJ2ZWQ6IHRoZXkgYXJlIGFjY2VwdGVkXG4gKiBieSBldmVyeSBXaW5kb3dzIHZlcnNpb24gdGhhdCBydW5zIE9ic2lkaWFuLCBhbmQgbWF0Y2hpbmcgdGhlbSB3b3VsZCByZW5hbWUgZmlsZXMgdGhhdCB3b3JrLlxuICpcbiAqIEFuc3dlcnMgZm9yIFdpbmRvd3MgcmVnYXJkbGVzcyBvZiB0aGUgcGxhdGZvcm0gaW4gdXNlOiBhIHZhdWx0IGlzIHN5bmNlZCwgc28gdGhlIHJ1bGVzIHRoYXQgbWF0dGVyIGFyZVxuICogbm90IG5lY2Vzc2FyaWx5IHRob3NlIG9mIHRoZSBtYWNoaW5lIGFza2luZy5cbiAqXG4gKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIHRvIGNoZWNrLiBBIHNpbmdsZSBwYXRoIHNlZ21lbnQsIHdpdGggb3Igd2l0aG91dCBpdHMgZXh0ZW5zaW9uLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBuYW1lIGlzIHJlc2VydmVkLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzV2luZG93c1Jlc2VydmVkTmFtZShuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgdHJpbW1lZE5hbWUgPSB0cmltV2luZG93c1RyYWlsaW5nQ2hhcnMobmFtZSk7XG4gIHJldHVybiBXSU5ET1dTX1JFU0VSVkVEX05BTUVfUkVHX0VYUC50ZXN0KGJhc2VuYW1lKHRyaW1tZWROYW1lLCBleHRuYW1lKHRyaW1tZWROYW1lKSkpO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgdGhlIHRyYWlsaW5nIGRvdHMgYW5kIHNwYWNlcyBXaW5kb3dzIHJlZnVzZXMgZnJvbSB0aGUgZW5kIG9mIGEgbmFtZS5cbiAqXG4gKiBUcmltIGJlZm9yZSB0ZXN0aW5nIGZvciBhIHJlc2VydmVkIG5hbWUsIG5ldmVyIGFmdGVyOiB0cmltbWluZyBhZnRlcndhcmRzIHR1cm5zIGFuIGFjY2VwdGVkIGBDT04gYCBpbnRvXG4gKiBhIHJlamVjdGVkIGBDT05gLiB7QGxpbmsgaXNXaW5kb3dzUmVzZXJ2ZWROYW1lfSBhbHJlYWR5IGRvZXMgdGhpcyBpbnRlcm5hbGx5LlxuICpcbiAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgdG8gdHJpbS4gQSBzaW5nbGUgcGF0aCBzZWdtZW50LCBub3QgYSBwYXRoLlxuICogQHJldHVybnMgVGhlIG5hbWUgd2l0aG91dCBpdHMgdHJhaWxpbmcgZG90cyBhbmQgc3BhY2VzLCB3aGljaCBtYXkgYmUgZW1wdHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmltV2luZG93c1RyYWlsaW5nQ2hhcnMobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIG5hbWUucmVwbGFjZShXSU5ET1dTX1RSQUlMSU5HX0NIQVJTX1JFR19FWFAsICcnKTtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIG5hbWUgaG9sZHMgYSBjb250cm9sIGNoYXJhY3RlciwgVSswMDAwIHRvIFUrMDAxRi5cbiAqXG4gKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBuYW1lIGhvbGRzIGEgY29udHJvbCBjaGFyYWN0ZXIsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5mdW5jdGlvbiBoYXNDb250cm9sQ2hhcnMobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGZvciAoY29uc3QgY2hhciBvZiBuYW1lKSB7XG4gICAgaWYgKGNoYXIgPCBGSVJTVF9OT05fQ09OVFJPTF9DSEFSKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTUE7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLGFBQWE7QUFDdEIsU0FBUyxnQkFBZ0I7QUFFekIsU0FBUyxTQUFTO0FBa0JYLFNBQVMsMEJBQTBCLE9BQWtEO0FBQzFGLFNBQVEsTUFBMkMsc0JBQXNCO0FBQzNFO0FBS08sTUFBTSxpQ0FBaUM7QUFLdkMsTUFBTSw0QkFBNEI7QUFLbEMsTUFBTSx5QkFBeUI7QUFXdEMsTUFBTSxnQ0FBZ0M7QUFLdEMsTUFBTSxpQ0FBaUM7QUFLdkMsTUFBTSx5QkFBeUI7QUFxQnhCLFNBQVMsNkJBQTZCLE1BQWMsV0FBNkI7QUFDdEYsTUFBSSxTQUFTLElBQUk7QUFDZixXQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsWUFBWSxXQUFXLFNBQVM7QUFBQSxFQUNwRDtBQUVBLE1BQUksZ0JBQWdCLElBQUksR0FBRztBQUN6QixXQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsWUFBWSxXQUFXLGtCQUFrQixFQUFFLEtBQUssQ0FBQztBQUFBLEVBQ3JFO0FBRUEsUUFBTSxjQUFjLElBQUksSUFBSSxLQUFLLE1BQU0sc0NBQXNDLFNBQVMsQ0FBQyxDQUFDO0FBQ3hGLE1BQUksWUFBWSxPQUFPLEdBQUc7QUFDeEIsV0FBTyxFQUFFLENBQUMsTUFBTSxFQUFFLFlBQVksV0FBVyxrQkFBa0IsRUFBRSxZQUFZLENBQUMsR0FBRyxXQUFXLEVBQUUsS0FBSyxHQUFHLEdBQUcsS0FBSyxDQUFDO0FBQUEsRUFDN0c7QUFFQSxNQUFJLHdCQUF3QixJQUFJLEdBQUc7QUFDakMsV0FBTyxFQUFFLENBQUMsTUFBTSxFQUFFLFlBQVksV0FBVyxvQkFBb0IsRUFBRSxLQUFLLENBQUM7QUFBQSxFQUN2RTtBQUVBLFNBQU8sc0JBQXNCLElBQUksSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLFlBQVksV0FBVyxxQkFBcUIsRUFBRSxLQUFLLENBQUMsSUFBSTtBQUMxRztBQVVPLFNBQVMsc0NBQXNDLFdBQTZCO0FBQ2pGLFNBQU8sTUFBTTtBQUFBLElBQ1gsMkJBQTJCLFNBQVM7QUFBQSxJQUNwQztBQUFBLEVBQ0YsQ0FBQztBQUNIO0FBUU8sU0FBUywyQkFBMkIsV0FBNkI7QUFDdEUsZ0JBQWMsU0FBUztBQUN2QixTQUFPLFlBQVksNEJBQTRCO0FBQ2pEO0FBU08sU0FBUyx5QkFBeUIsTUFBYyxXQUE2QjtBQUNsRixTQUFPLEtBQUssTUFBTSxHQUFHLEVBQUUsSUFBSSxDQUFDLFlBQVksNkJBQTZCLFNBQVMsU0FBUyxDQUFDLEVBQUUsS0FBSyxPQUFPLEtBQUs7QUFDN0c7QUFXTyxTQUFTLHdCQUF3QixNQUF1QjtBQUM3RCxTQUFPLCtCQUErQixLQUFLLElBQUk7QUFDakQ7QUFrQk8sU0FBUyxzQkFBc0IsTUFBdUI7QUFDM0QsUUFBTSxjQUFjLHlCQUF5QixJQUFJO0FBQ2pELFNBQU8sOEJBQThCLEtBQUssU0FBUyxhQUFhLFFBQVEsV0FBVyxDQUFDLENBQUM7QUFDdkY7QUFXTyxTQUFTLHlCQUF5QixNQUFzQjtBQUM3RCxTQUFPLEtBQUssUUFBUSxnQ0FBZ0MsRUFBRTtBQUN4RDtBQVFBLFNBQVMsZ0JBQWdCLE1BQXVCO0FBQzlDLGFBQVcsUUFBUSxNQUFNO0FBQ3ZCLFFBQUksT0FBTyx3QkFBd0I7QUFDakMsYUFBTztBQUFBLElBQ1Q7QUFBQSxFQUNGO0FBRUEsU0FBTztBQUNUOyIsIm5hbWVzIjpbXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mnaoumov/obsidian-lib",
3
- "version": "6.0.4",
3
+ "version": "6.1.0",
4
4
  "description": "Runtime library for Obsidian plugin development: plugin base classes, components, settings, modals, vault and metadata helpers.",
5
5
  "keywords": [
6
6
  "obsidian",