From 0f13f907141d0ad9bb439d131aca6d1d882421ee Mon Sep 17 00:00:00 2001 From: Adrian Mejia Date: Sun, 25 Oct 2020 13:49:46 -0400 Subject: [PATCH 01/33] feat(book): add chapter numbers --- book/readme.asc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/book/readme.asc b/book/readme.asc index 97660eb8..8c3416d0 100644 --- a/book/readme.asc +++ b/book/readme.asc @@ -12,6 +12,8 @@ Adrian Mejia :docinfo: :toc: :toclevels: 4 +:sectnums: +:chapter-label: :pagenums: :front-cover-image: image:cover.png[width=1050,height=1600] :icons: font From 8cd126d71a31473fefdbf0f0a9780cd7b128bcd6 Mon Sep 17 00:00:00 2001 From: Adrian Mejia Date: Tue, 27 Oct 2020 14:33:45 -0400 Subject: [PATCH 02/33] feat(book/linkedlist): linked lists techniques and common patterns --- .eslintrc.js | 19 +- book/content/part02/linked-list.asc | 303 +++++++- book/images/Find-the-largest-sum.png | Bin 17918 -> 17500 bytes .../Recursive-Fibonacci-call-tree-with-dp.png | Bin 20798 -> 22002 bytes book/images/Words-Permutations.png | Bin 45376 -> 49677 bytes book/images/cll-fast-slow-pointers.png | Bin 0 -> 139915 bytes book/images/cll.png | Bin 0 -> 72189 bytes book/images/course-schedule-examples.png | Bin 26285 -> 22504 bytes .../critical-connections-sol-examples.png | Bin 37090 -> 35639 bytes book/images/critical-path-examples.png | Bin 42278 -> 40870 bytes book/images/mll-3-levels.png | Bin 0 -> 31078 bytes book/images/sll-fast-slow-pointers.png | Bin 0 -> 24109 bytes book/images/sllx4.png | Bin 0 -> 5409 bytes .../daily-temperatures.spec.js | 1 + .../linkedlist-find-cycle-start.js | 39 ++ .../linkedlist-find-cycle-start.spec.js | 25 + .../linkedlist-flatten-multilevel.js | 45 ++ .../linkedlist-flatten-multilevel.spec.js | 79 +++ .../linkedlist-is-palindrome.js | 39 ++ .../linkedlist-is-palindrome.spec.js | 19 + book/interview-questions/max-subarray.data.js | 3 +- .../network-delay-time.spec.js | 6 +- book/interview-questions/recent-counter.js | 5 +- book/interview-questions/sort-colors.js | 4 +- package-lock.json | 647 +++++++++--------- package.json | 9 +- .../linked-lists/linked-list.js | 24 +- .../linked-lists/linked-list.spec.js | 19 + src/data-structures/linked-lists/node.js | 8 +- src/index.js | 2 + 30 files changed, 945 insertions(+), 351 deletions(-) create mode 100644 book/images/cll-fast-slow-pointers.png create mode 100644 book/images/cll.png create mode 100644 book/images/mll-3-levels.png create mode 100644 book/images/sll-fast-slow-pointers.png create mode 100644 book/images/sllx4.png create mode 100644 book/interview-questions/linkedlist-find-cycle-start.js create mode 100644 book/interview-questions/linkedlist-find-cycle-start.spec.js create mode 100644 book/interview-questions/linkedlist-flatten-multilevel.js create mode 100644 book/interview-questions/linkedlist-flatten-multilevel.spec.js create mode 100644 book/interview-questions/linkedlist-is-palindrome.js create mode 100644 book/interview-questions/linkedlist-is-palindrome.spec.js diff --git a/.eslintrc.js b/.eslintrc.js index ee4a630a..404d8807 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,24 +1,35 @@ module.exports = { extends: 'airbnb-base', env: { - jest: true + jest: true, }, + plugins: ['jest'], globals: { BigInt: true, }, + + // check package.json for files to include + // files: ['src/**/*.js', 'book/interview-questions/*.js'], + rules: { // https://github.com/airbnb/javascript/issues/1089 // https://stackoverflow.com/a/35637900/684957 // allow to add properties to arguments - 'no-param-reassign': [2, { 'props': false }], + 'no-param-reassign': [2, { props: false }], // https://eslint.org/docs/rules/no-plusplus // allows unary operators ++ and -- in the afterthought (final expression) of a for loop. - 'no-plusplus': [0, { 'allowForLoopAfterthoughts': true }], + 'no-plusplus': [0, { allowForLoopAfterthoughts: true }], 'no-continue': [0], // Allow for..of 'no-restricted-syntax': [0, 'ForOfStatement'], - } + + // jest plugin + // 'jest/no-disabled-tests': 'warn', + 'jest/no-focused-tests': 'error', + 'jest/no-identical-title': 'warn', + 'jest/valid-expect': 'warn', + }, }; diff --git a/book/content/part02/linked-list.asc b/book/content/part02/linked-list.asc index bba5d906..59ddac6c 100644 --- a/book/content/part02/linked-list.asc +++ b/book/content/part02/linked-list.asc @@ -35,10 +35,18 @@ In a singly linked list, each element or node is *connected* to the next one by Usually, a Linked List is referenced by the first element called *head* (or *root* node). Let's say that we have a list of strings with the following values: `"art" -> "dog" -> "cat"`. It would look something like the following image. .Singly Linked List Representation: each node has a reference (blue arrow) to the next one. -image::image19.png[image,width=498,height=97] +image::sllx4.png[] If you want to get the `cat` element from the example above, then the only way to get there is by using the `next` field on the head node. You would get `art` first, then use the next field recursively until you eventually get the `cat` element. +==== Circular Linked Lists + +Circular linked lists happen when the last node points to any node on the list, creating a loop. In the following illustration, you can see two circular linked lists. + +image:cll.png[Circular linked lists examples] + +One circular linked list happens when the last element points to the first element. Another kind of circular linked list is when the last node points to any node in the middle. There are some efficient algorithms to detect when the list has a loop or not. More on that later in this chapter. + [[doubly-linked-list]] ==== Doubly Linked List @@ -51,19 +59,14 @@ With a doubly-linked list, you can move not only forward but also backward. If y Finding an item on the linked list takes O(n) time. Because in the worst-case, you will have to iterate over the whole list. -==== Linked List vs. Array - -Arrays give you instant access to data anywhere in the collection using an index. However, Linked List visits nodes in sequential order. In the worst-case scenario, it takes _O(n)_ to get an element from a Linked List. You might be wondering: Isn’t an array always more efficient with _O(1)_ access time? It depends. - -We also have to understand the space complexity to see the trade-offs between arrays and linked lists. An array pre-allocates contiguous blocks of memory. If the array fillup, it has to create a larger array (usually 2x) and copy all the elements when it is getting full. That takes _O(n)_ to copy all the items over. On the other hand, LinkedList’s nodes only reserve precisely the amount of memory they need. They don’t have to be next to each other in RAM, nor are large chunks of memory is booked beforehand like arrays. Linked List is more on a "grow as you go" basis. *Linked list wins on memory usage over an array.* - -Another difference is that adding/deleting at the beginning of an array takes `O(n)`; however, the linked list is a constant operation `O(1)` as we will implement later. *Linked List has better runtime than an array for inserting items at the beginning.* ==== Implementing a Linked List We are going to implement a doubly linked list. First, let's start with the constructor. -The only must-have field on the constructor is the `first` or head reference. If you want to insert it to the back of the list in constant time, then `last` pointer is needed. Everything else is complimentary. +TIP: if you want to implement a singly linked list instead, it's the same in most parts, but without the setting the `previous` pointers. + +The only must-have field on the constructor is the `first` or head reference. If you want to insert data to the back of the list in constant time, then the `last` pointer is needed. Everything else is complimentary. .Linked List's constructor [source, javascript] @@ -201,7 +204,7 @@ As you can see, when we want to remove the first node, we make the 2nd element ( ===== Deleting element from the tail -Removing the last element from the list would require iterate from the head until we find the last one, that’s `O(n)`. But, since we referenced the last element, we can do it in _O(1)_ instead! +Removing the last element from the list would require iterate from the head until we find the last one: `O(n)`. But, since we referenced the last element, we can do it in _O(1)_ instead! .Removing the last element from the list. image::dll-remove-last.png[] @@ -216,7 +219,7 @@ include::{codedir}/data-structures/linked-lists/linked-list.js[tag=removeLast, i ---- -The code is very similar to `removeFirst`, but instead of first, we update `last` reference, and instead of nullifying `previous`, we nullify its `next` reference. +The code is very similar to `removeFirst`, but instead of first, we update `last` reference, and instead of nullifying `previous`, we null out the `next` pointer. ===== Deleting element from the middle @@ -239,7 +242,13 @@ Notice that we are using the `get` method to get the node at the current positio (((Tables, Linear DS, Array/Lists complexities))) -==== Linked List Complexity vs. Array Complexity +==== Linked List vs. Array + +Arrays give you instant access to data anywhere in the collection using an index. However, Linked List visits nodes in sequential order. In the worst-case scenario, it takes _O(n)_ to get an element from a Linked List. You might be wondering: Isn’t an array always more efficient with _O(1)_ access time? It depends. + +We also have to understand the space complexity to see the trade-offs between arrays and linked lists. An array pre-allocates contiguous blocks of memory. If the array fillup, it has to create a larger array (usually 2x) and copy all the elements when it is getting full. That takes _O(n)_ to copy all the items over. On the other hand, LinkedList’s nodes only reserve precisely the amount of memory they need. They don’t have to be next to each other in RAM, nor are large chunks of memory is booked beforehand like arrays. Linked List is more on a "grow as you go" basis. *Linked list wins on memory usage over an array.* + +Another difference is that adding/deleting at the beginning of an array takes `O(n)`; however, the linked list is a constant operation `O(1)` as we will implement later. *Linked List has better runtime than an array for inserting items at the beginning.* // tag::table[] .Big O cheat sheet for Linked List and Array @@ -269,6 +278,276 @@ Comparing an array with a doubly-linked list, both have different use cases: For the next two linear data structures <> and <>, we are going to use a doubly-linked list to implement them. We could use an array as well, but since inserting/deleting from the start performs better with linked-lists, we will use that. +==== Linked List patterns for Interview Questions + +Most linked list problems are solved using 1 to 3 pointers. Sometimes we move them in tandem or individually. + +.Examples of problems that can be solved using multiple pointers: +- Detecting if the linked list is circular (has a loop). +- Finding the middle node of a linked list in 1-pass without any auxiliary data structure. +- Reversing the linked list in 1-pass without any auxiliary data structure. e.g. `1->2->3` to `3->2->1`. + +Let's do some examples! + +===== Fast/Slow Pointers + +One standard algorithm to detect loops in a linked list is fast/slow runner pointers (a.k.a The Tortoise 🐢 and the Hare🐇 or Floyd’s Algorithm). The slow pointer moves one node per iteration, while the fast pointer moves two nodes every time. You can see an example code below: + +.Fast/Slow pointers +[source, javascript] +---- +let fast = head, slow = head; +while (fast && fast.next) { + slow = slow.next; // slow moves 1 by 1. + fast = fast.next.next; // slow moves 2 by 2. +} +---- + +If the list has a loop, then at some point, both pointers will point to the same node. Take a look at the following image; take notice that both points to `node I` on the 8th iteration. + +image:cll-fast-slow-pointers.png[fast/slow pointer in a circular linked list] + +.You can detect the intersection point (`node D` on the example) by using this algorithm: +- When `fast` and `slow` are the same, then create a (3rd) new pointer from the start. +- Keep moving the 3rd pointer and the `slow` simultaneously one by one. +- Where slow and 3rd pointer meets, that's the beginning of the loop or intersection (e.g., `node D`). + +Fast/slow pointer has essential properties, even if the list doesn't have a loop! + +If you don't have a loop, then fast and slow will never meet. However, by the time the `fast` pointer reaches the end, the `slow` pointer would be precisely in the middle! + +image:sll-fast-slow-pointers.png[fast/slow pointer in a singly linked list] + +This technique is useful for getting the middle element of a singly list in one pass without using any auxiliary data structure (like array or map). + + +*LL-A*) _Find out if a linked list has a cycle and, if so, return the intersection node (where the cycle begins)._ + +.Signature +[source, javascript] +---- +/** + * Find the node where the cycle begins or null. + * @param {Node} head + * @returns {Node|null} + */ +function findCycleStart(head) { + +}; +---- + +.Examples +[source, javascript] +---- +findCycleStart(1 -> 2 -> 3); // null // no loops +findCycleStart(1 -> 2 -> 3 -> *1); // 1 // node 3 loops back to 1 +findCycleStart(1 -> 2 -> 3 -> *2); // 2 // node 3 loops back to 2 +---- + +*Solution* + +One solution is to find a loop using a HashMap (`Map`) or HashSet (`Set`) to track the visited nodes. If we found a node that is already on `Set`, then that's where the loop starts. + +.Solution 1: Map/Set for detecting loop +[source, javascript] +---- +include::../../interview-questions/linkedlist-find-cycle-start.js[tag=brute] +---- + +.Complexity Analysis +- Time Complexity: `O(n)`. We might visit all nodes on the list (e.g., no loops). +- Space complexity: `O(n)`. In the worst-case (no loop), we store all the nodes on the Set. + +Can we improve anything here? We can solve this problem without using any auxiliary data structure using the fast/slow pointer. + +.Solution 2: Fast/Slow pointer +[source, javascript] +---- +include::../../interview-questions/linkedlist-find-cycle-start.js[tag=fn] +---- + + +.Complexity Analysis +- Time Complexity: `O(n)`. In the worst case (no loop), we visit every node. +- Space complexity: `O(1)`. We didn't use any auxiliary data structure. + + +===== Multiple Pointers + + +*LL-B*) _Determine if a singly linked list is a palindrome. A palindrome is a sequence that reads the same backward as forward._ + +.Signature +[source, javascript] +---- +/** +include::{codedir}/data-structures/linked-lists/node.js[tag=singly, indent=2] + */ + +/** + * Determine if a list is a palindrome + * @param {Node} head + * @returns {boolean} + */ +function isPalindrome(head) { + // you code goes here! +} +---- + +.Examples +[source, javascript] +---- +const toList = (arr) => new LinkedList(arr).first; +isPalindrome(toList([1, 2, 3])); // false +isPalindrome(toList([1, 2, 3, 2, 1])); // true +isPalindrome(toList([1, 1, 2, 1])); // false +isPalindrome(toList([1, 2, 2, 1])); // true +---- + +*Solution* + +To solve this problem, we have to check if the first and last node has the same value. Then we check if the second node and second last are the same, and so on. If we found any that's not equal; then it's not a palindrome. We can use two pointers, one at the start and the other at the end, and move them until they meet in the middle. + +The issue is that with a singly linked list, we can't move backward! We could either convert it into a doubly-linked list (with the last pointer) or copy the nodes into an array. Let's do the latter as a first approach. + +.Solution 1: List to array +[source, javascript] +---- +include::../../interview-questions/linkedlist-is-palindrome.js[tag=fn2] +---- +<1> Copy each one of the nodes' value into an array. +<2> Given two indices (`lo` and `hi`), one with the lowest index (0) and the other with the highest index (length - 1). Move both of them towards the center. If any values are not the same, then it's not a palindrome. + +What's the time complexity? + +.Complexity Analysis +- Time Complexity: `O(n)`. We do two passes, one on the for-loop and the other in the array. +- Space complexity: `O(n)`. We are using auxiliary storage with the array O(n). + +That's not bad, but can we do it without using any auxiliary data structure, O(1) space? + +.Here's another algorithm to solve this problem in O(1) space: +- Find the middle node of the list (using fast/slow pointers). +- Reverse the list from the middle to the end. +- Have two new pointers, one at the beginning of the list and the other at the head of the reversed list. +- If all nodes have the same value, then we have a palindrome. Otherwise, we don't. + +.Solution 2: Reverse half of the list +[source, javascript] +---- +include::../../interview-questions/linkedlist-is-palindrome.js[tag=fn] +---- + +This solution is a little longer, but it's more space-efficient since it doesn't use any auxiliary data structure to hold the nodes. + +.Complexity Analysis +- Time Complexity: `O(n)`. We visit every node once. +- Space complexity: `O(1)`. We didn't use any auxiliary data structure. We changed data in-place. + + +===== Multi-level Linked Lists + +It's good to know that linked lists might have other connections besides the `next` and `previous` pointers. They might also reference different lists forming a multi-leveled linked list. + +image:mll-3-levels.png[multi-level linked list] + +Let's explore the following example: + +*LL-C*) _Flatten a multi-level to a single level. You will be operating a doubly-linked list that, besides the pointers `next` and `previous`, also has a `child` pointer. Return the head of the flattened list._ + +.Signature +[source, javascript] +---- +/** + * Flatten a multi-level list + * @param {Node} head + * @return {Node} + */ +function flatten(head) { + +} +---- + +.Examples +[source, javascript] +---- +class Node { + value = null; + next = null; + prev = null; + child = null; + constructor(value) { this.value = value; } +} + +const ll = (nums) => Array.from(new LinkedList(nums, Node)); +const l1 = ll([1, 2, 3, 4, 5, 6]); +const l2 = ll([10, 12, 14, 16]); +const l3 = ll([21, 23]); +const l4 = ll([36, 37]); +l1[2].child = l2; +l2[1].child = l3; +l2[2].child = l4; +const head = l1[0]; + +// Head: +// +// 1--- 2--- 3--- 4--- 5--- 6 +// | +// 10---12---14---16 +// | | +// | 36---37 +// | +// 21--23 + +flatten(head); // 1->2->10->12->21->23->14->36->37->16->3->4->5->6 +---- + +Our job is to flatten a multi-level LinkedList. So far, we know how to navigate a list using the `next` pointer. If we found another list on the `child` pointer, we can flatten it out by moving the child's chain to the `next` pointer. However, if we are not careful, we will lose whatever nodes were on `next`. One idea is to store that in an array and bring them back at a later time. + +.Algorithm summary: +* Starting from the `head`, visit all nodes using the `next` pointer. + ** If any node has a `child` pointer, move it to the `next`. + ** Save `next` on the array (stack) for later use. + ** When we don't have more nodes on `next`, pop from the array (stack). + +.Solution 1: Array/Stack approach +[source, javascript] +---- +include::../../interview-questions/linkedlist-flatten-multilevel.js[tag=fn2] +---- + +.Complexity Analysis +- Time Complexity: `O(n)`. We visit every node only once. +- Space complexity: `O(n)`. The stack array might hold almost all nodes. + + +This approach works well. However, we can do better in terms of space complexity. Instead of holding the data on an auxiliary array, we can append it to the end of the child's list. + +.Algorithm summary: +* Starting from the `head`, visit all nodes using the `next` pointer. + ** If node `curr` has a `child`. + *** Follow the child's chain to the end. + *** Then connect the child's tail to `curr.next`. By doing this, we merged the child's chain with the main thread. + *** Move the child's chain to `curr.next`. + +.Solution 2: In-place approach +[source, javascript] +---- +include::../../interview-questions/linkedlist-flatten-multilevel.js[tag=fn] +---- + +.Complexity Analysis +- Time Complexity: `O(n)`. In the worst-case, we will visit most nodes twice `2n` -> `O(n)`. +- Space complexity: `O(1)`. No auxiliary structure was used to hold the lists. + + +// ===== Intersections of linked lists + +// WIP +// // https://leetcode.com/problems/intersection-of-two-linked-lists/ + + +<<< ==== Practice Questions (((Interview Questions, Linked Lists))) diff --git a/book/images/Find-the-largest-sum.png b/book/images/Find-the-largest-sum.png index a2e2719089c4b0aa36390fbf219ece7cf89b7a46..2131f9973c58ee8c7c683265781b62a6f27b16ca 100644 GIT binary patch literal 17500 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 literal 17918 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 diff --git a/book/images/Words-Permutations.png b/book/images/Words-Permutations.png index e9b1817665ce3f401df301c876b016fd3222c1cf..9b08853d7f9488755987f3407718cc199848258f 100644 GIT binary patch literal 49677 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%0A$cMm}D9saEusWSX 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%0Dk^=cSkuQ^(wJ`1 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

1Bt$_v7FbGBx*G#2DQOTSl6bLO|?FsVTv!U zNZEd*XZk@azOnLp;w4Wws-@ZEcY+cxL!>%@{c-ht?-AORSK4@(&bK$6%l{@`v}4vD zYhBBXmroEhJ!kT;P*2U4fZs3OowPt|2&ziC5k+ljFLif^H2WFy>hmw7Bca^+Lly~K zMJ*A~cj~}v-wQ<|E?KO%7=+<``09F^lm>zkUFv^>iR}geu)HMUq1?d!A<~Hm>CC`4 zAohkCcE75O_RS;$p3DY@h9lwmhQYyk|CsbaG1J9TsQTiF$cwFTyUB{cM+GbOj=> z!$(qpBGZcd1&h)(NCx5P23304=_VEhfv!aZMr?Uwp>Yd!H z22HcyEviij%eY%^-RW8TAby0#L!972D%EU6W!+BeXZW+OJgm-H*F`B!zBXS?$a9Xh zg_g54ZxGwa!)&gE6Q=5z1AP`rdR=_uR++pI8uJ9^4|&OC8K{CKpqZDHzkBvEd*SEK za@K}wprVt*V0wAv_~@eYzH$n&>^n$UgI0gWqOT54*w9iSz3Ja&m_RW0oq5SUw+mZ~ zP`5Zcdhf~S2|8`En*;tlpX!#GN+>D+Y+2wD<&;kKv2V09&v3Am4=36}O%<-0SsovWshQ)zVZHd=VWHq8?<%A*`+t zp>zHVR4ZT7DxD?F=%c{@3In~KUoSuPpp31 zFp%J<>l&G;Lf3d!HD_OV1%BC3L=QhA9UTMvkiyizq{tBahewOO8=GRTH%gjOGagF{ z;?Acb=X_zEy|+80?^(ZYECocHHQdUO;h;h9Ix_-_QEbFzuplwbG#62i@+?`bG|;NG z$bI9TYRA0#C1ifSAH!r>`<7_UDfS5s5!QO^JH9Yky_X16L=AL4R9JxRlEbn+v?H#N z;T}3FGg)(7Tkt`Q#}+BTGn!Sc9;eu5hpMN6ezCEl^6{G;r{(#eNlI6G8HKjjYy8q@ zbM;%~pJy5)_Doi{&EkM2u*@gq9#uyE;%A76kK@o}Lj&I8MT4t+gC z>1t3bR9s(BJMBM^?KCsuZ(ns)4FFV8g++K<9+{V@F?3BI0XV)oL@m+rz$K6uOdOp@ zSSsk4QWSslN-bRU50fPe0-3rySVBj+!;eTV*WN?#Tc*jeJ-Dy_wBQ=fq9{&oWM_e@ z#zv)Z7|L-+oH{-+HFg+t(QsiCEKFTN2x3o7?3hj!8F6IQ`<&GFPF!QpXl*Y2XP9;5 zfPXzlAhHwdr77~}yU_Z`9<$ zJ$GIATFWiWPsq@`s`t8o{?u$di_RTFmzfqzC8;Pn8{FWmXv&87vT?^vD4?NU#ko^0K*~q`kr>~Z$Hhe%MbqX*aU_~i|(nYq8!x$ z^|}An{9Qc~v7Kzi9Iq9KyOgI@&x-+PVmdlycLCj6k3K)6HlIktVI%8~dCz`TwSq%_U|;v7 z;`2yWw?y&-JN(zwnu_geNLW(cyZeG?4q@sh8`(G4&vma;TAGnbCZ(?F~01y@Brf7(8J9(`@gRV7|DIB8p%0u)mNeb|Q zm?pxWSY<#`(2zz`sdURjPvagArA=nWTcXCk z*)bho7-L0~oUsucRb2f%Ol;?sY(($CLG8Uy%_TA?#fl%5yJV(9Zw}01 zfACH%qcN>)7Z6=q)MhYoWe79n^U#oD0mm}(l@DVRV;bx~atK3~eS3$vjN#q>_ZVTU z1~8oOz`m5bmX##HtvV!eZOz`slJ0_fllAMqylvg4i%Wj%DyElBj0g7zU7tylYc!My{%XRZS0MU1fhx5X7Oiqq{Y3Ho4{a9!IyxP`&;P@=6a8Y zs4L+QdH?qm&R+n=sp|nv;Ln(Qeva`EYO~N_K!_uQ`H8a(iLqT))ZAevj*W_?pK|Ix z)PQ%iqqWg$YwuMw;ztxeuL+Xkar1j zmdl|<%Aa+n7bH36N!^wwglk7;3&J`bRvs?D z?Gf!qle%O-lm>M23Uk-byA4`|_>3ggnZvTn@kHTA?t^1QF?%(+LLF$`#7K_QhGMC^ zTB*|~|DXf+w5IL0^ES0f_Dj#NssU1Wo!`J|ee{C@_q=&sF2xYAhS>Y;!+4|STui`R z?7cDh`FNZ;v)hS*EXAw={^g9WFp1m|QQ08Q7yTCxk@Ue>UlS^1j8IZ`oV=0@Wv4-6 zoBh`UX%^kPLffpt?PY+g538efuvi%PePk*_mpA8N?m?sz_F-3z&o64X_Kfb$ZAHqq zXgIY2m)^KOSW-)WCnH-c-W{B_2HnEwMpW2atXJ8)>oTK}mgS%O{ThK0WuBIlYbqDV;u+Naj-N#mStf&n_m7$aLc#wY9k=i3h)zwg!k)e`H=Cm9Q}dik+};*x zz3=_+MH&(Kglm}y;x2wDF-$e#uu&{GlP$_ygXS3pbCK#f^JO6CR-3jCn9`^BdBN|Y zbEM!|bcs|d>e<6RXk%E6JA(e3+OQLbo-zOmKy9g%b8UIpY|a%nUN)zgpVXa}+UFc4 zs?C-8H8J$O&h?T+V9=SUn7Hh_%zXy_m@j>*LXkNETbz+U@qNA%AAdi)+FE{_;1Eaq zA$|VTz#Zyuqa`eXqmB&Iml4zd&_xJ={bZHr!j~c_C~YH|ayuDH@aiekZQAKEWU8yvCvwQPzf& zVNsgPMIol>+d`ZE5S6>6_kCPt2r@p&pCE7mIOzBnBg!)X&k9N0%%gO701;$4Ay!vS zZTVZE80SD;jVr$qx+OSi@r`drnGY2haZgU|vV;xpb}{{%8#D_{!zArDDNAWT9a8{% z<^Zz?szY?U>~=b(6dEddvnVqYlCPJHW;}h=i9Xj}n59?I89(p5TX^KO-OBJvoC-|K zf8&?Y9>)XQqFtpZM4Qj;6B2S#6<}QUb(LX_*h2Pigy~Yr29eZ;#{!7p(w@vBaac5t zszXMS^a%a87;8P3i#*xj2&F+!xYxj1q~EDqBrZNX{|*^KDZGK3TR08OiG*derSL7? zmcR8D>{1l>6n?)ur#`baLz=`y3)u6aUQ4gA1Y-E|4iq54{81W9>G#<62_XZ#S~To`1)`Ii2onnt09+>{-w>~%Ex{PW>^Qyz2Y8mSGaKPFJ!m%NdN;ZBz+#i z7jUY(!e;XM1-n2EK`Dh06nK%k>3!rfQ339R3s=(j6xhP@SZ6fYQnOfJVU+QA1nd5; z`(j!lwlS|so%;Oeu`|JoRcFetDhU%ep?2?gw$83(3b^oGtTu2?C9I4`nF$~QZs((`v*oZnL(SYQQ+=T46SdD_q*_r~+Nt>|i~iN7h@Ekd zeQzR%x&Z?28>A20P|T7nPO5zGs)GyxJGkSHa`gn~=KV?3ezjcdb2`G6{Ns_C=vrGP z!VBC#k3W^z%+*ETgl-qD0XBcr<%qzDmu%o(HsJk%y8tBXJjbviP?T@16#urFz+~y- z%d?*Td$Zg(*W>*F>A}#7c+STEI5TRMC!@m|y5)<6EAD6UVM_Ri+K%X#gIS&eedT3& z-;vM_F!`O!y^3teJqisZ@yB!_ESAETceCPBbMR^l;;C-%%@zJbK)6Xjq<@qn0x%#mnj~K^~ z6{Av<24>nDiviJOi#2Ao(^j@vpq~l1qzFHHP_yk}WAe*ciFM>WXaZ#rT-A}`JLWgX zm`$(cMS0RPwH1C5GQ!}(ySw{^xcwH8>nr}@K2@#i%bI06npOj5nh*}2I;;i^Ygc0o zg__N$5O&L$-#+571q{XEq_;0Ym+gmx43*Z>mu?{%6#~|w-V{?hVH*Z|99H z&MADjI%xCp`GV749VaLt;d|J?|7_wX%uF~Kc#uKK?3D+fI$gf&4< z6HU(mp>zJkYk_HhfQXBE5V&TX(QnTAwkK*!Ejk5yJp1cU{go#~a~=cJ<>cdnfq|hM z_+W_Fc~fj%=V*}o4qLlyc50P15qV$Co$#{kUIE_3{JCJPBZ>~s3GIa>_-Ynft(G#tiihoVJ`+yYTRn-3k8ugdr{iO`| ze%WZ9tSkI^2?=)8C0y@mf1JyDOf2lb<1`MIk4~eJD{P3v)XJA*G1y-P>NNu%A2WH9 z!=$2da3d}K@LJ@`c$cif0P{Z^ZV6ntGQ+XNHYU16#fvkebAU zzRdDLWXi~&20&Ymbn7L*qT1y-8GI7&_`%;?v8Tz}uWQCZAI)Kv9xGfb!MN1ngs)rnh~OFPs$9VAx3uelj6Jh9icI zDc9>)Uqv~ofI^A$IU`L|=Ii%Q#tQlVW|+NRjiyR~`D2^^-7N$TJbcTObU6t9n13b6 zGL7<%Tk(!7)nV>|wJt$L1o4IwbOC?G(z0NX0+)t(vm6mTOsj<3ryH-B<+j8Y#nqV2 zrX22YZWTK%J zGq2XLw~$sZY1OrMEe*Q+uEHr_=+WnKS$ndL-jnxsWXq13vz&rV8G@Q@Bi1lp*~TK) z5?wv##A1XYD4K${w_f_8Q!94KQ>kMK@0j7@&EpS5k4lT69$sCaA)tN*G51$A@nhL%x)e$zxwFhC}lO<-ONdU89DwY{YC zHuNrveRMsV#l;3nggOazo!jkIz0c!|W7+`yU#+VvOv$oT zJ0)s*f5_{enG&zOe@`0w#2>q3mc32WsqL?g)jUD!U0-r{s71k6?NJJ^O=Wfe_KV4n z+y6nr~g4z>n?Q#j%zXAz=@z?5R@vW7;pZ8&+z&!1AxD>=U zh95}-xV(Hj@sCF7JIy}Mb7Wty6@I+3aKCW8uL1w6x(6h1tLmH>EpQQksl*I8iYSn%Z zkzqSHlL=gTe2l}<2vu>ixEj^XR}J0&TQK`_;{sHb#B64{=istMz@htHg-Z#b%nAz- zT77P8Vu!@Wl{O?wa;&t*l9bFx)PQf}Mo<#CajQ__v7*i#7T)XbBd|7>2YqO26*El4 zD_|QEc0O(R;Ml!fe~;@pZ{B+in8f=j2`{{*)^;sJz>hipUP)Sgqs{tQQF=}P7S|ns za!y+%javoX6hJWezRZDS)k6C+%i&Y(o2b0FA7(`&T=Q3AIW(D?GcT%@aywpz?by$K zoU@+@c~r~qpU+j|PHQ{~9UqJ3bEftvof7UTAx@7Bi&ulmt_p<8AdXmSbTz61KpV7bKq`VWD>Y zoWCBQL9>>BS^&2w*BEzIY+}Vcv0X*gGRXbl_FwqRL?%hZ@)FqjVCs54^X6*$7mmHL zJGii;#gQ+{6r1)(a?qA~AAo1pp zTC}KA5R+s;(VH*p5qqPW1Nzdu)`x-MuTs)_uLb?)U84@}8ljYqP@3$#S zK0=L2aQ!r82B{H#xFk+C`TB4jJStRG_;GZoqwRy+)f3Ye|KyeRWo}N2=bW=l2svcf z)xfDSDXtRsZ)4Je=GQ7m_z?qfj4-CJ=il1`m6JdoT&2p>rQg{HL~9Q~r;75m#(Y}2 zqy0sjzwtcg+}VkpVLQIFVY@9V=@uPgc?05@aM-f8!70t!_kO)+A9NObnKDYyHMK#W z6Jd{*x5`bk_6Ci#^mGMCiLK=7efcj-3Ve|87qg0BL++Ah(ZmWMuM}!~a zQT0`%W7wgu1y%;prd0-gKYvgGnFhEKX}xI+S~wbo@ME#K7^L!+ZodUPGpp{gBC7XI zsaQqHf^XaiJweJSIh~>1^s|MjI|$tYe|`NKaaTj;k)_bdqa1@2ePIDX&V4OSO&wL$ zZ?RXiC+WkfBoU3e43-q;ia4R)H~PO`mmRuo?{62Cym%z+y6)jY?go43uu0ASq{{9$ z-o}!i4K#|Ovh3T|Z#=eTquE&phQJ`JLfcy!+^WMqyoXU&Aa-qd+`&y~7A5QwmL5UE_H_9`^b2D8U|r{^+!jI=?WnITR^J6(mnVMV z7<*PAODnAw>7HQV;S}71ZRoRt^YRQ&+m}{7XFP;Sy*&QgW*PAaIiLvb&+RjWyR*Zt zFW+hFy3Po!kR;Dle!GHUDD?E&`}t*o*v~yOY)Upm`;YI4EJ?RpJ&yzg#)pL!zi+(f zaC#a%XMzBxddlLE7P)A_MQ$+A!8>F6V+91fsyLge-bLjBfy~!s4*)+$y7Pf=*9yg* zzR>_7a#hKX3~=(@tgH+mVbOmCLFz-QF7V-3L3;__P}J{Tg`G!vuJ86$=@rcL>&mm? z@UHT*${?`8m;1YO>CJayE@MZC!HD|qKtsT-dE-HBOpK1AB6>6e`XY3{NBN!XYrW%~ zF=AR$E&ncSI1Nd{m*-6E0tV_4C^q`l^WRGlJq3WI{-YA;f8#l1MTu~#@ce<%p=2E!k%wEP)7?3ZnF=zT7@gtKc8s~QM41yY zY(M4Zwz!gY%s+H~^ww=so}-(nj7CCVYbPo?(sI7 zZ{U#Qf&aKRZX|=|OznP}Td4K0$NQK}{w>Vyj8a883Cf5>YZG(84d5hx(bE4i#Wk+# z*@Xb2Gc~SNv$P^-REl@t4HxzOJrCk))qnNwuEJTN%#BqB?NPO|SZL%|*5xO>Nqzei z(FwNDDL0|P_p+$KW)_TW^O)!zIn@MV;$VpP^z>Axh>0nV&rBIp+%}4GbP9fW}oE4L|_ZU@|a)mdI5Dzjb^{&?;-!bZT zhN>3~JJVtrLA^~J%HAY4ZO__Xj_(Z!vvXus;?u}}f*x!34;g-V9qX)U%p)_z4`Lr9 z1*PoNYxp6(L%q;sbm{zYw3pHpunqx%r}ssN7a;TwGPgYU() zV2mQc597N>je%%MSmfQ7@f~Nvw<27%=<&;FaA4I!gpYMMFx}IRF}lR>AGPk&#P8HK zRaFxQV{HI_e4Sb^u`;_ZvT153e;d$qq9DpXz!T}0) zwOg2R{d2hOI=%p8;%wFJbx&jAA~fYtaYYryUoyYcDTWw(e~@E+g#v9#elH+!*a-~y zHP%xrA~yn#I((r7-KWFvn)w#3Ri7wF1k=?Gct~O+>g(gO2;o#Rz6L*k+66CT>T2OU zKNSQa6v(9T+PpRY!8P^MEFJurwyi(T~GErNUVh7#~7NR#|F+l4*$=%Cf%dJJ*9pmVXGA zcm{~hMqc_tTVfin|MiG?Hjjpo0kc`PB{wnUg>Y4+_b8>e0tDd;!!-$Q2-ATyG^b&+ zEt7nZe3_UrFn~w@P){-c_4~)T?y3(x;8GJ41o2<`)F2Zdo;1lbe0Y~lB6!f^lHO1v z3OM2vSQL#+N8YB!k{4VA9|KgyF>>!hZJvYJV^w&-X|SD33Jq?;;l{x= zU;7m!*{przg|9_$JhnIkiQF*YwMuC*d}wvQXO{e)6v8;U`FgJ%o3TIH^urj$A_p~; za1cK~omY?Ug%G=}Bm(A_@>}BsE<6&*?t4BLA!f9{b{%ltg9V@e;xdC8t%?zhzRI8o z`wOz`v8x~j^yr14Lml{YXApzrfH^UATa@6!$rkB>Q=ShiIt@3>>yC-{Iv1*8y>jC+-9GULO!v(mh3 zV3>@k;SmwIy0H4+0iK?Y1-#@p+QAxOanG8NPc#y<}*#gfx zLWM~bHL!sl7Yb+H^^rw+{^k~kw=6`*hWt|`CD+S`{CQ+p^0tnN>lco?xI>L?&%$7T zZ`=+MX(u7xp}i-euWWI^k?TUObL~JqW#P7vjGNU(@)HLV;}rWI=6sflw=hw`On{0^ zfmrN@Y*qEb_>uvV(K&fb=1`K9c+LC~cM^#+wkUH$79b=hna#A2D&Z2qUn8>aiIao$ z6)QwQ$0AV_<&mL6CzG0we<&z0TcpoAg{oqCR06reeKx$%an7Ny@ z@q>|TVxoa7JPg#!v^zL9iG@)SfNLQ)&~9 zPN*|V?~#-sgRFEBox{PrRC|sEt+OwZYdxfue({oZ=Cz>aw?3pM2&W9puWHV!$bR6k zNfo1|RgB?uAk58Pr(D80;nq3!C?&0PQ?bh+?OS9x;jHdvGe<-a-!XajN$TgJsH2W4 zFPG1puR4{cC+1WrQDBkxPWuH>tTyLkQ zxWKTN&adngKf!zcb?T8L3{OtIhEv1)5_w;G{&fyPDHI8pVljFbrefSzpp3c>q8Jg> zn5#R_-aUp2Oj@G&+JZLa1@JPXJaA*?A$!98Zc>D6$nXnW0#)?SMopNf{7kCJhqM5 znfThY4Q00VfZN_risjjJNw)mGfGw^9Q|mQuwKepJacNIcZ8+61FWC=QesKH4IK|~8 z>RxOP;-4m$0;FCL$6K_cVBN!Xp$LLzM0~X%MGf{j1R`iCue(LKhJt9Yv~QI*G`S@< zAZQD(=(GRmwMWFnh7xshdHZJ}hov|eD(Yq6>n?$xL!e)w;I{B3Agiz5d_2Sb zhnkvf!~?A%f>ji8YKIhcXDRfBn~l*NQZjw5MAkKR-D$Ll7(Q#Re2VK;0F*Co`HOSv z5)K+U_AP8C#c)ZQ5Zu2QRG#u(Ea9@ACPRNqq9+%exYqDZe1*-xI!?9Wq%41o_*M&o*!wc^OdkcYpk+3`&Qa9yh{G{N%bw$MF5&KJ#!lIRd^rG<`ttyEz8V z3mh|fnG9$ts}L%~il^`lRqev~^Jg{&C6JKsBEplNGpqNz1qHbFuT$WZy||%>W)&sK)Ub zGfS{~BZXVZAa#&3jQHCDVmZhH9F|@SlsQmu_9!}dEjCz`qN-QTYL4!y;e@X?MiRnV zl0z8HqEY6}H>4O)wb;Ts(W2ZkxPGWD$`DwY=g5ks0-D%d{54kb3mqPqo*rf_U&GrT z5<-3!sjME7Bfg&{Bsc==qnqhx+^CGG>cH8R(|z5C5%zzu3oVbHlGsqLyJEgA z4)a0DL*9a^<;3sC^Q(SZj~Ba4C(s;^gIOS)^7h!B8n(pA6t`RUlob4CO^VBhP@l_ zVTe3u#@y=F-@g-Rt9Jdle6rEczDY4<2~vz($yMCod(-=26&@f_gvpLs^#f)7>cI$$ z!^U8Nwrl71VVbD2Bd_9_J=-pMrGt@L31PG=y8iOn?8MGZ^vCr0z|v{gU3or>fgD%2 z1o`%Gj=~7gK@U#@`Z~55)ln22wzn zwhVcH?Q2s}(o{Cb@q}Mp3hyKw9RaK#?(|j=<)T*>td`xNi@(z&7TBg0xmLYB4Ql6< z;4GBXk%$_M9-D@njx?)p&SYvm!BHgGV??9EbBsj$Tyu6OFWqn|Zky^37~mSGH-BUa z3&UtZ7afYiL*p{po!YlS!hyD;yE4!3(M-`O!&a|?oLUvJx90^j(Wn%b_5+9oh3Y_u zFtSOYY&?)mLe-#+{jfHP=`wtp9SujF&z>6NlWwCC1BD#AqP2gEG1l!b80q0bqu+`r z*0(#1M3zpf{377IKHk461mklM-r*N9_yb8s3kAQ}R>r@KhwWrODAa9O&|1dT{x*y) zk|fkRlBY3?#tVFSsCAcKT)dhj!B2R|zEJylnVhSlP>0xfj{j`KXeF14{wtQH*51<^ z>2JvAy@la?aXlP;pkL2NjOtSfa4Arkuud~xAEnR%8^{jWr=(9x2XNiQW^cTYT)bp& z;IErImg?C9KTQwaNeqa^ug44W%%*Wch-4)afn7y zo<^?lhe1wePe($l(l&3U1WU5Mta5feD|oo@vQ)6*QAHo>`GFZ5P2kRFSBL)Cgy+x| zw?{YkyQX;NT1}6crB1FEQd~9zUpt;X-&ZLEd}Fq}V1~n8^1AQm&Ax9@sK_8_)s3yv zZ-|k$T*<+n8g{7^hitvQTGZq65TEUY*p#!LKLvQ*^4OT2hBVjQ%F7#6!NDmB3}Hhr z0awMU+$m?*((rSmbx~Vcql;m3IGi^FDUuSmAKQY{5QX3 zJkp~k8LM_Brj%TzT2;ky7)f$IzAIQdkd*%;m?#CLN#=9^eY$_gNgzrXiBfe^?=liGqL7+4_Bv_{Y4U z-v@>}0*ur)Jvn818Ds__GKl9;tn}trTVzvwFf?OH-}3jLa;*xiIHbQ9#gytf1mr{t zCSUc*i&wEK!Tle0ZV*U6ToUqk&FIppzM*fGKVg692-moy9X8VERqfpi?F#<6r6F=KzhO9=gA#s){R%}=;C>9wSYf#y;n}==-0PSe-?oGs zn;jE%bxj?`&i}86yh>qwP!Y296qu@y5F}X6hqXSjP}P(g`S#MCzQ7zQSQd*&$iRBjt8L<5KyclUBMxU0c(CZLAU#A%4U+gqeulf?AYRjZg*!P~d zKHM03mZ0N`;pSHh3PsaRmAI4OReo(V9 z|8nI0Vepb^Q7WA&LmgVWA2k2)p~^#?e4U#grorG=5`$><>5U)kkYVM+Fg`uf9p_;s zDTlm6und4^dPg=F0iH!)4zG^qpxl=Qt(o@*h*#n&SeXmSb9W9gQ$}b+0 zjj(H>|5?X2X0o!GCc0k@qB7pcS+?EXriNKrn7$~rUqi*Rs1THY>(F0v@furx2gegL znfRdT1$hgIv`ul@YuW2mI|n9QLVkGaGxY&iUx1o0kA5Yh?UL2yJi=9{5_E(AwmiID z;0psjnE4K62^zU?*|D--RgD}vg5v!8jGB9HxbX0kd1C<~cCZnLl!=cX#1H0@O^CBX z2h~N8zakLK>12Y~{vRIhJL>kZ)`t1~AHEsIpD} z^i6v-`PR(I)8q4ZTl<;~w>J+qP#hn3CydtEk>(%XBVB3^BHNhJu2s(P9BSt$CH1iO z=n+yq%Y#9f3pt#(jHqP)v=)0(NMqN8MJy)0I zYfI*pA4&sGuyJDJ0Av1qPR!AvcU0ndxLN`<37{E|DNV5H!s0v8QQFC?9*Rw3*NG0j zCp$nkMC(XowKC=;1f`EqKRMfj-yl$Hk9{)>HH7gJ<)l9>yx_7g z`1JvXR>hES7!|B1oXo_yPOgQ65Cb6~qEsjwWMm@qq47s#*R-@u<%WFtaKzI(m#YsC zs+WK6v@Sk7`!m8-S%K$t4u`{HblhQ4{v%&o1qO9ZV*DLz*n5c;^oU zJi&!-54Y%Mb(^~mMO1kg4^Lc&uWnBj21F6t?N2E_6!+Y1E{KomZ;+R#bd?_>?25;- z`260awddvgrnNR6P+jjD;$B4WJtL^%aY)@T6jGc$swa&P|^ni3393SxXNa|r03_TXv z7@h5CEuZLoi2DgG8^-Fb|@k2?b_1{lsAk&e+;=q9!ed)lYR_p01@ zh8>GUmwHw7O@2Z&naH3iVj!>a3zic>FaZnn zv()Jrf$`U?xlUCYboTA5Z*&1(O$vlUS6dqdKWC(P0aC}?QS<20@s&Tjy_s?%3}@t1 zJh)a$M5=YrjyasJHWvZk`|cv5-FOW*za?WC}y5;8?=^2e?-Y ze#<-_hz3GaPbtZCiXm&B^1HTyY+;QW{{vM2ohm`NlSvb*Q|6qKJ%nz+0HJ9IS2*6F zH_3H>+q?Vcf9S4tnY|LyMy z_Ok0M*(&E~z%&#H?#=mQYIV^+>v@^^h%HyvE*PObo_{Z$k?PJaV7dmH>%yMRb~R6ch&Sl`xyS{jOY*aMPsZN zOOzr#=jO%NMb(%g+cUNN@-%!OEwyOS-=OC#f1zNdp+?DfGd*%N%7+>{QBxswAoXj~ zP7;l2N8CUFXkP|9V|W1ZTAohhpeKV{8gOeV_UeAi>hsq}iQA77 zD_;`7ygogPlAFF?hZQQ<0N9nj_an-ytu-kvv^mhe!tQJ071C-jIjC4#l)lKXbs1{h ziPA}1saelzk}nR`R)+R7 z5Z$bHT#OOD0XfNr$>MMQvbtLeDERKl6a0{Ez_M|bheRkSD1Z&sH2(M-1!Rb0Ff1e= zgimY|$E-EnGOWpehzz}OIw<9)x}9f`AVkLQH=gG)l5cfBp9G z0i&qUm8W9;3qqgQ_p74#k&p2>BJ60euC5}(b!{l~(L|WXr@1iX*Oy*6+q%1bZx+`T zjWOo_fm*sEcBZu?lO*mv|Kqonv>uD!D}|KJ?+$#bGPV@1C>;cVgevnH0ttpi8!;qb z<1lh;f0Z{zwS1^wXq%0uPVvx^1)r(h`-av@X;XnepB~GA$=QkX40(#tTDzigJUB39 zI63D#=U_e~GpqN^l-ul7~as6(VdNoBtFYl?=Yj*3x9X|;_OR*F_@cjJ3bkMh3xq%>*ZDz zSq9Ibn8_3a>Oxf=x4l|MD^f9S3`7Psc0TWXFKd zSo5>7g}p zMO(fBGO^3GWcNp8`qP1*p0S>v86kA%VNQ`n5G?{~%}zz0@`Dvwaw+|(m6I;Qm@Qt< zN*8|v>eiLF`<*tKfUn^8^8wZCXu2BfkTS&-uYHNY>>Hbb`KRtKeKM~1@>$&KP{obM zfORbf6(FDlFDB_QVeHOqKP<};559UZ4W1S64}9{g@-CY$?EG2**$`1)Bq00o>vsN~ zcil1B=G=tZ5AP$zA@l1^Y1{b}aG;!3?I5sXGzpbkd`ItvxWWG@_YH+LMzV?xpLed# zbRJVuLXEJWWh$8i`DdmltV36Aogi<6p+9DVx3lX}gi?8x$m9KaHF8;T#gli}biAD^ zPi`|%Y47?9ZA@3F$4ciYfyabeR&WYYwAs@iLBSQ0>OE|Ic>^-P25T^Qp|R!#E18oR*H)YX^a+#@OmG2 z+4x~KKs3lw?S1ZC|nVOe9 zTndBw2hQ|l&^?IVGNuvHqAO^%(A^*Xc-4 zTRfT@>ANcVGZ-F3>nzS?@m`)@o`v@PKsZ_~@yVML43HtuYZz{ceDKL^ z;zO^;Yk@UPLz>#$%(2gEJ^S0`0}TW$ROGhgdN$U@Hgn}%rOr5rdmSu5i=6wfW}~Mq zA28^EHG}1@#i6pRe30?$C5RMe0>92^i~z&S5)$H1S368+$KJjh-=5C4x=X)~KA?B> zXzJiM;R!5-@T!WOk}_Zx+*<6VsGwCqb1|6|%$dFx@XCt7H!6jv;&!U6l= zH@J6H#d<`O8H~~Ps4ABf06IXvQs6s@wY!80u3c-a?cY|(_C|#(e;(qZl$gH`$b%pV z$P^`5VK*mH_FzYsGx{|u&In=MZOm{qK?&}DTp~Cv=f^)})wgq+sP%0fsCCwNPqxwC zu`+6yCbmnY-TiU9wt-o_wVE4ZGYBVJ4tec4R-ou(zeS@&6O)g<-Ue#o(^Fsc13CVm zqgHIw0^73Rzc`fW=*J|vh-cef1fx8GLBl(ixaVH^+vLi|oS z%ics)pDJhM{kc7I77rqY1vdOkG>W2|fyvi03pBFB2zhMW=~E$N)K@<{%XLa`nCUSL z;wIDG9=G!zuPlb_W1_H5=N9Y33YJTh)W%N7L>k?besoaNG>m@-OO#`aymy$_Sd72; zV}#_~WIlPQt33xJv35@mN&|%2;My~eE6I?6$0m4qYB=KUE{J*8psNIaoD}9KjoFp@p_J zw!SyBlAI#B1Cw@e`t!%-ngIf>y})N$cn7FHRPw)1ZFS2vU=Ov>rcKp?2R{f+yWpPE>m(W9qc9HP#tk)OMpG6^v&5gXy5w%@nq)sh8RQUz(QWlt~an*&a~~i#gJgA zACmUl3;YH>=ZQht-d!R<#0AgpzoFm;D{CP)yxBG9FiEstvq)|s+cb-k(nhtKAK=Co zk|RNgb7*j|s=9wSqBER|$+1$)5G^ap_wC+(v62ztdn5bsvy(|g%tnGu57ARwDdJJ3 zGECl1IfO5tQKr!ftjyoAh-TCv&K}{f;sY3BSGcp&`*;IYo)syFr5y88#oM z{9ZDIytrA2rA~A(x4MXb)eu8j;5lxJpf@tqv68^<`WTDEUUlT)NX(}^-)nyRPi5}S zaqD>=tkR!{150hT`WkiqgLTWbRc4b7TH^8-b6tIy71Jjv@l5Rf^;WdLyDU#%D%D{MltY zh3Yo61&j#!&m89te061(Y$K_Zb4j*P1{j>g;EV~{t#~)gfp2>g^_7kR|JR;x7%HW> zRV6w#1w!VFjPEQ)5Fd<;p0C^CDb6P{Oaj6rY90T;x>C#cF%s_x-#cnBxb*~QEli4>-D*0`cc!H2MEkN@6c>Y&NOkVU^AODvy=^o=ZSE@n}0Y=ShXq$J{e^W5>gbfw{avLuQznw9=RT z+5gAZTLo0Pc3s0tH;eA>F6r)67D#tUcQ*)&ZfOu{q@=qWq!B5lyFt3)zuE40Ki|R6 zfrqa9su^R>F(&uM0Xrfz2l$9s=ozS&0)_maMpMOIw$9y#x#;o~3% z4qTwj=mXV2E#xxQ?fux;S=8Zy9%+}Dx0;lLYRqmOs)6=|fINTv`ko)|{r($MYVz7B zKsDqagI_edBjOZo`XW42|DKL}fjo%0?Vi-+8#Ep{u1$ql1d9`hJc()E3oxbMak2pI zl5|WZw02rHZskPt#pMN7T%Tpx76h8h;T7d}%9>s$BKm*0BBrn4asz6I-!PR_R=f%` z%4vZ~-@Ac)EQg~s26%_y{S{#b;!3J97860eDiA!h-wLY6>xD17BhiMU0bhVZ$L_9! zL$(HHMq08oiYXfcO*6oq8{^rFU#GTZNsIPA1}7qrb{8ZGc3tYSXSdSQ()QU&o5D8t z-1IehR>sGJS`DF{*m=2Afxcjt1x7-~;)1FV19N#X(2Mn#jK(B;1925k+^|S`gFWmh z`KE(4*q@5|bxSHyxUfJ~Dmu5@rcn=PP*@V=Fo2Hp=RPQSX5@uvVc>Mex}$_~Whr`L zkjrP(GcKoZZ<+Vm-KiwyFCzLwJ~vt>=%mX}LVMVo6f6J(x)0aMQ%+CQeYhrImZ77t ziH~4eCAjO4xZsoJUIcS8+`>Z~H{g(j&dl&bf1JKShD4+HLh)dYe&;kr%p^I{-=_#g zqy@zAT(&0w#n;pf)4{L&U_c05-l?Pm%YNHtHNz&1NHOTyywKFFIuK5({S(F=#Ug%UtT@x5-x>)9hXFK|VQMGy^Zl@P@2d7hpfOPt{8aWWOehx}v}|ULGD=7$6=LR>-Hy zf5RhU{!_*C=FE7X)5EF(X9wrK$%i~oeM`$?$-)6Z6%5K)*MW#1N-wxl=vI0}U@E$r z1w`CrD{SUu-$Jn%b~TwX-ca#nTjV#yjcStAf5D>q)&nYSo!8)>xU@#9pu0X z98yDqws&u}4WeP8*2?)Cr_M&V>ZsiialT@!c4r1zA!ilg!6)V=?jC$<(&q$0h`z3HINghf5;Zp_b8_RWX0KYd+{>?*>G;`0Sis zbBrp95l^Rz4}&oW{2hnDB&)$+@=cI$DvF*e5?1SLBXeF;U;qwvRL`{X~y)(y^G76icIUNoINFXYqrU|};2 zMn@5@i2PQ>ljKaEjWbPu_DKCmoKzvz8F+N2*p_!T-fxnM_G}hdzAm2J=2ogZ!IKC6(;QrV4bX=8M4R*8gX7kuE+4VM(F_ z8h(MJ#lMv1Y$~lA3SGQ7xS;7-I{talRK^ge%t6hJ-D>sNLX65Emy@V6MsH{3Iv}z2Nb1h}a3aD|LaC3ARR_hxa`Z z;PU?#T>J+&1a{zFR;py`m2UoJL^3_S7(mtF1O(nJGyy+$dkgV$ry+9jI>n}k53Qn; zmiXlXLhkDwIF@Od_f|R2Xhw8lpkb8`kEk)sbwwBW2?5CuSl^93ZlZX1Kh6Uq2cG^{ z-B|(J?|8dC7J0k7c4jhw3+$}B0#Vv46@HsrXOl(bacM3ZB1y5u zCiYMGESz;xDI|($27G)+%_CE(R*Mi-J=a7~*1&s?_n>>=|2S zU>976{@?%K@c|jiSaO0LP(yk}mnIU( z6EhM;KqLm96-;ZYn?Glkk88-VeV9~bWy?YghiHxK33IWqQ}c3YA_O_2m;Q{>$3b|D zSaD4OGtyu)63s?(w(@4f(IoBFdh<%h+is~UKf@O~sS4Fd^vt+;0fA^c4`lIeD(C9E z?bkdTW&$?WZw^3SfaWt@C`XTu7030r3p6>NV-mumY*L$QTS+etK?Do9_0{=#{4W(> zNZ-}GF)abX&9uY&0dkSrEq1M6uZ`Nzco9A=lSz94x)C4O$g=OUf$9vvLI9R{3~x4I z9q2f5%i4$-ENRa5rTkmoJ`=av!n~ZJmn~jYaI~hCKoJYuHmAw}E>Nd_r`WpfH_+;9 zW+$M3K&mk=J=cHtHNO=7ysX(=U7!*@+qm-3Tmf!tukh|WK(9pFa9$&M z;T}jKf*p7NK7d zT6&+4rXD zqbgvcL=`ZZ@=JN?*U=yVO!{^ELK2Yb$~X|1dX`fElY-;5y4JdU2jIiC6do zOE0RlFffV5f$VAZw)`C9=f7L;`+`+eeWSGos{;Uz47;_L#? zQT0WWtD;qPC2S&o^`ETE47UJmgl0hE;~)0%#xW=^u8Pu<+`JxOD2H+vuqg%tNv5BGbMjQf<`@rbz@ldfr7wmvS!*8- zp2{eMT%5HI7VF$Lc3xKq^8Z?f{qQW#4CwWyBc@B>tA!;tDN;`(CseCcZ!(?%E#jUn zL_{S;C7&>BAL#TV0pRa%seJ_k#`H@+?R+`~y^X$_>Lt=7xWaJ_HQ5rL7w+*y0=frc z9f2{b8E$B_PN*=6#G*bLNw~Vu5^I1UW`UPg^+iv>b0Y|wU?-3d0p8dmV5e@-gwlk$ zoB9}yj({EAa`q>tp7Q5VzO)Xl))PIUO+!|R|L0u%U{xf1T@KyGuJ~`6q|(#cY5K0> zQrpO{kM zwPfHcgga*+yfPc07nYnHYT@n&T0Mh+vL01c+M&U?hMKCPF0!BbqYMz3Q(#cg0s|JM z!{wJ3z1G{h%m!m$pE}I#1L9FjZy^wf1bcLJbivJyr=oUss}E?_ecF0fAC>+SK0iXE z@8<`&|1JKteK%GlAH4CTkdWL6-gtgx@g36B;4SMux3U1LchW-S6$ii{URGQNI7Y5@ z-%{`gzErLD&Lc++9m5v(11f%zQ|DR`yP1CpE5hRF2$zA#AwMX9k zxs5pyxSMvC)S*uBZgk2uz-RQw*JQu!4xoywDsG>lU)VqUv6YyDwzXkVCM+&Msq$z^ zR==gw%3J{SRKOnIXTtX~T8Dv=aX7)~@c0Rm)2_(`+DMLLJrbICrFCOz9=z!W0E3QSO3 zhcXVbNHq7wvG^e!Gp!){BBXw9|BE~N{wE4rx^Y9`+#1W9LKalC#97cJ@TCChd+{bj z3N#67R}b&%J}ia-%q9djKXw|VyZ2=OyQA5!^T;#321kZN=$q(y6OYxCK@)u$nFthc zr6bYk(q>4)yHYB=De;Ay%Y^IF$Q-#{hG!Fp-C zZYm`saCm(<&=_WKW@Bdp#{)AOf|}x_Ov3{~aMdJHt*{a>Nz-oARt+pe1`@{-D`B8P z&w#*xT@k*yhBzWeX3&hLb#Zh1Ta<64%T2?37i)u&dAmD>k|~$Gj7w}F+WtY+yG&0C z^O~r5CtRv-_;qq%V=!cn#oO__=O@;%3IWkkW?EmN*I{Y%fL!nzAxu+96xcpBZf*9< zbc2l#LThaszT6Lkr*d~*p2+(rN4*`=|Fai!f%FKCIfqR1Q>uzIjiW_C-yP*5F`)M) zMyBALXFR=5?@DK>5Vx$3vcU`}5-QfR!em3?`ljtw`AoLw)ZN_ts?Bo?DGGdb`z+KH zo7W=~Y>I(pGKxLL0x(#BQK`)wxVA1HRvdrSf~sKx66IR}^Rxms1iC-}HCS^W>BC{x zYt?5`FxMw+wTwLwtAX4WpAvvjhO!j6gaI*zMMOBiLcEFuZ45z^hENm^?ONA(1OIFMWOa?Hh8Uut<+t>(VtbfLB?DO? zIGSYCJ4*;g%4SLF|zbyUGSmM$p z96q(aUWoiXbrpnl;#9hwWbOyFrJi9w;j6u9F8}q#oCLI3AxhCdEqE%Nnk$Xm?6{ht zlL*QJKUd{?WG;>Y^Hl{@G~NM#%H5PnmFz2i|4S2C0h+Beft8h-dv&Z{t^x+U zO3gi>=J{P6Ghad~y*fh}r+3pHY@R7Xmt{@#kdMgEC5WGbTe&@DG9ciXdG*FBj_Hup z6%80vW=4zLn8nshL7SDIC$4LdX)#RoJ}5#+y5$}DG}*Hs#(xf`v8tj;3&FPn9G}WC zoB)Wb#Cv%r=}8-!>;2wM=iC5Bc$9WHhX6Owrm&y+ioN0Eh8ikxIna`D$p9yR(RYcr z+V>1NTCk>O6avQ@BK;h{s+&};zh<}oraYh=?9E%n_P-s) z5lt$ymoic_|Axlugm*J)QC2!+%Y)Us+w8gvO2y?ud#$26WK*_9@PI5%)$qxSl|4&JpiqG#u>ba>5g z-+vd^Q?%f1js!%|>0l%-;v~|Y)Ze0VL}viVWl?H`vlWm$3kz_(1`>e}pVHHT$=H-> zFzxVmWYaRW4u~nSvY4Ao875=_ zQkeLIVpgZXjF>t=a(DB@F+9R%cO*&?N%1=ofE)TPNq_(EZt|Qt*9-}98mqrbLR}wW zvlvwo2j*5aEaooLUcBeAD^wTP&P2+yP+;^67b{{q|X4IRHY% zI&0vmz*+g@{y%R;BN7RD*W`KIE_MI zK57sr8IA^;Cf_We88`)GaC8uf+ykjVA3FeCyv6duU8>Dej7lf?5k^ojKC$ySAihc} zWmVluo8gOkp%%=QAgN?7b3z)-hwy2VNb2Cp-fu}9|J`4^kFp^%`;9&?yZt6XE;>4L z+Q2?97{A9*-v$10y&jTswi~}Z!*{IN8X8%i8~Jfl<8Hrmuf3-EJM&Bn0gl^7Z%rmIjG&;`}`?EP9Cv3 ziI|M316{}M6@iJWd$mDu+UD37*@Ic^_nc8fxBxc$H6&3;?E&P4>{k`vK~`S*zqCjL zq>=C`MFt@FOWZ&^B6oN^WCD3N!ypI)AmFIO31od4V|x=4#kpZ{9;|huVy|NU4V~R7 zxs4g?am}d2(Isaw15t!@NOYORv+Ls&tta9jk8+oVyInA`v|% zSPViU5kaq$mbT4kb#-)_B5&7mB6T+X=qSh2m;4~>Z6$DtmcaZk3BEpl_zK_Pv?N9o z%HSVv{rz=$@zQ30?uO>L56aFoy@WEQPzC?Zn$mJCswu+(etrpx0quRcw5;?Z{$_Ca zRB=Ve>$TXf$8=(dBgy(@#YfJKm|KhsnJqP|(<~xmnh2FdsJzxLj~C+t+e2Q^nGdNT zy$9FE+@o>E=CHB7bMA7pwl67KK11&>#{eNL`fg=7D6e3gv0wN1i1sbD#9#VPSn%t!p^84OVDeHK$~?b`I-MhuACXc?%nG09d@sgC}{UNDA|v$#^q zjd+bo0k*-A*3IE$ru`2*MqRJm^feFo`CAW!t;*)9@^Ss&!}awk6m*+ls(rmLt8cn3 zkD1b+Be(n9_&tOqTW$(+U7Ev=|ECqBlkSIvp64SB4wUt!#pfB$s{Iz3jfZbYAaOR1 z?h_4W4u&-6c5A^{nc4krhWw)9_w3qC2n&+F=WkMzKo}SppH_0m_&gr?HoCTdH<;8( z?pcf1N$1j(Hah;P%s%Et3)U%Ev#q_D$sJH+bttoI{?^kYJ4-|n_xaun>S)S}3X|`R zNaSkHN!QmHG)4J})-8=t$R>x4n~JY>DT<=gb00!bXG*(Z;V(Y@7S|#7{o~`5iV9Y@ z{lmjL{easuvpvhw#DUIo7X-}SrDaJRYYusbPR+JY5386sNIhE(=g!CIm5O7JD+$Lx zQ86t&O^&jfVfVKh8&l?EcEqAMN@q?C!PKH!Ua69T^==XJF5&R+pF+p_fz_IYj8M=2 zIbV4YeAP)MAaUc;{r8Ze^2phg8O!$dmSdrbJ;2;5?thw)7ALJ|@B$VWSf3ltO)9S? z!Mkzspc&%g54qpNyqv~)a7`KHhi^_LHW_SuoPK|}cG+}QH*&chWW14lRSexdJ~A+8 zu9xRZS0GpP3ECasu&9Z&o8s8x^a9bUvMe?&9^8mag?(PsO|X}6HW4>8-x%Ov!**Oz zmYMuSWS z=PMFB6od%iy3!9D!5Kbk+F9EtFliaA@86MRUlTKLe5_oD78$MrkaC$xxRv)qIg6 z^?YZj;uhlei(TU)a<4^BXZIg2p`;%W{Y4%Sl|&82V2&RR|=*y*79-6@Vv zFQBgc!9ltZyeV+@!=2w}y=lp9UQ5V-{H??$s*Mka1gyu=9>OK)%oNwCGRchkN@xB%t-_A6k_LbH5gQ9E0||vu4-39F9rsVS=@v9|LIC zj$!vXOA#l8?#Z0DpC1H_W`b}0&boRix$`!9m*A%l#g$jDExRv&=9PN?Q92;FHClmp zpUd@TPx~BI{%vJ2x2-t%H3jg}FkqG5X{0Pf!mIr@mOSmqr`tLzFFZT3Sx#N4WYb9f zp>r6gty);Wv>wGW*jm8$r$duelodNY_UKM)TuVoSgUx=Or4i{<esktDrxh-sChSqA%IeH3X&6OJU!)R#hpa1CJ?xR;mv4M}SuToSu5Npf#7j^XG;*PF<2`>~qx7AOZUABi} zkZ_}paaOXoFs9EXS0o~n%stu3(8TV~?TaH6@z?!(8I2}^(AYX@BoZDbc%|hU*K55y z#Cc+o=!5gSmfzzDV|K#uN_>-hM@HXq>X7Fe?%e+z*i;o8yQ?jw!)^G*RjmE_k<;=` zY5(e|wiOLN@cnU{q8%&k8Qiv(_fG>9;2^Kkl}q(+Og^I!zL5(>A)u5DLrZRI;){rg zP?;O*KX+GDVkOGW^>24n*PHsOW2--fVM!tzD}TQuED9Yu_Lw1X?G}OP-&y{vO%Y9V zu4KiB@3}YBq{P9xx|K{s1}69Di@vo;rC>2>rY64rLevUdfT6qEaaAi?l>A+-H)!5O zNecLLo!LCyFkAUy-FPkT27~5LYjMp?)opZ{Ig0I;6U?)@(owIjj_bd>6@N7w`(*dI zcTmm0Sc2Y}oLH#2X!KYh81fUBZEe8hZ0Hvj-65-~kCVeuzc)h!b*$P>i;1Jr4lIFc zfD$I)21P^+Fk=S0M>y~%hCYr6D|_$Gk)(O)YrzM5b3}CNM71isDPuNm{`FO{1T_j;DWHae7qh;F~pZ!H3LO8rfx@*|$imN;KlynSW4 z(OtwT15FxeK{f+GeXaBKb^v`RxJv(B%{4egN9n8&g4}0lLi;wp+wkyxH@P_yC9~A4 zV!VV`r6?2nU%0{-;4BJ$3Co;8t`#2IDoa2Z3o#q^na5XlCR`lbN4W3WulVOiTBc-a zqZ+|6o+F2qvNI-_nz~WlP8l)*`?-9h-a@*_GuN;2wPGSx?#y`Tl2*24qZ5KP1ACB)OQWUkmX!l-#(? zkowMhQlh3tMXwOuZS-EwxV@eFvDJcU5V!03;w@P+$4F2@%KJ5DSFrwb_>s9|P2?Um zNyLr@@?jc!D3*<+e<)C-+;T%x4Lxn5=0+5<43k!!R>M*@$yS7v9%xw2!>zeQRESz! z!oFklbVJMVdFBrJL-PV}l{6?FUU)Z`771R@f!03)=MPg~;m|p3fJiepnmsaWK<_0FM$?C#rm=q+K0kEig|sy~LV| z?w`kleX!r7D2cT-m3d#_v(CInh;53D==S;a6_r|Z-3~N&DwvHGF%_u?aGZ{<1-;o- zwjY`>KpDK)k_$e%i>w@{GI!spxn(iPuyTewmTr922|JloaBeg=hS+VSb8&Q{YzQ;V z4Az(<-~@>4#!2+N&WGbs;LE9?zp3};1}iGOSRH!$s)GFdgGi(+_S6X+Vr=8d76ZAU zS;q5&RWa+aZRJflw=WBW)e>?yhe4iRd5*u&Yz@k~aZBPi zw`<3brDJ?NvyJKD*u+IwM~PUiBJM!^`SzH^W7x?5>AUi`8OUi#32DfLz^G(Xm>D&6 zWhlgv-#txls8ycTu!Ry@HWq{9o#wj$2F=(LuAuI7VU{6FhK^|(yv})6c@H6Mo;4#U zd1aew105V@Z%K{@%*M9*?juYr!(0LO0M&*&;Xs}ZAZ{~m9n(><4A~cFrj39r#($U? zd){+pkf#T3vgW^0f+f39d!v!E1D8xc%=UHrpKV+m%>6lWK~9|-Fn6`%mD(w8P!HL} zr6F=P-K2RmAuq~XXogHEF6N=;e`-zgM15ej){_MRnzA+zgC zTlbqke0CH9s_p4#6_v(MZlqM7Zk<{gC9_FIjf)BE16STT_?PK_BWN2wMT&e}r zoUNd_Mi2L9J#WlNS_=y~b%aJ-X|DF@K5afe_gUsp2sUVk=xC6dI&K_OnPT!lNY_DE zBu}zeTpMe~wmU5izg3zV5=t|)g~)pa6RL@qejy~IKXH}-3hSqqo{K|Pu&EY2PDvx@ zyMPx;cYO|`)ULLSElu;lLCgE?|6Ki3<+LEN%#odrM)t)IQal@p$-R85IK+%*FJIP^vquT3#+ z9GSzy@GeRzJi6x00&9K-l=x~#{>(lnTE!^K;2KQ1Nmv{S)_wqjj- zRV~rCe$D&@jBondXi%KOdJgF1n#AXu8_%l1&k}sK*Aotcb_}Fe!9fV{%_V72LoGvZ zMEcKx5kRnO$u}Q#%c{^2Dv8-rDNnFKxcSctTRPT($mUb(o7zJZb)oxg0z09_9z+M=_y zYf=(Oh+8Z~5}?7M{lyAYz(D9j$27ucS*oEZ_pPcNy6{b+_lqHM ziWU`no8Q%&8E;~HFiAQOrFcDoX&D!+p__Jk=HmP93!YKJJ_*b`v08ifcf%KlJArnm z2s)8iGQ-J%keHD#`#kl<1sg$ni&vp2_`(Jz@29p@Wm{d}WG7d=A2buQD6&hB@O}gW z#kD8O83@hR{i6LJRCw>><40s<^+|reb*)Q|_N!%9D*86^PCuKn)8IMJbPv-k zSyL_$8m^uwOP+3&huU%coQVJ1dc4mZ#3;=FdLdU>FR!ykWe)*Vgx5zO_z)OHomF3w zg#!=@t`cFH0bNp=yf?(CwxBKZwQ)Q}Jb%Z5X_z+Tqjh(i;K^BOWK=O5Yi9kkfRfx> z9Ob?EKf^iQoPSz~Hiw_$D)l`sr+Y} z-3bJmCKGJ@y11jZRA7l7i1?!+MWa>e^5KxqDTpB8og__!)A(ilAh$s?KEs&}SkR1c z)!`r5Me(qy=QHfGd?G5_jY&g)3he$AU+y|&;LIskuOMEr;mvjgBK?L{^wi5}akr&a zz!rO@pb)43z``cHMlCb~MJg)z=tR+(mx54h@7aB3wLjwSgJ3ABUEy4;Tw+!Xg_Xl+ zif@B&+Q0UK>#!Uc_{n9h_op>XM>*QeuI6Ykjh9#V?aB(*)k1phu5p&>M$B2Tkp4Zv zX*Tm6<<#DpOIB!!F+!9E57!cC8Di#j7!rMbV=NFQwjFOzU^`B-s#-i7HXmwovh#YP zKANK3D|JYs{TDX*eC;9mZnusf{$DfLlFJY-r_I;JAs@PeeVY@qs8X3cMhY8hg=-OF z$U%*Pb__$WHk`L%K2^Ur1Ft(02zgckRx4HVwN8{r>Pe#P$(J(5qcb|Q1z1Z@0%L7H zb*z>$??Jok(ROjbBSgm?RUt{n;dc^M*EetOQzrUskAt~92V;g}zxPvD=tLTCjWKPF z?|C4>l0r)W;VtDpUYg|1tj|dagj_kN6bfEh09!52I5;S=hO3~9?<0zt=L&~r^~Ea3 zf^*97#vlO*4&ir%&G2x+)&)aRW36@kU1I&1UmD))+=`oC#Mk5!J%CrC0x2boz#?yQ zKH1nMy4p{43zF&JZt=Jld!8!B4%~!)1Al zlg%RwhG;o#WA;%a!>W7XwxIF0Z z@BalGoC`ub7FMHBr?XMht-yh*%N(69bGeWGg{vK6vcOUL2u8%Wc<4|dO5Z(wkXr2A z*%;DLRC=YH*WUKzz*$)}Ss5i?MS=f0Xl=4YG9fVoYnmNxZL_7u?OhpMQFIpNO6!47 zCNKVnzrL+_MTu0@AXY8goe1RLZdlh++#(1`OL9%CVFn1JqM|PYq8xdc?H)5 zQC~CKqhl->qcXo&JQIYweg{T?|DmI&r}H&MtvSfLXTd^QT^VzarE9j?@9_wLeN$^7 zgEJ#z1BjhiAl!G^d;=TTDgc~(C{d^3;cj?pW5Z$oxaSCV!JUTf$^9*P_U@P9I}21w zP+yyP1NJrgUt2oufD{d#wPVPj0{^y}WBmEejBd2kB!1~a)MX8}8p=MdiP)crI2OMT zHNAtp{DP8CZAV;i!G4pv>^`xY{B_}vwBvko(x08oW~>?kFl*k~W3m`8HHVW*3qI`5ZaqiYK?m+!Pf9b_ zV&YMi=0A{Nvw7JZ1u95pf%CN<$v4`0pw1*w$W6!HITxpa);)iiq} zx-oI-rQ@pzcNXICwN-`2^9+jz*r2k;^v{VErJBB9qO>fD<({s}kARdZrS>#aqJCAI z3R}o!vr4kbB-99m1F>p;`utOR)4|VLNyc^!cHGMJaNYFQu?)Q~h@7WqNajp3D7-U6%+qaU4uN5!q>00i_ zvBTL7z&0n^z0ScwJ9K0ZffliSsz=}DRQrw_-cN%7TW#D7Sp2Z&psYHOkAz(l@h5UR zYi0T4;8O`<5KPwZMrEC7$4UKq@~Y&to(MNcH5DICg4nDUZb-D9_I*AgT4-&FhYB0o21RhU=5m!JM z#FA=2!=w(QRo6YJG0Mo%z9K+mWvz=46w3M62yAk|gz}Nh*Zpw+Qt^9=B8Dy3_&6Bx zY;OJN9kc}TpEV<-8SK@GkK@DY$WGo0H9Cwzkaq!{Z((w1wze8Rf^b|AzJq+Fe-7vq zOMMY`%A3PAiRmT}p*n!u0A#Dz*|z^ow6)LwI?Bxh6sRLB$abz_)x0ARvpjpSl)S|e z{6jb73&pBf-@Qal>R)_xyFDu|gAM^`kkr7t@O}uj9#eIzkqNO5 z3|b*+=1*^cr640zenZiQyorfr5%s>U#K_mD3?l;<`@)Mup1h}fU{;1f&|q7I9^uEd z!XXml+L#HJq=)>_N2Zpmv=TRHv$D3Ri2*%#eIhr{iwRKvH5f*SgbD!_FNA zj<_mU6?hV}xF*Ekjrk)x%V71z#rRD6ESovlG!>riJN1^)jU^-$O05;u){ODhCn!Kt zZq#TgAQW#^nqr`q=sSu6$Dp_7)AjHeQ@NG*e2R`4GpQ5ZPmRvpq%tK#E6+~;?I++n z6_w1D4}8@5vOY}3MOeFNI@A^s`qwNV$t(u!EVFG5g=s1n-Y^kMk$YBMwh zrZPX2I^iXn6X+)uu8!5CJuPgN2P5;r3b%u zE2(|o67$|iG0K}D+a=R+>Gtb@2AX$~*xqK>azH z`?H7q<1gIHR_cH${Q6}4&Q8}q#S3W|g!_#VjVDMw-9ZOMmnHS{>U=jh4?xVp_+TSU zg(tu!XR4Tw1XV^UJ z)vp#4Y09Lc%Y1UB>`=8GWPIx%(bb6%V2^moipp-mftgIZ$izak1i1@s{JbS22pb^m zyu0zwUEo&7%O@7nMLgq0a$aNUoCfyw1B=Zjrw0Bg;0zP=t9;SJoWUSDOBR{3@=m-& z&-_Y7B`|-uBj}n}v)zI5>A^bWP8x??q~$_GSG}b*uCZpnZW?fJ`i;vJ9X+_lHhc)h zP!E^)owxyF^J$3*`HZj@G1>j#D!g%jk5K0=_P_q^j6lbN-EeS8h`+wBuXk(!Hm$qS zqY~-D*XmN5J{&1_3NlE%jdW%40*ysp-J=S=0AnrDRkj5fY3ncuC>ZSI^nIN^vH%dA zo6F>Bn+b(lK7jzW@m^J({kvFvUc{vjGofxYhYgSEhc;!F_Q2HIT=Vqa z?v}6SIB4spy@@K838KdJ*lu8=;{t#B}|U$ah+vC9H}RRi?NRBjWmU`6&gf-f)3Z74^D3L6-L- z46H24c?W}+HUOHJ#mcd_yRV^pJXULiah6+-FP{H&1Hx?pKt#XK#eiu%tP^UxFxW$e z@kxVj%6AR}vVlupX7e9Kj@5E=x zrRkGnhH_-O1{O!)LtqhZk`#zuWo?LC3taw?x!E0r-|pL&Y`NT^fKC6SuHeH-E>ekr zcK-HL2&ZyN+G1x8I3$ozq5}YmG(FoI%C`BU7t405rFs90OGJ+U^Ugx%C(+FL-ibwo9eAshtYB7Kf=DU%Y zoLkTnNAVhzC(Bv;hz9TOx%4!jvWHBZ3Fwv%Ek`PB6b5jHKE~OeHq$DxG^P!1Q3hf7n4OefzWDFf$~09{g|^YC(W`1s(RE zy=@Y#a>}=T`t=iS4!}ik_fzfEtr0NBxIEgl!6u>n!4B=$SxC3vSo(w|x43MN^aT+5 zy0u!IzMvtvaK4`z;X~+M$ApPodv#vwoNVr)&>7cNC=d8L3%ggwowI;;pvtI3^m%TXDdQx3D}TBCB@ZVKN)T5 zGm8C$&#>e*sJ+E<6AOh@-_^1(qD+5PCe9z{kY&^(pZ_NKGv{}71iiDCg};pC3~MPo zQ=H#kLjvpc9u2MVIc!+T3a^%l>ccPNAvprp6&>#=Zz!a>0|iMvcg^Nl$EwvkD}O5% z_w5et>!F$+Gxs^;Pl$|&Wf`TxLA}3Kx(R|`z7@NnLG(KFrx`V1iH3&TGGPYBFYKRk zegU<2X;zQ#kI0dF;8>8FCUm+gq03Dnqi4(bq{r&+O4tce_0f;42MS>6np*Qa(rQ_bn)05z(-gT~ zr#mZ>-T&I$!(GQo9n|6-)OY%AeOm`Q3szIK_fPOnnNEL#c}&%Gn@mOUB@2;yx&Z6G z;5IK20cmjz8XhdT!7nKlrje3blVPLP=JUyrqHOQ`kc)x4?g7$?nzLOlWJF%-K1*;i zt)UTR^ECd{8b8@`n)XmcGm4w^>fd~fGVkjfahm2@^ z*)W5G2;G;hoCb&d_q$XV%FtfZ5Jkhw{(;+Q4`VFY{}5BU zdt5df%XGH6&ExgK?{k~#G6had>ZaO(8H4alIjd+*hq`~;W!p62+$EleqS9z*>tv*! z8W>d7Pu*@Thp#u=8F6q=>02yHjOLAV&uLiM@sUullbum27brU zy>4^mnE_btH>B_%ib<#8KOi7FRfWDySmPrnGq(604#ThFqu@*zjYpXWp0gLq4V+zv z$GvJ-sA$-#L3-tb{5-4aTH5soD3#JM{Sf5_U%nkHrCcHcDnw!@8^+#K^C~_wZW>d~m#=agf>5Lie@+)jJ({xAgP(AKO4_%7iu#cz z-V_ns#C?>QwoF%{ZY2?&Px#|Qge)vOf-&(`@?%>raN-%QZ_|%R^i}=qWJ+TOyTD$- z;epeBEe87m4*}HYw}#)lf;~@hN>v<5KDuzBJ1nx4`WQIV-K3-z)>sE8}r_aZ+B8F9ju%dS%5*j*R$CzO~Pn)U})|i9Km5 z^23D_(ub_>69gC^t%MLHu{x9hQ}Nt6W!AztrG#83Ni+ASi+G;|cnXT&k=Mj4RQU-q z|CA*ksE8M$0{@mKRje0WCiv|FPkD%8V1l;OAqWJIh-+zOb^{s+u%ZvHoe%rRaI zbTU<1Y{hUx*>7a*gk`kCt^35px5#_M#l+?{Uz&Z+Zk%2|v-LVfap1dWCDV~!37?C+ zZy*irQx0C7ugxAyse03sZIs<-Q7~p;nwf(e?9MD&zW=9Uh7j!tG^Y2 zkoYoP92o(@)Qc)ly(fC#HETY-Tg+mnG1e2A!w#*N{-1kc*=ssey!57L;w#-Rf}MDFqqSkn!h#A2YUX6 zS`m$la&7!)mSLRwNlkRUB z&IT|fGv4sB`u>L9#HPzFTVc@0=FJ&b!om!Pjw^TsOXAL7*n4!)Ah1XAh!fGJM8)_6 z>V}R-osu#UxZ;|I7U0Ff@d;t1Li2Iw$SXRaF(>5FOI%nx(TZ_ucQpAR#cj#|(ESpyms#qo-7+p!zfD2(%jv0%OA7g`U2C@`@FocsEoGH7Y;7j98^fWnWc1 z-$Xy`xTMNdoLMX0S|zx<_<%E@@FWm<_31wz@d-g_$k}_`F}>@bkUO33Il+L43p1@? zr-l&H!Oz(l5nvBmWYeqm%tAJ4cEfffVUNb%PRP$m*KCbR;E!+nf?_V!ZJV|apzORr!6!^)@-ztQ^pV8nw^SP;taUv`hdLdc9z&HblYe2=*? zq8vB)1Cf|?fSXr{IB<#SNf?M9Eq@L>_3@+&7+C5iLxt%o9xd*nY{3_VE}CEqbbFF- z;4riaRdYKRBD*q8{IK2-!oR}>(c)RrYX-l0U30IwzHse=ARfy8flRK|7b@S=d_vjq zC?{Xnl3Q8jO>=T=_7`NnHU6|PYl3~(XS!HcZ>*vJZaL-{5D^z_LnTtntb<27ArZn| zAWHLRukek()ofe{PwA_%0{RMw?5Od5LwAF7wr)lU+{(Swp|D8#)QhN@CCe7n{h9bf z+4x(-U_}LvdgP!U2UB-uV(}xXDjWt%W!0BI^h`Id%{%rpK83xh-yRo(=cIUmG1>p> zsu@l8vMRqYE>hq^0LgCS>AW8o3KD39w}SAJsL^x^!3O=$+JZ9+wRzz|!iJ7wrGR8c zOj2#P!`ZYmf9tt0gJCrT3LAF6yCvOp>>(Lu6bVK4@;RXC<=y9y8VLHp(x;mu?E!a* zIt04YcwWBw)j<_t3q#?RoH_`dhBYEV>#}^y(utOgLlD^va51|jo%>kuAP`o+LuZC& zvAO3WXJzvM);>$v7WnvF@OB<6pO@=z9iS%z-j~|V(AExs?*C7a3*6c2Nx|B})~6Px zm~1joo5^2OtDev3^kO`8QvoshOb7%XC`t)m!AR~}9X}ra?h}QD=TV(Kek-?7i@$F1 zwP!|OY3hx#?9HQliQ7F&%=96HyPl=GIAynFrh@HtycxQJ62Kvu8c#~4YD$3q9XzqH9=3R5U&Efz z84L9C`RV9zYrJhvO4O}$Lg*dnB zaDN$aU<7FFj2E+riN%lKT{nv)MgS~nUutGqOYh>D#VZ$^Z$yStTv^5K)to7-p~IdH z+sUi#laIhog=oe2Yjhx4kISWcetW4a^Dvy``x%uxmjXXKt8#%?TUWW_ZqkP98QnM5 zN<2`j%`L5S6z@IahUz-5C+=`aDB#CKNVKwwIQ#v6z;P3sgWYC-N4+w)am*4Pg0lQX zbBs2%6$}q%xLY@mKfcxLzV7GNJf%a*1*WE@)2$LG0d14AAD))NST{w=GS&5Jr~crK zVTb1u^SkRO3iN$5URCm;fosnA6AYBH0(1zBhgxeH(y6+d(4Xy$D|J~GZ@kgq|5_$# zYfeGz^Lm)JOL;k>zpi4-J#)=uOh};64GzzcCY!t-N4J@2l+$|r>9KNj$_j=r8`_N) z=LXJnH1NAWAf`1CbDtuRGWL)QZG3=1FBo5HKX&{et>;w$m_4VY4v%FQha{bt$DtyV zvz}_9L2C#XDs-+iiC0=LmM~dnNmU{Bg`Y5~6k)-=4Og{}9df1Z2lap_0j zTNeswJwh^K;`4)IGJ0v zR}F$^URwHW%Qk+}=LpE7LcK)RM3zOLtx4*IG=jux5V8VD`pB5Qv3!Z(y z^}Gb$LGKPd!7BH`8PbxqZB z$du66&A+FI^8s;*rbm6l zmb>_(=Ex97tb}(sey|5{d-l_y{%v*%9?cx%+D}`188X(8d|p*ar477t&o`8gfZ}U~ z6p*xmGs2+G>YiZ;>chOHA^SEdNyhuW2Tn-YXqLOt`g%6)B@u4X!^JP}he~PNI!+cb zdHp|~ZbjzT7?m{?kt7gxL`wbkLITxiC8M67vW8G+B3*0!et1wN%l=Nuz~ak>Wmp?w z#@qd0HFQ)TGP2L$rg(ph5&R#1rv{(A9?9S3%JtQm>!o4 z$>ht(!4%;dk~^1gG&7zUCw@xj_yD~d3)MR_}KY_XB!BO*)qRS+YBCZnb1L&zY~Nzy6@z&wM@zG z$IkYpfYvyIrHUzUnp?)!>G4g_L5p0J=9eRECr346kJ}PP_v+L(4x7s)@Dix+XP$yf8w40#Qg}W)?7Y7-DVcA z;K(T`BOJz=I4K*=*7C5!qu};{iL%JaHrbgE04~^KX-Mg@{Beolrug{Jn3;N(&}zFm z<%|>3jo-37g1f;bytadSV?$b5zh`n_j@W845)*{m&^!<5Bw=v ziQ#_>J~FLxt3|<3c?l;uDGyM2u*nQ5Mr-pm?y&adLwYBHUzfDt#G>ucv-l|68t{nx z2UieHqd%1@EOG<2(lNrXS$&RH5J`My7GH}1Q-=iWh|V^yhr;GJ$A;|;7Rq~n%3~?^ z!#p+Pd8bCle^ak4#hTP-(=(GgNpSCfz+w&$Y5y2(`rg&ixlZhQhlDI&mmvttadU;- zs=H8kyS;DT(vW;SA??#GLKLqGn&HOVp&%SC!n<~iukkY_Y=LfIU3Gu{CoL{^7$wBS=)X9J)?0L4wk#qP{RwO0H7 zD@CE@)}_>=SVyj3EcT7aO|H+2zZ^3H0*T(M96i9r!8_B)N;wPYF|^Sf0L_;c_Up?y zTh`}X;jnIzf{jbf>Lvm;YbAx3N!YI@G7>>4SP=dys@zXy*U-?$+ki;r2FI$t2A2w* z*u%HqmdywQYe<&Y#gS4!2mfU79OQhD&OFqf)O*`GVW5LfPubVt2z)i&!POx^(AB{I zzIoH=F_;9 z-RV5@xlGUgS9bzuJPFX3B5D2kq<+DeKRAPkr-brOpfR>$9fO+vV`lNv z_MDzfdt2U^9PFD8GZORX6*5|B`-&<8n%bi7E^s$L-m><4&Y1!^ zepMt4lq+V0t{s0EcL8lt_{}-*zsFyrWgag#?`8hot+L`^Y;D6$Br-dom|C`-h7EPuEWECXCWEYJK*6OU0xM~SlT`Ez zOW=2W5x3DJugN?fCvNn=SFCBr)Ocg0sU+DH^@v7Vgnc%zO zeV*Y$^o}sU-}F%HS@Pkxue45=pngO2Uw5>EGadC5cV@6W8qS6L?;LOLzQ%Z_Fw05n zM@bR?rOXky_~{OG0Vbwu3Qo-O*t`g|L9%QUSM`e7qw3G(ScGyPEPDCAz3HW_R5<=@ zcse}F`*ZKR55oZ2U2Mt^zHk@_)rCB1{6#c#FqGG^gs?4vD^(=wsvZmD;iAdBN5Z6@ zG8a|ZHI<;}cu|BdVdvkTsLxp>((k{nmJC~*CwiWZ23SUlIP=k zNz8IUd8A41#&e=2q)D<%Pb9)AxO%>$tnZZg*{?Z&lkib6686;u>h*HXaH)_tAKIdc zD)EKIsVh)W8CJwNX!azt94DM|SGJ0#lDrmH_<#&b+hkx=^x0_59MF)Z)% z{Chm8{7!vOxz!?(tBmj89UWVquYXZNK|)O(=;T+I%@?k}y3qC_h;tOI3^hagPjm%| zZ8CI?Exkn8MdSm7X{1s*MLBp6(K=q5$TS%#hyKPhHNDNVuU>4b-wnAwD=tRtk|l*+ zr2j7QJs8wiS_O1P>k0fT@s+#naeQl`f14dL5wma97Q!2pdago_c9jn7HCr}HS8bcy zW?fAIRFn!iM;5N0U-R-${0n&@Er{>()nJW5Vhe0uwUd?vv9r(7Ph;+0XiEcP_vvJ= zhHWFmfa2AO##}%Bx5W(gI6{f@iYAlWtAhw(b8n z+eI~IC0|<&Zrkl}y+EFs#r!*6O9&x<4XIeTpgG*hnsp?J>5VVCmWN?Nt3$sEH6Ga9 zw?`B3^hN+`#&_T<`~_$KA1f+kgKWe(EML}=cI!PacOswg0p4ChR@={FtCxn4JtsIn z3qmU5cZ6`vBfEiaJV~^*Hy;KaZGdD$$WH=Q&@KS(15*2tb-h8c z#>cby{~Dsh_K)NId~7a>(3Q$tDnZVWTim~5eWGVY4xHW{pNQcl|LbcPLhbzP6oLBXKrCqJE^Y*n}7;G=wq4u^=u=<*TnZJGU zY#x`*<-h9+@pjRL6*YND6yg+F-X3MYDGhch8OZPPx%UOiCHZz*Xn=|ryez=&aPuBJU zl!ehpe7FPHUxJQnBSMg(;blyZNRm#fNG4_sYn{#FIX;UbN5Y{Fow1yOLynQ%J2p=m z=cP;8>(pYbjg&(&w<$7kASVB*Ke>&rE(98S?IevD4$BYuguF_i7A^GID4zwV4M}bO z@8Fo)_`cjy+^R-K4ca6FXZ8WKVWZoxwVFa<2YL7clOJ5IGY$3m?S&#;x;81Vttj}c%){&+74gs5@gm_QYXym8$?g(}|H-w{mp zl_S|&_01ys%15IPKO|n88JQg&{fTWfG7Dh?&n_4i@*!Iqx1U{(>fxx)T_uV)EWWNE za%u6Tg0$|8+IPRi>>IS-q8Xopfi7PErEkFNJ9ru%&MzGwt12b}cbY*Bxt;anTj%qK z0)<$|=uSe9S)-|%4bnI+W;`_Xi~_jqI#YBPm$WK|BTI{kTG7FA8e}yP|8=h z{<7CHg?UP9&Jpe3YEmU~*E{?Wm1d^DYaMi{qA)+B{Y|N**xht(Un&?tlh*hL{wo!b zW{Sx|-pM>BwVVrf11R3TEau|&k`qh7fc6J{S_}Oo&C3bjF>|mfl zz|C!`!vr12_34^%;lYO}CHl^ig(hn+pMlzDhPXFb_jwg+U3S6-HeNoX7TR7uwnrC- z2*oyHN=7sCNNS7bqdgJNMOsKp4`SqK+OJ`y*2yWQq_-RqdJ!IboBJunGGp$%E9RT} zb3vo)?x{7^Krkp`3+#49CFyC8p04klZa-TgC+Il$^$ihW+#Qpp#k8SdEoFmxZD8i^ zYCo3}f`ZMco5?B`0i7Q1Czm$Cp&&8TU_QLrBS(W-e zrPAZ_7ol{>mXo-bTfUlzw-=iMK8wYi>e?=fj&+j8Kduh2>itWuE<^5Wx{gVNRqJN1 zr$`H^i$q_W3&r*-V}wrShV>NgH@0SdV0jSFN&LNl)*WMJ$D^ID4c)mOKRM?23Z_+Y zdvnvo9cPWV`kS!|Cxy!tk0az~{ZSmSu}NB69q&~9e!d!(*V@8nSxX(_TaT$cU1o5redXLs*;o;6ajlhDV$6#{&fv2 zr|B$Hr~e#*L>&t#_~a9y13S^mD#Rdo^a&6*xA;F>wr`#%}qogJRb^JxWmt z(i_`^Pp;Fr#WXF&J5ZKX&-=ftQs`5Ry)l2xo!dW2K^-4RHCgwIuC2kP9qXgJ-9k#e zT&pW#4Do-W13KK+jbhFY8++a}MKy4+ruLXf(_M59m;!v`8AKkax@L_{eotEg>g)>OEP&j4t@aR$eD`m-*PqzNeZCz1HJszv`Hefr zR3x(FZ^P8~nq3|$LDsv)S(?RE2V4<0jt%4Q!$_6@{+lfOH?D~55&Mim%e-EML>!Tr z!tHJe?=Y!9)!sfX0z-{=)22PR?@3mQU+C``?Kij$KRT=IRpjQaH{au|IF91B z)HqysoOw?`pCRG}es`3wM2ize^=v`^M8d3wlYELrZVm_Q{blz?Y9nM%RZl`#MzaaFoU$PCZ#IU+vW*Ry39YvvaV& z=HUf+Ni52$4K#?BLotHdz2?i5hA4}H&xHLqgd}~l@4s_gs` z&+4XU0^#z)Cz?M~|ME!$@O2M9U4Mfelj+m@6@ASrMJ$7Z7wjAns&(N*qX2NhM@4Eysb|KY-BbXmK5#i+nt)QlA@=PatcMv2VrI8U_OC|>U2vaf^*(yt2`8M>-%H%g-J%)m5=k&(W<*MR)Kde z%P5kzIn~P*I_G#Rx~NWByJV^l=G0FFs@w7|DqC&yWPuCASDi(-tcuaeJ!8%TxW992 zo+dcC4~5ql>r{#gXyR|NL5xjABCBoBJHoXU82|USQ0hgKKxtr=%b8eICq2_Yb|9wf`hy z?chd99FnvWS)NVIotlzbG<6+$xB@kWA~5=Y_|Mc*tr6V%9+$2{I??DBD5riHO8VPW z&w0SYAG_6M;(}TLL}q)ZrM&Wu+*=Hce=opdvs%8*bw>e;DuW zo@kj(?wp4;_j~uh&>SSK+7UqA~enVyQ`Z56+Sk zDub|e<|SUlha1JE+@3I_hY|_kbEVBUt5&m^y`KtL=IfBF!v^+Pyv#4HA)=Y6vG z2LC(I-VATGZew7DAa6r_;9e@tBYWTRdZeKInBDxo42R5x##Nui$WlJBO?lm=8@No% zzik&R1=6Jjr^8_v8J~Op>V5$)n=g-G`5mrnfzuB$=2s5Po@fqTledxNMt7bQWUueK z7*mS7L0B|KetpX@XHC2{3mhFKxsbwoMs z9L>*;2@RJdnfAgB4du4~YxKJWofK8*=MU*^n%W5WKM=IF*=1)&^fC)DCppd|n(V%G5K^t?!4%hO_98*?SLfn%IroevaV=KTi zIOz~OWf*SBG;2F6h8pBuaq^^hwgvN?D`_&0!4j})@|gsgR|%N>td8kKac+?T!0D>( z*`EuB=2ipo|99BeC=hM@Fd+_ck4<*l&o`Ne453- zmQ{xM1A;-`DU2j@#N87b7D8aUfFBGTvsY*ON1-l|YLmC`Zde{^5_}3ZhX%h}_riTk ztj^ha^RT!BP}fWw)|S{)ktWw=qeyb#*a%dU;Ju>y@(2lrp?CjofmseoPy8Z5f}N(L zseldF3vRzEDBu4#WD=<1-^}Ec=4}_hu&fk2)!eWo5BF#|< z{urVWlXU>phpr0|p?d$2b%;iSEx4mQ-9$TX*-FuPF%nM`vTT)B$fW$sV)YgKZVd$k z<=frm33!@JS@`ekA>$qWD65-Nn!=tII+-v9d;20RtaLz8Q>BdusrtX+48P-XM;rz} z`h98K zlKK-ocbe;z!G36CL-^zg17ODAdhR?V&0M%Y)|@LvXbh(9yUa`7s|BsQoFrZzF?eIX4dm-o;b;9;P>|5mid&+Ff^hnk z5c2PzGPkU3j+;h{T+r}qtP(6IlJ#P~$$;Re3W>&Q!MU=QN*fwxE~uSxZn*>neNV^? z*9Qxq(Av9C*!FF;Q2(vf5q~0^@d`YkWPxWv_Ku1vUvWFhLrZsdKNNR1SlBogiN7Xd z&c>;H;sGsS!T zsDR*0k6qU8!QP}<%;hiKWH@J3g`o72N(^p8=Vd2tP{Mpqir6x9sn2MxO&x z*V1QiZP>C{&(*M;%U1EpKFJxaF{)`$b?CM9xcSqA>yyKy0+8;CEF({2?@`FC1EJF7 z-bN&ZwF~>^qrL183XyX%bdJ|?zWqB zm&s5dKI%Y!dSP;+brC(0zHkH<#7Pjp0oDoODX=2>RPK8~@fV+yC9qf?-{te_usA)c zVCCIf;bM7fyN$M7b5@3pwJ>*BPn43(2VAXTThf|n89b2YKON7$+1bWt^THU#%=7Zd zgMTl~iEE+3^u{*jr(PS4Z7*loyV&z~s53_MZuHJ-R)n)b+@#5Nwcvm~qMZiPTlee0Q1654w*?2LW`ulVdYpqpD; z>ZOIMYitm0JfpuHa0CkkP-K}>ni{GrN%pxzBhHp|&T1MSV`VmR8ojH4T=6^vFTRs= z%LAlKH9NPOXrW4upSc0k1%&8ZUolen1rLDn8@lqnprHHh%-Sfavm(&jATdu1i=kjji3!^8X^&##8GT5n z0=m@fEhBh_8|`*IO=)2uWO3mf85!F=UBZD&99cwN^%tfEjtxA~?j;|gx<)E&MUrTm z9KEPaZX2&Uz}LvIt^WlGu(@nUUVJdNi2t0Bt+M*U)?zuCbJkm#pnaMx+Jr}fsT=fA zgNd2*<=Pr4x#=ZODK$S3WyILtNfA5uY_ka!es6$|aKoY;psxbLgEwrYs?a*y+6tgh z?xzpkK5P^bPx&@wNOf(2C;ov@Wx`5BzvhS8WCyZ*c>vk9g;ic%lQ9tAc^|H$ryf$X z>_Pm#82%;yyX7K#f5mfdc_7o1;s{K~_RIwWz4+UFm6;ndx*|cS{l!S^C|AEXppKIp zd`V`0xqh}+svb9$W@nSAADhI%EC*>0&*$CjRW)nLKf}NV^7rrNP!cStM>-81*WExo zho;rQ#kvNt%V^{2{bhx*Ov{sla&rN|R3v<>B`NBS-`hac&_S*U9nEaxT{DwQU* z&|)f`6{vYFLVCw%2YfU96)+7y+}szseg$AmV>Q}95B3fpJ%a}zfeXuw82N6#Yu2xS z6>o+I5Bzq}%(NlGq8evIQiXdJY=^b`>d;Z_xv$bbY65PtuAyw1v0m%&7pGbE^!Og_xqMyRTT7&lY(9ParqFx?*Pb(koNEYC$})9#U?Pq^E?S)@!#ApL4w#FU1rKraQ$3euhV!g322N(OQ3*J|m%Z0qyLiTqJZux|$aG z6Pt>3)H01!hosl=((C2(;juu_3H}KkXcS18ii^a$MHiLy5!kRrqgNRZI^b72HK`!L zk@x!_4-Y(XoaY6k>w0>YK#n9ZR1MIwTrUsH0!mwTY^9`aw5y^L$1@h7HbX3319HNp3mq95O+eHYPQS^Y1Ns~ab4y`ORLm2t#^IRNq9f? zbPGlEBY%bjX<_(2a>M5KG&r$U!$g};AK6dzu-vv!krKOot%(j_6A1=krS}t}qQVQP z+b)Zko7sKtmT5*Oo@d$eu(G}kjRM3!%vur`Vg9GTHMQ~B{`Km*6{~pTZ?y5_<+|sa zBz5paH4+76Yl;+;J;Ft`Xg6$^%kxi`5VKcPT4*lg?_G(W%3{q?g@ zD|mn;CRIj8lVFP$e}azZIR?ykDiW8fIO?UYg!kirqfIy)^8L77CB`q3gv4&E@89x$ z%Ycl)d!xglP!-|w3LDD_Is_@TxBG!PYKalrHwJUF5)KO#Whs)Hq1X4^w}dJf$#`TT zu!@R3tcg45}bdG(p;wEWj5AFo##rf6%}v={#q=3(#R~W zx`RI)-Q61t+KWGac0#q)*opK20MLdM-wfBZ3Ijf{!3Jp>LS4+7_l(|#f+GMcMU(fj zYG#cer6yiZQ>yR33gBW>U+>vkb;wteyAih4f=Cdk03c0599?L|b0O`3!$Y(w-y)^P zv0)cEPU+V?rV$tVz=fnG5uvSOb^rD%v|)l5J2>?jt@?Bw#owFZ79)!t_{8bP|6ef; zwJ0nrEh|{z7V8a#^fu1=RIDxA9Ul&vQT97@>}|w!f>1oR%S-5Gc_M=FYd1eQ-*v=z z1}e22jd5ce{u3s(y(Ud^#-#(Rp8j450_vA(+)JY#+RR4~;Zd^Gpo9BVR39hcJgG3G z&Vo-k*p$e*Mgg_=@se3sSAWO(C^E-jjE%BnEI8w5Cxw{B2Q2x^YHHCmAcK*LJ8Js= z7(vkRU|)2)je3|UrM;xqHjke(1!;otKYi&El+)W}q`H?A2b7ypLfvRJ@F>y~bVe~y zQ?OM6G}Uc7AWXnr71LRmd_R|Vr#n-@kf30m12_Syo_;97Bb8<@EfNwV=KGl0X|aYp z6Ln8n4A`5=A_GI9dpSOWL&B^3h4pI5{S<47%|#-=w#wWbl`Py0l=$MSHoBf=G5qZ- z=y3T#{kmX<&oz!3W3U@Kc9*ORTSdejp47<>_}cG8U=n;vreV52Sz zf!&>v!5!hI)2nBJ0n0r*j1nGCLbZ7@uxKe zlb3#mD}wt-{xM-7f`rREZgfE#`#K+yu>F+iL&sQ%5IbJ4x?x}jHB z8My`i7a|&3C(O(bDjyS0E{;|ER##QDfWV+*^$a4ie5{TAqOqKV`>X0$_&{nQ21*MB zk=Y&t40*d;rjQ40s9_WLv9I9ZNc(+EPhhB}>x2sbW#+xav%GMS_NlobMGR`4D&qL{ zKG|YsRig8ZhxVi;L%@!bB%$waF&3WoKfnhc^_k`SnkxoUIyxcp7c`o99ql;o`kdhi zQ4ZSFv;?}~qaBCCik*HEo87vlUpM8mE0OefTpE~~|BZ}AC3cB`jvQ!C-+y+D2m0U8 zM<`>#w!sPx#Ut8_Kp8@eXqy^uB3ck5R!n-o*HLdDs|9~dX!q=e#;1RB@T&j*O|MJr zLd@p=vMgyeiwDMFQrEv@sv4Q}=W?Gg+-U%jk_QgPl_55_y1TB&-PIuW1Io=XiX48A zl;qfRMhjk`NqN=-^hx4k8Y=)gPY2Iz0gN1UamCn+NU3|?^>yQc zAQ#^z13b9DxR{GHlE^5NNrW8jp&@lh7J2N#tS4Ahv?2G6+RN{UPSJsG=+xY9AU?_r)jE6? z_{#GJynPNEpSCT0&BKicE|_lYFQk@+a`_`yS;Uu9Xomq#oa19KU}cg!@KC)!3oqVy zpQd~LEly`4GKJ1|pK(+p1b+PZU#E9D%Qj02Vkq4Hl(*$>F3s*NgDJVjAWy4*AJ!zw z6OOO+k|z+~`Ta+D>MMn&nP!(<;L$#LoJCq*Ixht z9fcB*=E|qBx_U~}{UcX^&u<#F`peh?^ku|@13;HivFe?lW?NrWLgQf2>>P4uh5HDB z;T7Pb+w>NIxrQ^{p}MZW$zTxDq9|Dvvf!+GEpJn`l0UwWL*Gegj?mGzvFbg7z<0!& zFVtC1l)KaD{Zw|!4J9@G6xP=IiCyuE+Y6|l%bd~*lK#)Ffei9U;AI2V7clxJ>YM;~ zfWxFlU1>>#?fy=@G|+7-fYVT6j-2v5>;26yXtR^VgqSsYVl{!J0+Z!Kj_%BO(j+h) zQd*}NIZ~>$J3=2PEraa?c#zd6MgyZ1xoR^~qKtPE&IZq3uKzN3t>105xS6<1l5SaF zGV7Gn8tXO@tI{n*E2Jp2DB+>qiK(t8OD+v~UEuXknHN+k#{|MGZlRN-*2Du$Nhbxq zLwl!s+>?S8qWWvjbqKB&Q~-p@N1>u1f8sKr?udtsxY*p~7<^Y15}qFfVPZUMQ_3>2 ze<&G?1CojIQ0opIz=rIJ*l~8uf@?_p!u~1=Qp>p5Y=rxQcqmNFOKQhpL6_dTH9?AE zR=b~5RWE=n%=;8wCIh(HX;#v_cQkpVcVOT#8ygn(7h3Md6s*_!p@)136gR#Xh@OUj zomrXDUU2b`f`Zl@LO49wx>x9GtJx?eSx89OK#GUgC~WT9Bl4rTQP@0>1YqJap#&!p z9I32n?|lHWoy@&HevY1V8`JA+XUzEb`8+F%Qnc;q5!PTvX8V=_uEC;4zxQ6HR-Z=J z5yQA(lIhr1OLIFGpj9)+{crrl@@?g1x!!)CE)gZGr)OV`Oz3y9~|g$Evc@EW`6t4Eu$Qb+5hadJQzsl7=(~HD;A3i56q@D%ohCqx;Lc$(Ze&73?|BNbgFC830{ePLMQO zwht?2a$?rI5A+Eo)b6C}Sv{L`RK{IS3)5`vnN-?Zp5KRY#|-z_b^&usftx1&C#`hH zL_DdvQfg++-~OWNhNY5UAq=!QFMtHa`+wa6fY2&jdP#ijj<0OPj0<|Zkq^(33P2ci zH@0IY{u&2TLgfi1{tmhEJi0@ARALtRGDv(2LrtUz{Qacf&cCclWJL8ld^Zp)U-q#5 zUUau(;VK~28^Zx}=uBS9eYqE!0wgc<^S$CDD0l48Q+)#DebnGGuVfsM&+w&BI1~$> zh2K+&ArTr24Ci@87Cu1H1Mmk2Ix3R% zJoB!Skn<#maA?t|EbEJIID9vAKfwfI=V54`3$-qTI_u$8~_gut(9_o2*57rb+ z1r*5NA1sU_1Pl+iHt$#-!w`A?>zIgvmGZgF(>gtf+h&OPU5}l*fjWgcc<~@l)@J`Z z(TVN%Tlfb`ia*(|e1NUVgL)?jf8ltnIv);+^1wAU$Cfd8RZUV_ zA@!m!KTc$jzYv~;b_*^m@Rt@qwK=cCo z$h|>jHMF*7vKn8?1{GF7=C17_4D9Bp2lj^`yjz#=0%XcRd6D6)ZM8^qM{lSCSmdK= zxAm>nvD2r(CW4K(##VV>Cm*d^XU*&%o>JRS+T-Y|5Bq-yhoCKEad{dfzJHHPhvjiG zW3_7@J8c-=97}SuLr%Bwk5%JOSewxy(3`Pi;bZ(Ou>O|iyiguy1Vd6~p2P3IhTv&H zwt8A2LNZ#Ur$#BVoMcx|ih6zce-)%pcP9GW zX_|$o9-l}ONSvtuvSBCBbN&TDz0pWP*V^+p9{EY0REBfIuD3ayWTOskHahHI(j<(! zZ_RPtFbGT*Ps`gL23ye1s1R7o%ly}3HQv=c{c`<#J^&AEL_;G)GIlV1dc1dd+C}aW znz7pjh132H-w$+{*s+82oA00GK62};Gdtk4iNquk4xa2T08CI#?*TevV^50A{Sym;W=HR(YPz#2 z@^31}Iv6VNC(auk!wKN2+3D^|-48uJ0UPV*W?IbY%Gf2G4LF5)0lY*rI*N+kKh(r^ z;a7$&ux`NdgUR<$(5Go1pS2`Q^1TeLFUXs%^7yA=lQ@;ZUMANi5cHX6s?#ZCnA5rRsjS%K51iNniO>-bujWkJaCu?^BD(Q z3l7o*1AcK?es{t8A7l$%vEQTBixTk~lKMBt(rFS<^JwAb^rt>Fb?3ndEp0Yldd_l^ z==i0mmcx9gxUbHC;a9?z`|;y?1QWRvGgk*Ms%$~H+%s?EKhuN;uD??e)NM<|$H+wK zZAnA!{N^k3&5{Pet73;^5|4~B>+I-@&hS4>ERC*md9>WM#z=4k|GcAteH!BHNVaR) zXpKQKjgy2EDb6QgH_T?DLubQEBvSab7C!TBe8NY>BV<@5C!zgX5Pl`dL(Vj7@#^M& z?qng_tcR_&+k02I1A!T1BBxY;O+m<^=Su94XQFfQAjlUfQnU>6ZxC6|fK&jNv!w|< z6b{Y$(H&stcryk?9kWXni(muyQ5jVFqTb)biliT#s(C?1e5YG z7|N67T{a8?BE$@=PWX|#029f?N&ZgJFK}je_=AJE(_$dQp)wh8^hc$Wt|m3@E^!yk z!*8vN$3I8=ktB^OmHl1^?|cB$Rm+J@8*Y@{eU#)7tb6FsGIiFwF6_ng^WPtlT{Uaa zVATisJ>^I>J^R_yzPusArKBuaN2dV3l^;jl={hUO+%n$)*&4e9uCit+NM`&<(` zX{f^utnQf03WHyqlL*c~5&kafZ~^5OlY8GB(5y7yWF#`3GxImnZ@Xz0#2(uITf1XRY*; zulag=D`TBKNhaVV?f;y-@CMQzX9hsOV^9SR4FzGUjd`q1-F-0m+5F;_j9aq~9z^8> zI|vAYu<)15*C~Z5B6WTos1nmXaz&lLkOX-uL?oLT*1ywU9`D!B+mtd^CoUrOe9IOL zZ$vEc|L%a*qW(Hqv8h@=CDC|VeSsjg-xDI+sP%p*m^MVB zii?2^GIW0RI8b9Ov|w)}Da8A&p_+9u_2_PSDsusQ#q4J3Rtx{&?ey6ZNJ+Th@qj|g z{pyrzYGx_#QdE>%iKFAAKLA6;r>?O&dwCY*SRyzBU^8#ae+)N3e^F_UJWM`AMIl+q zGAjc%CoZ*HN96+0V7naIzJDHxTY-C;riHg82!~~$2Ha>#c+Z1Orc1-PY%yPkZ8I^ZJ`PV_HsOdF8iRSw z`G&*aMUN7Vsg$J5pbi6jo|dpR33B=;Y4l^%UNO54n?|bAX1%Lk3w8q3P)bS%)ujA3 zjctQB-%$xe-uBV%Y;0`Qei3$mWnSnnoc<}5?H7cbseFJc?G8rcvS$+X585&>pq~Yj z8)sGxoBh<12Yp{hJaEXyvzjXuq$W*C{$|@e6XQIXU@M90doRHVW%%Ci3dog<+sUA> zLmv!zoMx>DF97p#*_=@77|iOd@RI5# zD{IFD#N-iDn_*IHbh0?4Wq8{0oAnVVEh>l5;S1>kD|_v9N%r8dQmNBwfuEopr&KN% zA(fQLNWigAR#Yk?ZRer>wg}+BzGc#k1|lc`(cg=iYoOk^*CbjjU0*_i|0(#QO>whD zXp5#azGiq>Z9o2Ky3DHr!n$iLR_^%9Tu3|67&@7B64$-8f}^xK5gPcc^ z@^a`29{n><($LPhhrobgwy*>H$eKoK6?>-FRD8U5d3{blKVf8NmA^)F=twfAjz@lb zl2-~{)p4y*QdA)~%>sg_p8uf+=~*&eTE%OJ5#%x8J2^IF=@s@bdecVxU*UnVQOd

DBL3?}WGm@S`G*%k6>mB~DF@zaG3Btay@m9|{y~_5falr!u$sCeK7l7lNCsQ2N(yf82E>Wi`oEu2&}EC zY-iFQXJRfG^#wwbeaZQMLl?;+K6+*ANkjz3>c8=8j#z3wf8N7gGvkygF*?L`o6Ik& z5vqEb;LA4PUdW>d_h=|9g(qx@Eq0?cUKwSf-PV-ruG0jWN& zYA>ZKwei>T9vXNXd_DKkwaQaA3nfsixoo_$MqB>=$^+tlxwm zt51BiBsa~>&t@<>7m6aho;Jb}O>+eO!a@RK|IdG@Aq`S*g3XSPh9>FQ+S(^Z8pI@1 zoH(1>_dKAMAkc4KRleBvm;&PQI3#Qc0?fl*`fFMEZfp1#J`_Yb>YD&LQ*f0#yybklX=IF-q&mI@ zmhL@T*}?HZF5eHEQ@|if;EQwC>l(c`ayooAPjc!y8@)-VBXO^8_dXRZL4vJ$A4$OB zJ~l2(*nRwMl&$ahch%MBo>g-i>NtV53{yH|VFxN&7!;-^)CiPLoI{o_B|f8lATDS% zG(O6a9aHT--;gf1nXa(|(_u__an(dRB3#f!b2Eo+Vk`|h8y4hTet2V*5ho19?GqC& z@fPjZI&uTlOJ}py9?s?QxH|E(`#{7~i3mh1VpbLt=hiT(M~U zW8dBU5CF45Xn22bZO~8P|K|o&TXlYM21cfuL0}VreQ!PTN4V zH>$xbUON_Xr1Ho08VMuq2p*bm)Kh>mX}Dq*lgzAHszx4L_wHTcB7%Bg zi@h-K)|B&X)!54Ml&U&^D6wohkY+Qj)7B1q`w8vsg?XawY|QAVt0-T1-Z?;P3xJ}J zmqXoVle6XW{_U+{pohll=qmq69klzjOk7Y2j_&+D!o8136WI20nG;HPejk+%cp9dr zaLHj*h4$Felm6wwaz#@Q9AbmaCmV88cAVu6Xg$Ukm?`OSQrp#T&2$oBxr~gipiuW| zI-yo|&_wgl*q}ecPXcOVr%!((HXAUQ`I5)+9!%SId_S}(&@lC(T=IsNcKJ_fvyF)! zQ!JQzc&?qk$B(Ebhb;zp@J;Kd@Cs9;E>|L~TKoB2 zowsoNDRmxLL4FH+5cep#(B{Demo79!7N@%&9-}{>t9b9yUS6J%IFw(!jEPQ(<3PV+2YMrC_P* z?&>34rpW&`86czOBd;_@!P(K?GhbA+0aXg~p0917r_ck!fk#{tj=_Fw(sY2VAJ0ss zXVuh-gC;&iW9!JJIPB%^^~dPP^B>Al3K)9T%cen`Pf;z?+J7#^_DcFJz5td^)`Kg`q}emNpgXXjuV?C+hwY-#m$tdqv6=w z07e=LnnO?q)PuDQ0yib-{8Kgg6)~J$%pJ@>!KrlCogB6KUiS$%zcWA%`o-n`j7KsZ zb`Y>WZwpMw+zOl0p>yjA-%{QPR=%ejt8(UAc9h#q9*akqYYh#^#=$UUKJvwjHJ1}(Na3QtTXVN&Tr4yPn7rYsMU#(JjP?s==|G1x)!UB2I5qrC1Rn}%q zB7U>6YSZuZyhfvX^9`P1Ii#J36~BFg3rWD|s?j>Dd!}>7o#&p)g2C&nU<2K~BUDox zl$@5GfDmbs-6}k;Us*g#miMJ4o={809RtyQoN@R25;cGvW@fM>jLz(>G+9To9)q*} z=9lhHM?1rE`uU5Mi6FQxur!|Vp*{9JT-(_PQrE%KOc0FLi#>%`b|l&$f3^Rtr z`=uFj@Q#sj&)0H_eH;GpJ%_1kyo0gJXWFgS3GaMQygc2`kln~8fHFNTJ&*cy6PxGN zF2$hhgGooXU(_ucaN9DS2Z7}qi1(t0^7nb7tu=gniT&Ltj~hkWjfa@bwp!og;8&i_ z5c&B3ZMIwIhE^&g4^!Ft`2@eWTJSjbo~z5ELLjpYds&$QoLauviJFA z&JT$xjX4;pO<6HqxYQI_n7?QqR5r$jtgj6u$py5^mcVGP?Tz_K?}HjHTy)adl_)3l zJ0p*|x%DV#yeRDhz2-$gn0S>0gbHg`+Vs=Pfh7T}T-#?8^bi^wdR_zArh?ss?uTw_>@mAr)$hi#1{98-)I7wARVhwP3Ph0t0OEbB53JR>04 zf)!S_&7cZqXa-P2^-*a-%8?Co8mCH0v-y#CT?l`eMr zBlpXM)#7BAk)JB*^E1>Wfd^`%ax&cQppm2>}qx1vOvgvH6P zu;JuVe<*BmElb4CgR--IxZ|Iqb}l4Hw3>NNaA8OAP!D`xqvEh4^MyFy?)z%W;WR^7 z?cw&AyqdU06MP+CWmD#@bzcTzu=cMKkYy)>s;ALL&i2<5eE}0VzQ-YDt%sglRb6>64y%ngu55b}_=7I*D~Xr9)@q;x{a!Y6#*?%*;M7 zRB7qrnPEB1srh|QxKVZ4&y!Ww>tIKy3u;D4kWr?}HuUT7Ro7K@g|;;K^Okjx={Vj3EFFXlKkd@LmD|W*=bQ2NYoHed-TQ ziPq-0Jwh=wpU(P<&2{UDSb6I&3x545rTNNOvQnU5?05J~>3C4KWdn@2TE_awx}j6r zO?RVx*}5f%eLUnk6zXbVoYObsUsY_7xiC(1Jv`zhZ>=lH2+s-`nQf}yQO_0=>jrbH ziRU^KiIa9b(R7u|4-(d-C2zsmKl(-RTVI#e*^a9L#8|UJDX%g>LYVKI+GT^J zxs6QZ#hIT);{a)vsMt8IL03Y0U0wEfzha$P)9d@i4x65{u6z#61H7igZqiKCJKjw% zXckS&1l<(Q({Lb_rIW1gjwQ34Fr0=FH)%m3q49@&sj-=2p|kC;Qj*pA zShJjPnwtyD?HTVr3S1E;Y@PbL@=r zbGZ2o^gY)=&u+$UvLi;Jt)p;R{daijH^$GzricG_*D|(m%Z=yf<0plgER5AFnS?q$Z=bzpkD6K(g`Z(ptMpxRD23_rkiJK@(Ps5vYw94Uo8S z?z`{tQtNv~b#86X-+U6}^Dl+@iiufW@pVq{?yT?FXll|l>RK#Cc`ch3ay@lV2a-cc zZ_5-DGC!CEr$2njafI5i{7Y@wSMl9-a2sxWX4y5j&4!gqzyh3^&=Z$AFjMaUh*OON ztoCy0jo2`w0^oiofL_aHqou^f$LCW=va4MsQ+u;15Vl2z6UuvAP{ZrjCW3+Dp1?`i zISR2e;mR72F)e8M;3iT_5WD}NLK20@f>7r@==ylf_OoJ2t4;t2`|oK5;Nap}uxY;z zJH=3xaYSys2dVMt|~53 z#WUT=!rdx?Kl^;qp=(dUOfa6@@)1ihP`v&Or7=ti@1zUae{vo!Sl1e|y&Zu8O2A=VJpt!6&+(wt_A-t>J)dC?=iq#_HA*loHy2iDuk4&iJrw zCu|RS7ZZue=IDJZ&2X<=-`-3InvGV0ZhS^a2oRtt$eDBZ_wV6A>Np6xU?kl;JNt^q zV%qf)2lA8YY2D)q<3x_9VX1uKaX5A@=Pp2+QBEe(fM%&haEM}r*6Ps*uZ;6_y1yb5 zUIqi`QsLS_aJGg*HzjlN%9qY1VCeDG`PI$1O`6@r+*9wO(Ko}hEVgAhQl$L$f31F` zrI&ZKO-^c|n|m2#XNqgZsneis;!Mu1ce0DVLzG1ANtbsqGrN>qJ{)D;)d2LNtd)AR zA4NKGvSQ3D@F{}AHE0{hs2zDo`5G+Xqut!?~H-(y;e!WVG@bf4fj5J*xK#y2H zeEbw8q`tMP!P#P`mRhI@w`j-_Ue+=Ul0cR(-nj@x4#dIC`jAx^*p~2tS6yGrxVePV zy8ibBFtROZteHq@NYE(wHe=~S1)bNn+|SX$VS2yzg08}a_;l$U`#1PCCW=}2jp6kp{Y4P)#K+}KEEAjmP7Et_~=Bb5~woH@?)Zz#*{bA_??2W zG7h{gX#^{B;Xo~)R!bZ=w{*EvUWaGZnnj#1XB3ET0KU@k*m!ouNO3mwWNW*{O9loy z*ZIFv!g>eUaf(yi#z_p&a%d$;g2jBX(W69*-vLqVm|>>91sBzkrLm3p_k}NKMi_P9 zJ}K_)khGlso>fu6Aj0@Phi*s{GFCyj?C6$J)W+>^uz%)AvS+>a-ph-LHc+(sd{del zLRX4tHr*rT);do-`8y5|(_yd0h!(xpY}t9Jn}gLzQ5WjE6uc?M!@aMT_wJ9V#RN-w zyr2%oXOdnBJq6Ygz$}cEvd@sCm>wsHZeJvJMz?=HeEy}>B(2lbC~v>I`jz!g_8F&S zyU?dyDXF8ywfwB)d%O14K$F#w)$r=e$5pSV4oT-Ex9H1*>|%(Jj_$a5Iz7j?BdHt& zySiJ59;otlG-MwCFx$Y?Cky{I_6KX7HW>$s_iVGM+vJe384kq(0riEx#V!#to`VqWKRINc9AbFoL-|yEY zK1%(z;_qL5p0AN+lpI5k4M0#u34ZvaNDx|Xn!y)wY*fv#>@@`gB)yiAy2iPRa%J&SrELIjtE|D_jLb&ZP!-xxGIz*3W&Jf9b5bgLt?{58kP{O6cT#i^ z@W|@Tmytx!lyt5`AJDUcw03_f&Z4`gGQ`v(kR+y8z3cBjx;4UK4sTskZQjfZ^f3Tzns_*I6R3WRF7{ z)V0DgI{~hrt6tCk7i1_t-D$CXUA-}1f!FU^2bt&LV%ot8_qBmcG^sHrM6$hc#0@7c zYPYvlu|xW>P?d$kR=~G+$LsQWfFnnQziu$)-B?Hf3PUlZ?&d&1`+WC?Rw}29g0Kb1 ziM8h^sV;NQYDc9Dwa7=1b~Y0?T1ERC#|Eoz8ZOlJFzGRDD@-U~JN# zf7^z0^BKSbkQ-=V67XBMIzsU&Q?87-*uKnNKU7`$>o;M6R;K5gD5(`jgWs=S@Y>so zvumA*Hix))jciTOSIELk1>K;vymTB~WxVSm^4Pi>BR@s~yI7ho;PWFiJZPsk1 z`^%rsB*JW2*pfcGJhm2>)GN6#$AzrbzN1i9HvoQZ&W#jECuen^czbg^3Y93(pxBJ9fq?5*cP&IJ$6%?BN{eM!=+Lswe*hP_xJb3 zw+B%Kkz6*>OK~rRB0$yC&^t}cos~WxcJmmpPt;>8%4BbwH0ksNOmIq~&~$WtcCmB5 z3TB--f`sk!mTq50v%%*xn%7i(=fjcLd} zVG$B8l_+DDdV1XBCfwfqi`XAizmy`#@Y$EUR(kAQ)_Q6MmjQ!grJ+@r8F>ComPsBhF4u{$!4})PVh(mxZxq>{@J#7v0XR_Oa$h~-1$HaS zqp=`SJD?*Lp4&6Vs5r*j@j=AAc5B$Z+2>cE1YuD{j~OuDe%Ldh9`#K5jK|lc7Or^L zHz96r1Uk}>G>h-y{at*j#Tx*yZDV}`d-Cj}-gLWO=_Ad`eO_hCa1Kl&hgbC5mYcM1 zN`M)J?)ofCJgcRvMR}h{zpHeX+uJN6DpipdyxEP~m5{3ZX%xRkI%w4M3gBtZ`E<9S zUve*MD2p2iq>ud|*#H{I{>X_TY%Dk#1F~aLQe525X2<;kMS^i&`JKYm%R5i)4NC=$ zPm$##w+k`GX5PBUt|)X>V0qr0UW~ln*TLL{op-+UY<&6oZN_vtVoud}2DkuB@IA}4 zNW^7@iqh1mp$_u9tvl#DgAKL+m^+y<4D>^rtwj<^5cdAb_*ZZ~S)chlZK(byi(+(IQ%D;dX|;(r#Fsvw^X3>kt*zlYUw$(zRD&AVl*{ zTh8YrF?B)@Q>qt^VVUcfxQmPtk`jZ z_Afl69D6d(KO4IJO-n3yCe+E0l+!i1pIqq0yujt#xvS!|qSbTGiQw*Jb(_hsQrfqiD_;21d_$jUzGBMkBkSM%#)qz z3RkLloUC_$^~y-^kADe(mA+m{z4Aw5-aA>=x(0y_!IT*p&KDD2#6ydRQP|xl{YlyN zAH)ldPEWR?KArhA;UO_2o5w?V7e1uu@?$0of5ovY8t|;=)@zkiA7AV?q zqx?*cEUhiza?yAmy2VH2Unaq9+xOiU@A5r~t`*}&Y+*y_n>tmXj*d|>c3}d18Ws4| zaAkthOIVL~cVnK6fA$_RU!~Rg+OCIKl#-IIgL?=G60gIUDC})x(k*uMGbk%cf5xZO zUV`J}-dTmSUFaL~1_P5zBHo@{rhtT-qYHLCN}|-4s$!}p2UsNHCbF_&I@Zn=8`+&# zrfA=bx;uP>DDkg>D30s2jxg)5IuyBfWmOHPE&n~=nFWmdna{oja`$t5?zyY6W58lB z(x`6U+Fp#i)NVcX_KkVg=+;ui!GOUmpq;l0BzVTVmLD^kClFHSvGfAN-Qr!yZQU?jDDlzijWnZErBjjl zgK+Uv*! zDnDZ{9fm6WldF8r;eab{d(E(Z^9yptL9LADaO!dI(i=F`&#avzT0pKx?_n|w?>$vF z#J+b#7Y~#FA^wU8hp};-Uu^@UP&uH7{`Q>fpp&e@d`v3oeh;XAxrYAj-OZK-5>~tzY#V zjF*i*!uGb^HJ4N;W&l%BM=2vgq`Vx~=7eD*_<)t|aTO*8p72qZPKE^zn#wDy7Rn?C zD2X>PQXUVITn?3few3YDMx3P9ptl!DW8b%PuLy}iH_yd|YvtR9%qxz-hOi9VH^+R3 zbU@~>r=-Y6t+eA+-b;FmcnHhLOZ=DV8f1b^INbYVSj`>7836!FOE*FN-ZSguV&3=j zG0q8qQPOA6nwndy9&@56OV)&$4Rpi#9j#}*X&MR-tnWgHS0Ir3_cA{Jz07n3rx8U? zcI}o2dl5^3SuL(gYT8|0qTFftVy3RPcYx0*{s(DnphT(B0qH9NfAO97LY=h2Qb**e zk02@{^=2?ie7oT_eLu(6z8Ox-J>7?gf38cP&VDsS3D%NZ+I^#}iLz8#TH4`Bkl#aD z7i#E6gCyb+`6zPLJF12G@L)~;BZuZGY_+3ALco8&+2`d&M0adJQKxQ|LsB|SKs-Yz zd}yLv^c3iofc&>1CEk{_(8SY0N&NnI zHk3TJvfAwYn{6yFv8209QHj>drBMsa_614~4vvZlKTsyc=*z_>c25^tD616`N;?U! z-R4((#CvV0h)bcF}-u7n-$f~2s2&$o*MEp3}InR7XMme1p z@iicXj^DV8#sbaH_s;~Qhgq4eK&7-&ZKms)7X-DO+%Kb_N<>!%i#*4`P?Q*%>wy%1 z_|W%|x0vn|qEB!3<1o=GKasW`+8n0&X(Nd3s9j%&phX`EJPIN)*72&g9;ur6A zLk6Oxpr|qm#TEI`Cj$d%kG2%b2kIngLX51xKYz4RcG<)*yAdf$iL;3MNyJSdI?oBb8stb;?k`|MMbHmMLPKc(2F!aEBXbM!-QaoCGnDYYn1ln`L6`l=oUmzDLU-FFfp!Ew4ot1>F&YBEhfPdN;4^eere zr5$c8Shinmhz8|i$~MIu>M_t49(v0beJE1XePpo^LQlCwJ1KcY%?kyJ^RTQluHP=r zRDt5nR4oQjD4pIIQE&hRZQo(Lq?CWGqy57du9{DiQ*`+Kj57Q^$xFY#-73!zQb1?_ zo_d(2y^<5qjd?h-szh3@v>L_&=TtV&zZM2E15;|3o@1b^(Oo0?(rsNSb~m=DjYZWh z+cUoB4_OEokoF)$H5i>VF-!`ztG_QHq2~wGMgAZaiFBXzytwb5OKh6DORd!Zxa-u5 zLz6H!a`-;}(sg}oOKX|%82d7>KWGc~F!<{0CKnd8Q-q4R{mtsp=ilFNAJ5kQNnjg1 zP9WES4mQcIr?%`3Khy!uk%U{Q$ zgN`xJ8T@eoQc~qQjinL~DO@#q!WXtrt~W*hl}sA3>vK)r0r!KBPO`61^`N`e(4McF zA`MIP>QyOJI%;Wzi-`D`7%qGS6!mHzzL%Q!ai}uO|E_orD3Zt;S@sD)wv@h}%uJU7 z0J6Or#?%x=A`I|KpF3GvqzakUCy=U2N^B2a3Yi1h7DkHqmYADG;_1s~Epv^N49YW6 zDvwW{s>qna>CVlR9w&^P_O!FKsiuKN)skVYd-tB z@N}ytDD&|7^AURrtLQA3M5uHS1$}=nrKmyC)?iQai`KZZoxY+^{A}*w+fNH3FX}H- zXPpk8cO79hWp8&#Pn}Kq3Cv7C>w%_F8xvHlxf_|99a=5@W|- z4E4~GMF0DpKd$xR=!?DpkL_X{I0X!wlR1)U@-^^=XJJ;-n6VR?^@iay?gI>tURdAR4&BKwb zVWnnp>`ljDaGH+OG~Bt?rAye1JX+9W8~FTQTFdO9hup@~NL=Ly1)&mXq{w3?2adm; zRr-k?FPx++o2#!FXUx?Q>EbrAS#WQ*OK&u%AH^!_sW$oWcm}&NbrsCKBv9@23Xtb$ zuzA?kN_|bazdL20@x?*B%k5#@!>C4A;tP!YwwQnsVht0Xbn$tY z4Cqgc1q89!@gTw{zurLYzQrya*UwC}5AEeq+ofCq`uISSh|dB;Ln^-IiBPoRz-8K}Tn`p2iD2ydys3fC79eqZRAp^w7vJr5{TiuTy(T*}YrFuGRr@;P{4Az+iif&fMcsMODAS-CCFCng z(3_%m^Qv>p21SQ~Fts#>46FEf z*_H(HjFh<+9Hcz?!}UJ3Wy>1SBI?mQuQKyiAI0P+l+X(w%S4FN;^}cWUBY~z_;5Q- zRyDohZA%edtliD3i~AwO_!`&m8~nKugE!kKZ;le)U7le_yxQJ8x+X;oICFW8-<{Y7 z+5SE`9Hkvx1_B*%?T@V7`wXPtO4^h7O4XwD0tXU}pjlheqTZn{sD(p!Pv7kr*9eRv zx7YAGiuisxQ_5iW{(~?EbBU1-> z*zJoz%c78xp?zNY&nu4bBJn{ohP(bBDFc|W1YPc;xN>mfBM36{VAk$LcF$-wR6V5N z0ajQAG>2x5ZHK?P)4Yb}uO>$U$p8gVyM)Q}bE5_kKDb-|Hk0ofuF)3iz{o!O7sG}3 z_$xoJ1=UIb&@o%N8om3o&a3(&NMhL7*g(TTu9}t}nN`T(a}n}M`s6Y%VemB;>dCFa z({ioCyLK8B(2WFN;|CE{p22(oVz<8lOziOR%XPlG{_UFYq!rP~fCR*JMi3~WwpjW| zcinlbQe8>mEim0JZiBL~0}Eann6I#ww{j7AvHAn8akbT-TeSVnPM0y(=!zUc;xDGd z1HgUm>>Urt*6?(2?TN20$=u=;q@=E4f6&Q1l+_D#VjVJefyk(2J`P+Hf=Yc=oA$vo zd4+ft^gIThhwAENI8kIwc?n)c*!p&mu9=2mPw_#IbWL%ZK|JIo!St+GLd)Y9fi#Xg zD-B#O9nXlMs8RXjfp4-sHWL_ukGa*|><)3n0`%x`L$!8`Bg_#{SQ@H>!_Q+Hme?M; zR0|*E?`6hsmJE=>7JkOoo}4#AQlU?tbM5Tz`rqsStIAB>(P1R{fZt{I+50p;O_Zee zBI2oPrBx`S`*4$bX52e_ga z5*?JhWXtQNyfKe%tX~*-DizWuVpc#D zQy(j2^NDSnbj=55S1r=;RVE<)tsLGE0*c}zlOw*G9s1m#!moY~UY&YO_ zHoI^ac;!R&)~EXGgffsGK@#_O$Yweqx?3)oY>#Pkm4|^jL9^@7Tx}numCE}>1l*9 z8fzH)JZt`-AD)5-DN=S+d;8%PX+MW@XDd&K*o)~f9u3Tw1t$NR=%oCXZD0LJ?{1}c zX*r|>_Isgn*pT*fZsHj`CubBy;>>#SH>>iPTt-sJENytCOX-JZX zpS#u2TtAPHz`J`3ath(E2Lr1(Xt}et&!pN-^nV9LKJJ%_L55r?mzL%rZ8!PPzgy42&S3G{*b6vDB1+RKV&ewY(>OJjFb~vAWec>*=7ZleK~@*nL@$kc&~B;yR#ry*ff1B#rLfKs5`v85^TIe{XqbP zx!qVE(4^b(cC|0lJCv*%xzk~g+K}&5Gb*l>Wr@(ocbp?*`DH%6-tqRkXo!r1=1i%8 z5>rEYK+f5fB5xqKoBbtD+b$yVE2pm2$ztZiz80|_^lbp}r#Q|3{B`&R2YKAipc>K? zxG8oREpz=ePmWUyjsk}xEdo^J;~c-(%uy4G-2}`CTk<%i^)DB0QTPLzk^qg5>Ta~z z9YZg!oR%nzGh5f1b9soF)tCZtu<)K`Ht5)`V-pS6Xc+ji4jIUXgrM*E%bwEzIb69K zE*%pjUD;)eRJ(gSqYC}1hU0e>uTOM@^uW2QKIbwqM4z7<7A_%s`0!%!0scM8V2?Fs z!(k1|0%_%6ZOQ|iLbIbEq6h*74cAB;^K=7(oDdRysP%lJ=JjgCaF-ZNpXfg789_^z8_`W`WHX`u!Z*4sCUF ztMuh{KTy08$36GTtK-^oUtcM9As|D2S$#`ImqH9fK`i%iY0$Tswk$7?uMd`bf0(fg z!HaLzx>qPyLNli8Jn*8~=$H=ppx(QV@n*q}!Hn8=7=_Uex*3J!I zqnsqn2BSL@uw2A`@A4Y@|Agi636`;uIbGDFN2H_4t;pUBfzRXvi1H7Zt-z0CLlI^) zUOPfMI{yl`^6+mU7Xq=v+|VdkZ;Btozv`g>-udPj*VBrs#|Z(gjd&_?*}dl5%dvvh zh-{#wX`Mz-cR=J z_4>{VeG>@W06o8rxQZ#~3hGGc9?bRZz+4aN06Y3?3RPK}y_b)*D% zo}ss1wS+I%ZuVrkjxrfRRlvH5v*W3VB$PI1JPwau%`trD@0FvyAKChA3gEP}Np9oq zq{GGs|Le$q6@R>tbm<{s0$y5Ln%_31Lfej4ZHV{O)fYjdjyfi%QUS#`dBa#2FvGr< zcI--N{UCYnQN8;h8A2503TC2bHa98l75jVQj5|Z+O-ypP-^ImcEA8*^}`0N8y6DixF!h=tDTf7>@j^9Q_8Td@w$%mpuPt6( z9TYrf0N~0Z6sRtstH}2_#uYf|u!<5)nmm(Q5dg0P7F2Fr==)%;Cq{Gjm%R(@no)`p zw8&!olRAd$j=uWZg{kGw`+MG%kUPAaihcT-xGeP%8W|M-2pi6%_36IN?Jzti?V}UP zi1D)%h8r86OqSJt=zFoZh?SO_rt!S(KGwJbDHfua?ICxVRoZ#+xI<5$AIq zBHBz=QUUvBC|{PxJI7xA9?rohCok@htasf=h}Nzch8+!22$Znkx;25(&Hvp0 zl;T_H9>X$tvO8fBDPx=I1ja9$F*P_d3ZkG40%waB6VHoD@D~6veJCC2Gda1qj~^N2 zpUg8iM{hwXa=&o+^^%0W1vZO24!(+%I7gU5$9Aia61=r&rxsq$_+azmNBXXh z>?LA=fuwne{;8#Y>SFJrai`g@8!rWvz(#B6b}#tU`|tClz1{+b-*mhC8}jgnjFda{ zKc#fcGNz z@ZGIF6Iz<)0mxDbyiV2(B2!--gFr`UlyvClw+VmBhvHLDPYn#2*?82u9vjf{U9a4* z|5)xS)DGb{Cg9SIif9hn{=T-UKS<3$cQE(nQF`FNZvzj*;OCkuXZ{0y{oI7txPDEyka73g!_f^LfI~+S06Aq%8?8! zGJ;N24y5)770^6Mdy;jC26o2pPf`DkGDeZkFa*8Qd=l$%B)sehXWYy`{rGsev%wzk zR}Rf|tW%kTtQ!qbD+vS}{w4)&jyplotxrxyIRF)-Gd)K zwX{Zn>9gfzf-lm7Ana}}E2B(9R4oJNzj@nV2N}nRf*`<*!3qaMg{NR9a^OTdDZ2%C z@W>pTUh_h5?RN8iFkN&DPV!*i1Z0oLYP4T(M)Nb+*xU6a)EFD`X2L5gfWqDRM@wj+ zfbtl5)KLVCCf;M%;BrI+pg$+4O}lW9^8(zvtxyFMk!B5_$#NPEQ_BF}$n2e=XjO*s zqz-=zh2h-%Py)Z2a4S0wT;rr<`@5C|h{wVU9PY+LZPW!l|FOZ6Bl#M>{q@GE{W|_8 z3WFf)SO9IHn6Et!iZ+kj7~iksr9!0^5Af#yZJL|LR4{-p$-tYZaq4KJPnW^DXBV^c z`xE2&#~?A^LFKrD-E=$l%x`Bw;N-bAxCsBvf*fou9+8;5tQj5W2y{Utq^|xQO?M3K z@SbnudJ@%SaJuamuoE}f2{7fhRoYW!0nayDy4;q#NZBkP@?-b)LFVWltZHK7^_cTB zsq2u=S*aEOU#kq0{7V1l2bg?i zTC}mvmA{PpIREHenY?(!Rg4~SX#r#$^^}0cu+i-<5#GFF-{&-t$)$a9numi)1lHdq zg?-m51GrQ-BP0Acl=5{nT9z5V{%swAu0xwhW&u4zu0q4BPZI%I9Q-Pm(YLMsQobB+ zKk!p#)GFJMVWDpANO+!Ig5GiC;JN>sgMwJ777c@IEk7dWGbq0O#VX*UOtVO>kRfkb zP4P+6ynx^KwtUg^0t(H&`Z_bOSnX1FBpavA&fHQQv8E z9@=T<%ABMJ)7r&o`@T*SLm>FVL&3kr1afKGXT@0!0NQ&$zwQN3AQU;|N1iOE%9Ck0 zug|9D${C;aT7KyS8Bay*4v@t7GH*ffauR+`T`B?SP4xCGm%2g**fDb=H{}eoZkdLvQv|y7Jys@o zfn(0?^xDXV6HmqQ)`&6u0kTi6MT}4LxinAyaHL%~;g1jHwXv`32mN7Q;I5_sl7!_>Wi3fL+FQ1T94AvD3Uoh=BIuvC2Z zX6Eg~mw)d1-J7=dYPM~kG6ThVoV#Iyh5#YddU4Yk&Jdw$;?{$czU}EvJTKAX9dD2# zwcpjV9t0o#a*xh-yvFrsfYZdKU}i@Pb9Q_l9K4(=RGy}f!J!p?j(B%Xj<#CUNQRj# zZ*Uq{cI^lv&v8@h&;oAPT`fMm10vA@k`t%KZBkOgmjy1o9?;SQ4}c|tz2N$`;UxS) z|LYNV;q6RDcpN)kD^JLBpXJf`tT=b@R556~C|9S;^}8zuK6nOLVmCp%#lzpp*tl|( z13!T_Ebn)qiWDvZ{qLD3W_%=2L&g@;LxL(mz)?{98YGN{@Nek%jm_?kXEEzC|Jwzp zpW;S=$OOFE_w4tON)oZg;vYopBIZ8Auwg7i*52y;oD>|x#rgAj=)H_@9Agn3G->M| zGsV?^VdwnY`I&fFdD?p#)3JC#4I#cJTA-=6}8a%Z`uu zUNmh06aj&Sj*#nFlfE1s4pKDVzyC1i@Id(D`=_;)Keptrjo62p77D+$*YMf@Bt}E* z$`XShAP{Xa6L!7FblFzRQSMRF5Xv~NHF1I(alzl9O)Q6_xSM$}!-j_HF&poReSh87 z_q5g8r6|#PcUtr|WGDm?;SDw;;Zxt!3eW4VCzBR~4;hlz*3(wANNTU1(w>c$x8k88 zG6lo$WSgj*DwnD?`G_!+-+S=f$=rE{jCuc~{ zIN)P7S?8X+H)ukRd6Mw@UEB)l%8xJ88&4D$hU!N19KO87;t)ZWKtNb*>s5m#UMLDF zy|>fQh$BcY`S>>9CluFyes(`}2}FrEb4SNj$VLbM#!q*ASIwA#!~E*BKSZF?5sLxK zB7@)9F@M;`8fql??A! zl{`|k$^GkG!>{m9jZ>@OXHe5Jv`+F03V6_i?^1ylTWCJ(uLE;7}Z zN(k?9%)y`8h=HrJ_Dl8HiD$_7%2DoZHDi0}K^A8T;;%`s+NIjZyEF7}4AFzm_UDnt z#NneQQ}(SxoC!1P84(ldnhM7(%kEZ|KWpu--LK{oIxM6yMfi`pl<17fYtEY&&8qM* z4qsPaXw4`%vxRxSoNry7Pke8FpL<;dBM89_AHGH^Yo|A=+c_$2;?!5@NHWbHH%N5~ zXMMIxr8(6+@jYw0xL$E89m@W|k$Q-t{}kyBe14xrm-I6c?szm-^nBEd2u-`URR3a_ z5tS)*&29Z?{p;^_jo%&BGzda?@Eb%V8EHspv(3v13x!Kn(RYhZr*hd+Hx11!l#5c= zHh=bS`pI6tI^IVzAeu2KLrB4ZO1$dR6}!Inp|g7q0lUo|KB^o%)96k151u_?ZFdw^ zv15-2+4X;IW%|597zZEskT0oq>#XXg(=c~&`YAIVpG`i!rNy*-yJ}TcE)9anzu8n% zWU$TOqw)wP#+EHaZg);|`Sqz3_Z|lXzQPK?hJ>tVRg?%aL#RYVs+>%@ z5h(tBA{A@_9IBz^2F*C3tDf2@RJAdOII#|bXig#+IwYt@r105%gJ}D$Bc*%@8eL;~ zl|?<7X3>xE2zuxCeI%r381EVxhR*P%WiFx?CSp@5@%zk+ zt7KG0{UBC?`Z7~+0l&V_%>*KrJjr&m1P2;uX8FKLTo8HJ};Q1?pc`={4! zR44MkgRgMH(f=I_qe8>`ckG5RHtoM-2b{?z@c*57nb(K@-@%aof8zhQZUs_tu#1wJ z->G9MsFdXS2W%}ON`}AB8Z#u818-oU4l(9q7MEjR(5$Y>3q{l`IfYfu|DI|D2?2`h zxGiqAor05)iO=)d(NtS2P+?9?{H>1i_d+HXOoB){y{975l4(6#H8XTKjw0p;O6;D0 z{l%s2-wc2`8?!JgMq<;y@4~izIx>D4n&lXG-+9lThn!S4qyxZb)aMyC_CHrKl`p{8 zx-{>7D&Z>{G!-ecdNcklX3@6gj$=XJn_t~?%o8@gmh+5dLG+l&|4MnFvZ^y5vdo6( zY_bpAo)q>T=v;rD&|<^4EsY;3Qg8IP$m5sIbFDm0vm8uPd2V7eQ||M?+<~-4{Nq6u z?`d@o$OJvl!v~wxG*3SQ3vEm!mk48C7u8Wv_=eQ;FZe)c`Bw`49&iSw3y!q(}yXxd1dG`ko z=NUmH+P@XKL6$=&RwjqedyWH|7B#e8W3L5Dv=yi&tg~)x3NP!`FurHI+KxkvV~W`;HaMOqgzm zP?5i@T=9MV5A}l&*IKqMF0yVlWFY954NB~!9^Qeh3{|cM3w30x;@7ye_(H8UM^)E8 z{`xt$z4foxFx&3(+rY1+D#V_@E-#0zNG`9PW98HLJoTI%7G2?$h^FTILaR~LxJ^+* z*s)~8u=Dw?tlC^ZHd^@jACR4Wk;|+c3GPnw4H`4I*LmT5vmd(djyYvp1qUPT3sbJc zp+Ob>12O~1)f76N(!JwwVPQ!eB8nFNzfMGe2gPBVcHWoZxe`r>`OMNJz9V=noO0w0 zl@F1b@^#4YLa9428+JtQ-Xi@lQp+^#DEQ5&Fn_DokE)#L`US>fKcF8#f`as{&9s~1 z_M+?hwF9K%dh~T~ueNR+kHX8-r%tG)Am@qP6;+&~cW}U2{hU=b+s`U-@iSKBu=_?` z8+ws$OTrHj`nJnNEPm(pkyg%P$Q3SQF<U-DA!k41eesNu* zQ~!S-Ys$&2R&R+#J@S>m&VNqGsfH^-@xiE+YEXsEAn$IK-WSEybZ=JV0BIO6^)E|u5SiTF z^e^9u-?S%;_$tH5^th<&$G@Ho`IGE9VrMHb_r51pnzRcJx)UZVs;$x-4W`fUumqz% z)@vl!yhXgo?C4;#yhJGH@sa+N9b%O4FzRbP9sO@p)^ky~=CmBPPKh#t5ofp9G)BDm znzi0%pqt8p(dt_Bl_T1m*r8|G`5wdu26|q_%*Ik=v5^mlHmS11eX7n-_j_cmkf(K( zU-iaxQL`{BMC$t$_h4Eo(^6ORb#V$Q8lI5m!T1d9Gv%QTo*Y61ItC(jBwFRc-9)t; z(bu__7d12p$Q%SxBG&;U@f~-o->XaIWzNnrW`eW;feLq@%njJ!4d{yQX$)gx`FSFv z{a4J?0|KPQN@{K#E7a{76euXB3v)Dr46tZ}+HSBsyM`DN8v=rMV(oGZ+w9P@YGN6% zWp+Z$WtXFV&Uk5I5q_4&;zleYNS<{6GCqw*GCWBMT+)KbGm zKy_0ykTX0w17sJgK5MzkEy-rrG9%7zBD0B94+yFGfH|_1b|`heb3m3xa}v}`P&zG_ zRKAHgrNs=BTNZB@95B!w?3tJA)#eJjaIYElYd=K z$tG$VIp}fh-TZFWQq;FX9t**)sMRCc3np!?jTI&JVuJMWS2-&Bk3#_(hhZPTSLuFb z4N{jfZe(0rx9HF5*2G>vE&xowrHZcFC?TxOg*_-v2+(^l_cymdH`sbZ{rj= zu#*C=${Xs4&fOY7*qO2z5t`^zFN_QCsTh1*{#ct6MM)(Q)-VL{$q>gzRu+uTjGbdW zr?Yq(d8o|ufHbyFVEnqFC$hTcO?0J-o>8@3&3l0ny>QILTJT1l(fbez#6uK{tr2pQ;`ox9Fs9_VRGsb#}inOef$`HbT&f zBVe6Xu3;7z)oXj9@*z1Lc9qxdbZ6>|#Co50w(?#o<4rRNOCS84x^vs&5M3^AxwXYu z1#{ZvjwL?hsgQnt`fe7PF36)r`(pH>u^I7z_-tEDm)_h|J@x}SHm!$;n^Ay(Pl>01 zPlrs;r%4nDc6xw^C#W@`(HI~#>0zSP0LY}ubb}-tk%xjXTFpvO2|gy&naj0(IWw+9 z0ZCMEjh^|$6;!^g^DdqK(T=MtPA&Nhgcdyq{vacW9JEwy4|(5mb!7rk-k^B8FT|RU zrFN56@CJ6?-fh>?$-t%1czP}|TN@PFOw(YI9nL6H+B3*H$Az!G!QDs_u+jrH;j(y8 z5moo&Ltcsb{i-KbbM<(G#+D<%Wy|5>yVezN zEc$$H;C@eMPcW#@A)GY=H-}mx?|%Mhp<31?Z!EZDTMs~|)k!hW^S+quPWTBu!UW2? zB)s-&1F9f$YK-A?BpYw5edY7Se#XXRGcUc5`I2&ms;c`|e!D2hcB&$3eZ%Dvq|9w| zRLL`t{QHw`bWSXh3bug5(Vi9wkxSY4*HYppJX~3+liTxm5(g?*WOb~YKcHY{mcEAR zKM8A=8_WCGJvs&JL=&PSEL?#sBx<_ZR0*=baIR{?h)*WBqwm=aOI_XkmqscH6qP2$ zd0%8Lrb5L=B1ByirM^7ezfun>2x6h-%$cJ+33^+O$)h=FUWwCBu|Q|>-+UzZtjCEH7s_ZK+76&D8t#idhI?3*b^%) zk>Yyo_#cUZLC(uHM_q=M^J1?8Od5LeH%o;oXvS=H{V^{^r5&3$lb9ta*BcWjMxNWj*uK8hC zvONpb&D8`e1}&=6u7Rs6;C4Nnb+VuCg{dI3L5bK@NuuW1qG7OjoeA1Iu7$YFQUXM{r_rz>NS2`K;4Y$Jm6uKSURb z3&*MrwdV9QUGypu8kYeJU+gemN%Q!D(eAO^0P6=Dc&a7~)V=}3@(vLC>Mo^iNJM54*N42AH<= zl88w@@Fc&;21hCE?F&kto!*f7k%&!ZIpU|21_o&LgF{g1zmv;VwnL8fz=4cz0p|`x8lJiAucpS2{wR7Mx;> z%AWOGyIJHjM>78x`}pM=0j|{z&slZq{##+<_3qq23>9%j3Bc{bYc=;r4f~L|J+~R1 zA*|Li+5r%`lF(h=J6%CEq2S-WJ^l4|nkGA18q}MAUNVeK9=JNx$vAPhu&k`6S6q01 ziJnkZG*Uj+AFO|SOW}_WD9L^BKHQ_xv_Jw8YephZMbBk`32P=2pn%`Xz~x@E;XcfcXAJ7u zsrDAV@4bMMX~(FUHeRNCdSJmo94dB+$R^w|rvYN;N#U1Da2nI?S$IEwA^o7(*1q&M zNtNd|(d4>Udid;PMKsU#wQ8*zy>16c_jcj7qFOI-p;-k{+8cvFcXOzfX?ToV>Prq; zE6}|e3Y)pSl7J)Mwga|Lo!gf6JwKvVicS_N>VkgFtheL{=WBL<_$!CFQGlo@jg9IO zfA%SZdH280LjxlE>MNA>qq3w^L}f}OfAO=w>`=~VvqOm>`tRU_=Uvm63{LJu=wMMn zE^=qs0p)9n^Yu;UHM~o)uSP~p!t*zu@odUPCiq@B2QAur1ByAv^G~KOPA83CYvj%4 z9sW)a(G$mRZP3S}9$}DQXcpvmyDh{%0&DWHOW%irLR?Vq{pr zMv_BmLqg)ML6o+>c0fOE{$U{4sQs&@{=|Ii0O?)lP@w8ago;){P{^ehAe@w^fa{FPtaBV8XFPxLUF*<`4s0n%rs66W> zR_AgB@a0f0sf5f(n4017#7EFx-bHXbhdv%{{QYz=XLpWX^FmNw!}dxK9U_?#PnkS% z+gCJcowTFS919eZYlrBr&5yb}A)Uz~{XfGo=bH#C0%&}0{|)An9HM-sPS3B81-TK| zj(OUl4}{~l(#m9oV|?c{F5i#*nNr;9NZ%_6Sp%f!nzdRU0+dzN;{d+1DRn8A0-Dee z&askD9qSLhj2AB8N1njjDemq0LwvnzNiX2Ak2z#6SJLVr*=dLI2we99Hr1=Xh?(5EX5+;ov zhUM!$LfEy#D@888U(){TpB!TY*&n-mXPlpYx@iR(f{;!1s;aeD7AFN&^@%WSGS9!iE;yDrnz&1nu-KUy$w8oa3Rys zy{J@Ns?8s%>cbV@##!~c<}JPF(9#Ntva*r)sn$YP?;ChEVVx~{%DK677CyitKXD7y zrXKE`h3dq{CKJ-5pv4J0*Ea??Hy;QaX70;&lc`H0s@id&cm{1Bgs?isfY9&%4a*F! z0aSZ+uGdq^$ZR0MR~rRG$a7eEn&8LIW?Ly~Q?*gR{ZW z+6A=>{ZB`ME=|#a`h&xPlud&SUfY367w5E^&YaMnn?JZFTFfw;ei{GnsIJZGyC5zm z!>C!7heqGz8ePC_?pdS>cb@dCb z1)8Hp@X#ZO|C(dBHs&e8q^`Z~p>PUZzLcB+2CCeo@9Rs4+nl+g#k#^VT%Cu3^cTii zic*jq`T-dLIQ{)DtV??mWlj8%Jbhp*aq95;(A>vjn2-!YV{F!0Tp5vWZPNfS@e_-N#rvbRJ?mJ$619&1i*c4wQ_Zaa-%>OsW`$;#qz9l z{Kh?#ncrVieZ(Ar>v8=(USgebzHv_lQg!sC$h~{tv$9-HnrJ`u7y^M&zPvK zwi+EIi{8?eQx$vt1M72u6W9b`50lH>OkUNxVL_`(SFD8xoX9;7$MYrcIuHhzLM^zk zm2-3xzBC-M8Sod)G0aSQd>M34*57o7v~tvuRScJe&&Jw(yOdTH*qEMA83<eb7m^^! zdPgNboq6_Rfu`optAUr!AgbTW6G)#}kCb%eIf8>8c#$=PDg(#3^SRdUU9ndaCL zPN^N>jq^wM?e>GpmQ$;7)Hy(@YpY|#e>~3*QF?zyVzun;!1cX(i`UcwDKXe6_P_sL zE#9a1sl`0vo~jeLhz{4Yl3z3TWTRn}HKv-QkRYU#L|#vf=xI+W`;mJL_tFz(ak zj1*v=<%4xh%))F!Wh3#>iTDfQq74>pK+7Hx0Iwwf7*$uiHtXnkXS+uyZ8_KZyG&g; z#9Fv<|8B_WY)-;u!k7FFF1y&|e2H3Bk-pqalrx;zl)Y2x0rNUHuO^4Y;nrv!H}bTd z3Bf0xlKEd_lGw6L-(rc9G`$!^g)c<^V*Iu6idLloFJ60#CoErMx<77!66_TN7wgZ` zb^>3$MGiyDd@*a>TMEqTy@O7DwDsEvADzv1opqmLq7(Ykth=b0LIw^)x5s$%NIluP zIEcezg^8FbO)^M$vlep>bshqd4G%&><3rMMLY?x`aJvw6_j1MZW+FML+n5V99i!84 zy-W1f)1q~juJ5iJ_ad0f##e(bCH-1kt>!qGZ$)jq<@|LN&j@Vo9Fx(Hu1M#3*leC8 zO-#fRCz%yZ9dGSsKkib^mGpkPvXleLU)|CI3?+-IScv&~KpTS0<9qnoJXap)e= zNKOYwLfe zG6vq%!{QD&M$ivm#I<0hHVJ0pf?u2gl4nnKn7Noc5AX2Naz}2iFF&)h8jCP=^^f=E z1!J>{V6YpB^Q8Mv)+J5}aAm<}_0J|2oRT6gMP?hNfaOCygJt)ED}likeG2BsiLud} zZNCa|^^Jsb1M@9(C$>itl6QYPm34he$XO!b;c-@vJE{~au|wBiJu-iY7c)$%lhIBH z+gI_>k`4WXYZf01w%fcubNwbS(@oQrx=bSiTKX?7WMvdkf1!xcu#E=<3$d1EL4%!t z<`?2w^zIqn-f!5g%6DaooVjA>DICY8W?5VX_D)AGLqxiN+d|NE#Vi_s_Xl69*r{hH z+_o0YZC};*Mh_4@^^`Ca5EU++IQP-P&GN*&b<(Ej>1IpDl=4#k6~FLOO(MFa2zmQE zHy>1eJam_?#KdH&-67$n|G@t(caRMCyM)znILCVdykwHofsK=u730r$W;7d3>g|9v z2hio>bMBVTD4x5|q_osFG#TeXEL8#vvM48!Rvr*#c8m3wRs$jZHplld zgc_ghm;Jq$;}%jf7&}>n{qxGq>eaA5a}V5CegQwU=LyAjlb!45XiN8BpJOQVH zhocaw9A+o4+JM_$2EOxi<*i!}H2jwZGj_6YO8K%I4vi@g9J98$z`O@I_J2@7M4CTC zG&^UFR881>1IGz1{OJM*tZGPUcj)A+Lh5l%ehQwSiJOwV?-$b5co6hi@2+7146fk5 z;v)GGrRayrn)Aq-r|2ldj!}3;*|q9ZBSg-yoco#RU{zYU3_R0@S^zfczHwgtFi0sA+kEFCJQg|JO zS0BE?3D(vR(BF8G=JA#Uh*zX$o52`G+Z0naWp*0Xo;?8H@cX{K0? z-aFX)_!5H--zHmh`gsmrg;qH0FP*z-n1U7FU(YNbf#12fBsCTnZYIMOW+?Qn8(iH4 zkc6B)yYm>AzkhAr5C8~PH_hrB{8Rw*S*VD{tnUo{Ax158BzpbhCuLr$@A}EF1R|(% zx_H~s6cD*x&wn+t0qr%B-GAY%@Y`rT{01P78l_$_3TuUbQ=8Pz}|OmiBN4O#L95d`eEa3O7|$ql;-D< ze%{ZYOM_sZb2rx^s?NLN+^-AX?2Vly|Hz}FMaRRSt|vn|1o8M?#tH`%)GJ3|qTrWI zych0?G`&GZQ?cw|3}Ox7o3{|dAgF35g&O6+tJh$oznJJd8D?P`$75<^3LH0a&)kPW3 zV)GF?I|H|Fuk2^5^m zR!VXMYw;C=*w~J)>;02n-C+MevZ*_7E;i!^!#u|DY-@<_fV<{6!Iki2$%jEJOt=aB zgSg^F9Eq=LQSp7@d5xFB)QjQx*ZcZPC0#LMVZ0a$JGt@*(VdBr!(_IQ%56Y$eA_r8 zB*Ugau7!w$9|0n8X>@>-(>q4ep0hT8S_pU5nh(BLuh~LyZ>8FSt_oj`j5j;|+l$`G z;9pU4{^fH>Y|MPhILRKHJ+zxp{|6Vfy8m|c1xLHroU%Mt?AR(Y*HBOqkt#mSRrE~m zlAw>;)onJ;>4xsbEQNA{ZpHBbh!Un9AAwzv1t{!zO!SlS4(9;Gten3Jm^J^@lf7Bi zR7z>=@98Ny%dml9z-@B4k*=LJzOJyOkIcLn%7K2{M1`69+Rj35C8RFnafM`J;WRtd{t!>GH1cBGRQRdD*_!ZY5~CU(N201;hvU65B~<-lsltx~|p2Q6FCe z)03PpLHzlZt2L2sd-`7bC5cIJQ$|b_QCD~7u7<1-tnw`B4Wow)LJ0mFc(jR-&F?Mh zy~7*Vm)|s)rNmaS-_I{sP7f(+nM=kMP(!OYhXF z3x&MW<<7%Iv_J?F{$5XN%!7~@!iYgy&PjbNejcP)KKx)hBD)e%$kfzcoj3q+sC)D; zFsmlI1ouFNo-N37h~DOe(iQL5dUj7>gr1&6pFej$)4ISR3H4 zYj(2}M_g(0ya;?Mk!?YUAwuxV7zssZ2faAKK34wc-MPy)foJQwbV zW3uD(S{^&Vy?MaSw#^q5`cE;j8H|yrq4wf=1D$^r^n3(Pc8;XJb0-qq+jnEBdzjns z;8F2{hV*PzxlhMnG_BamhmxhE&xw8}%)R}t+D8~hd~gSx`gmM6I+4D_6DH`l7Ky&q zEK!397O>8rgTLDWCsWVJGCmw7a4{oh2dU$VWm#Yom--bR>!jN5}jh}>}t4<<= z9UlJr8ao7?Y{r;D8U&Myyda%}x>dcR2f8`J??izDqir-DK&w@c1j(BRQC*1SF~ z{{&Bx{`JjH`N!sFXu;nK<8#_nB7`RsV%L;Zolq^4yDK-(EyY(p~m|*d5vaLG44N<9>~t2ZJW`c1wOFlA`Kk`UZeI%NpxVW#SFCw_X{6oQ?>Y7} zYpRWg9O%H>h?VErqG5V)u6ZC!E@sDUj1O-Y1m}wp*B?9d0N`~Qnf-aa`3}BOruZ_W zhJ(Mt``ag${S#ZpIoKp13=`Moj7oBr#OOFgHeOn7CU?quZxdRtxf?|98qJBs^OXhNP~zl<}u%YoP!19#jHH9G)^@kWS*tY$9s z_QT(Y{S({pyGN-PY%#aua(%Bs3i}WqU=SQ!QdX^RmPUGiUO{^%W%S}h%C^tT$)mn; z5{fx}hDWP{fXhc|?&N*pm8eh0^q0i(xnJdWz1D0MZ~mYlq3ae;X4}S>T~WX;x1ziF zJ;rwr$dJS3VLwBWIUKsSBGWIA93?d;fKc3$iq4Q5AeB*-&T~()@ly71ACm2Qi8{M$~`*GXux<`*}3|nnHI5 z=Rk>5qmidVRNeS$-!X~jd|6KuKc__n3R2V#90(8MwO^PoMXYc+aCZhz9}aihHSTCU zbO*mL;T*xB*BpvH{|F}*l*i{-4xvBMd9Dlg@{8To%ql42=dg6Fd5L*G#gh$hU%v>c zD#FYB^wAU2jBYXVMS7k?;hyxLy`LZQF(xLSQ@`T<_iz2xMmj+7?4*+}93}QUE5W&g zQ{}wJ)}s}96AXENSNWi)W=;9l(nHOX)Jg^RIenq?!nOGBO#;S+9U zU8o`=>)8!A&S7v1{tpf?HEcd**n9Xeb>7WwGUTUHlBl#PD$inS^hP2N`0ej&oZ+!{ zNG=JY1-iudx8Wn7FAkRPh6SfLu8{RNyT)-^==u+wr_yU1@^AUypa__L5w0&?E=b!k z?ZdsyJ0?#;kDP_cy9&gT@dr6WsXUA-Bo9rq_5BMq)gR0n($aoyZ*2+_zU_ zR&X!FdgjlTZ=9W*HPfpjr2d~e&{RJP)Bg36N- zrt#`OlV% zmCz-3ppfe|WTXt#N1(S-n$hMCKRQU>C;Lo@?NUS)&d>Ld+tkLn5r&@mg3$qPYZzBX+$f;3&%M`|~Vjj;+yS6!hV3vBI&COA)hF0n{BB%eHd_%BO2 zn>~gI*nRPBEYcOtLhaQ>hy;x0hgWXL$yfvt{0=>LqfpoVoEi-^QVz~&IpIE|>}Eo* zMR-n5T*hO>U@G&j1yc~m0-!uq5bNZuX;E9dJvV{>Ssv^rs6rxytem?~h*?{4cc^;~{_ zao1LD*)Y$;+l}y$)d7^&z-e1wd-h764H?m5BtcPBd*Cdc*!-Vdi_|#xF|ka>L$~}mM6UBVraY_^BM8o27WMlC)xpViPPoT4RD}r#%i|iPD@Yt zk^)Y`_3;tX@OA>yEJEzio%MfQcjsmtP_*Yq^O1X~5ZnCkCzkki#0|nT zV5<9}kdZ~7hCj@$ps?sAU>k?K&{7eI?pSI>C6m+De!ArBYiL+G&CV_z1r62*hD5ls zj5>_Daf3=tN?{YpiB%iIY7E-n+jtC}gbeJ4p=6rB$z{6q%Pp+?-D5bhD|?0{<;+6= ziM=^c5M5>B)5_o2T|Rw$LK+h=M{50ov(_M8G%stVV9uiTsM_!I1%XK6?*J42`*Vo$ zT8dkYVH|ttOL(rP&KMgTnDrez3Adb{&87BJHem`V(I>TV3BSUGGoU%0*D%EcWq2;- zch%imT^kTI#1MhY=~mMN{BizCRX+CSfK61TzTh(Fc<1F)u8Ofj ziq2rkziLy2loda|{;k&N_`|g`bRL6zOZp+z?z~$~t_U53jW4y*^OMXN$Hbxq(_PUl zTf$?x!Eh1ZYCP!VGG$adxL!6Wc&FsW54G&-AR=V;v(N)^#*?6DzIVFj|DO&%K`Cp)E(+i1=WtFnzczB1lwp1B+{gJjAJ~ zDU{}rm_Q#kR-Ta^3Jredglfkg8e(Kc?ObJ1Cv3c&z%6FBR@=;1RR}OWzV*~ zFK`}>`5w9|%+s1~*3F$+A;W|k-S&$E=izH8n29+?KV1G9Qht6IlC2Yj{stn(-Pevt zVqzgMvV{{#h@oi6r|sN&I8lbKt3+QS1CA72(3=%2uD4n_378Gai{@*oceehBI?DFM zLS<3(=UV*zind{IA;6PYA5o)Jp8Ir^p^tdFpxFx*5E0!PQG{0e)_%?1LkzsNWq-DY zW%EtMBv^f^vMjmNURc+&JLN{`dox4Ns+AZ#^iN93JUm!TNBAMoH(rcC;FTV-~U%BuU?v&;!YV7IgsbcX~H z4=#}`HQl94sog+1xSJ)!V4kf3z|)ho1@(ILB5a1_jLX2caga9Wit`iW)v2MYpW5}4 z)JwDWzd9UCLXPY2kf69gTIZCb6v+;FExP{ONRpomo62r;(^w^h=u4VMzUzM@tyh`o zCGp%=`X;8C28vS>CBtUX_DsXkRQk%Md7aKaOhk*#Tiv{vK5S$_z*5e{4{<4?j>Eer+*P z!L;_Wc|q{Be+g3#>UlQdQz7f+G)sT~F5vKJW3Q9(5jqv#UZU?gqTq@-w4~MSaw{*G zR2&jv+<-Nd4|etH(jU2xYEC#jiCS!PxHHuiB~h1!R8CBsjxR&sk&(uWZV+k*Iqr$J zezloAXOC;G_)pq4#ifU*Av70-VIxH1k!;3PY-GC^K6{T2e0?2(arFB}WzEuh_?P$)%{`4lWfyg;7|3r{wT`p3%!!_6%2^LO z2ZT^K;7hfd2v}acDG8bZ*l4;xFAmJS;MfqSI)ZjJ6v+`||ErtQF+5sA`9CFI)wOcB zIGxBy?`JlBIUHof6>~vU)Q`JoCYGRJJx0>Xp^QJ@E0z#NOHHAQJ8^>2@{ee`Ih0!N zOdh^P=4E}R4&Y_Iv_>b&0T~9plmmI)jVlVi23db;I^nr4jeSyHJR7_Z=63x9RygT> zZ(XcRsuRCCeX!YYrEihG)4d=55e+Y2y^rZ7PA-Mt%TgP+xRD z@OAdh@75$P)dXu{tGPCf+$c3P#(joF`xLGOxF`)jr$&VKO|Qo(T{icZX(SByn_l<^ z5N6LMqyz5_bp}k9Cvp5;2PANjktfJitL+Y+lZD;hoof_Q85Qf&J> zig>d!t}B_7SwIqoL=K~izyk=@xsA;Q%+@YFaJ|lUE4o|z-m2B)dh!xoMO)MI$^DYa zLN0(UON;Xe(&)cva0F&?Kmu&yyT`6>mRq^S={S-{YOS7mUvsGG3itH0x{$D3nU<6< z2e^&Jb?-%!3<_^NEPkJG+9&;~_V0xBC2l@fRa#MMi5iqDq+`hq?MFT{G!+BtCUlqs zaf9iWZI}YW{_%6_onDxjOe4Bijj#}_!XE%m6Zxh)%Nr0ew7nN0EDZH&H-dCG!r()F zr98(N&g|Xg&?leS8vFF_v3|SJ)a8KTU86xwt2WHU?&s_VJEwFhJnH)MJYj+%e z`ec$!=d^_H0S_JJT+Kh2{-v?FwZPO=TyJo02d&0D&wV0krd~Ex5|ex_^`&h)-0qDW zF#Q=^@OPsNj6zpb;_N~Cy^gferF`hdr%@9{QJ0Xb;J(f20lW&adqQ4W?0de&H z*x*fa-Gp#}>7h}JS$p7E!$y53bxh2&oO%LG4Ob&xul_v%q4WDh4UkF}RF1>>j=-*glBQOFl1HPpsq-Hld8i)42F(dm9ChYrE{8{Ioo= z8)ZJLSN3n6Nn=ZuP96BC+6C;80Zm+*hB_%LnBK99LI`6R5*hVxCRbX_txXq00BM{s z*o?X?15S;e-JXWZV!DoYHHUNGeD+?3_y)Xhc}-h;;eHuZjs6VFBc+~M-@A=Qzb}%N zOu+@FTOWxpqnxIl4u&r+w^`)Gjvpe*#92#8ESf$`0(QJvcfxcYozjyyxn8iJE z(6r`3)&9>TWjD+G?whQ(m-+8Td?tcISJpPW7rmsnQ!~Q7w@^`8pU!ILR?G5>hWuWy z{)O$_O<>S*9C`k$aJ#zVGmepwD++CGgMmFXO#kcikG<)G93dE1Si11|7zJfaLit;~ zMvn(P4WO6U!)iJX1!z$Z*U(p~(#@x#!dXSSuI141Yl&a&x9}zm zz^m9&?W6Pv&We7@`HhbS*8hh-z*#6Hq{Jn@#0sn2?m^9z33GwIN>UY|W^dWA zmsDsfdbEzZ5NB6zJ)+g+6xik0YhhoXttxG=unC*Q z89#A_4Mggahi{U>Fwo<}63O3~B{3-X)mTjk$=sOfQpWQeZo*95Ns*}s2AFu7kiIZ@ z&Kzkk0pDBX&;c>U!JX^kedzS72xl~@R6cyN*f;Wa(Hfi92gN5gu5L`lLn|x5seSG^ zh^FQ6wV?1z;QY@3JVujP*z_HC+*c>%3~>?CoG|@W2UJ5xe9WJ?x3M%ul#@QDENQzU zE?{q!=Kv62T-7wwQmyV0C(gL`_drijPw$8}iOHc{9oe*f0{GuIXI#>iG1sI*t8W_0k!OK_%>n;* zCy0x8ZlUXp1>Rm=$=-p@1GgTP z5tnAEUsMl)z~}&@5XIi~_^3)j@Oc8!bzlBWFIW2yBY+sts% zC-p6!dl*#Pd|&XNmV}RESl&jV!qwn~H(bGnh_B3EkB0YC6?q(pK_YR}PFIw75H2NZ zGhEwPMAsq3GLLK><9uscGI6P2*4N9etoz2Fe+7q%*+p)R8?ZROz~CJ0XCO`>#&Ys( z7gl51vT-ts$LB#0OYBNUg-u@2rB3={ZJf0Mv^~oPi^lf%XyU#cA|71ash^}ihV7jj zbru!l|7};5(p%({cxynV60h}a)gj?F&UT^P%r*k0Z@8OVUy|OXM0C;8FmiAYEx+S~ z0J(06W>QY&mUJu3the@*?r|=|*#*}YwbF*Z= zf$PJ~E$2BMon4r4CtQ=q#d161>VFp+xW0l1Q9qd+B*H^exJTXa%Ikav5C7GDndi|= zpIi{l1;yVYBC>&KT5)JY_5}wiDtJ?<|Jvi#n&wk9z@H-pe zgZ^ge9$KxANwdU@E7j9R%tSVYnTq9}BUo8lQ;=cKGYn-qALtzg-;c)+c!EiCxF8y{ zpnXSQzgJC6tUbm~uMk{eCeeR@6j|{IT}z?2Ji5Z`S_7=Q7B&_M&kQHe6DehXcp`Ax4~09-rt3Tf8n3jfNWj(Ctz~4a7EqC$vO9_ zTDS~4emy$OCPU;nvEz1@&OVqGgW6zGhL{###+>9E#D{;n6M7&{&97YlbOxneh_9f_ z_SS?l6!#p?pLO-+*@E zk_#d^7QwGh`dIdH6H~M7O@{2hqHsfQayjJi=*@yoONdD~;8K}o4juX2;rCZ{$nxmV z^N+_XQLz_|I$S7Z!%6vTz0EWmEQplVrzGIJFkb|VErSocS1dUGP6}e}DnDE(?%_Bx z2DXDd!pR;4!g=NED}_a`d0^f~N|e1A$Dp7nFfz8yql4vLEO|7y3xec-Y|A&6YB%rw8v)an^|l_L|gYsKPrp4!3v!QA>! z-M{FP%?cim-tQA!{z^|HGvo}OD zZ~tB6_+ofUj73cB=c%qp1wd1krE7H(*|zN%p8IbpG$eFvE~lftWcZ%L(zD)r{@SXw z@fhcb;wRw6fC$B9fA&2g@$Exld+-j(?{ko`H+(C8nHj!JfUXw9iR+2BiS7oBdEaW3s^>bVCvN`P z#B0I<{{IFZWJ!?GB=)*#%faM-EMi3|cGbb;#X6p4T5vS@-u6%Pc`LuMQ2B5wJQ$u8 zgnM5Wbg(~QbU2=rQvyoJ8)FTJ3k{_f`neXnOrvHzWbdo zWMal$ng7?UoAu|vLkG3(I_kfJ4(G_tJNOu|^AicfsMX6=L3DB1fwPxgSoi2|3Lq1M z{sZh3p70KRi(lke*A36dmwC}Yhs6~nC#Q3mE5VdWx;@~QzLMgo?U|6=&f_jol6Nci z3QEsW<@BBwo2LE#@1*YJvr zcDX;2n3E0)E-|y=e_E}z*XXW_WyZ8E!7xo_Nfd(`hj{pZ72xzV*6~mE>vXhfs=}fF zI@dgz%;r4oeqwFCQBL^g?znK?yZj5;^XFeNyF=ZpwXJ&BUP9`XeXx? ziZTTw7%>>|E$59(V~!jxEi*H?9R8B-{M^VU%z7xiDrRxT8yqx|S@tu=!1Y+I^dW2} z*#%)pNn`oio%#awOJxGD{T@OUr;Dm#M52}bFe9rmY_j_FL>$=`` z;OuD2d8J}egJIbU)Y)`%QLdtbEI-(x#UW=GX^-5k(@BRCtMULq$D6)t{SgugyS}7E@Rl zXG~czFA8&{RO3{~@dq|F90>_zQE=9F_b5Io=RpVQldiOvm$&*{(7wS&OP+A=a8Zf72IU zuFyg^xk<~d#($pE342gXRVodc)-ZH9H_zq$13wg+;O;~UilA42mCP$}k5~c-QJN#F_o81Ey zq6&VIy+!PNDe;$MGJFBUk;~uDUMXZX=D=Hz@)`)B2C^8I%Wn1}B*}Gt(O8(x^u1hP6;#Vejn26>64l%d!Kd?YDzdYM< zwl=8|du)Of+or4|)76_3f}&aG17dn@#uU@Sx>aqks25ToIceAim*;jc9+?Ebiq@c_ z5?;!8(wDY+Tc^gqdbTb$IO=RwCtN3C!EH`Ie>mfJVy)&=)7>d*R7MMhg?(#-?Y0YC zkAVL|v8$v>C|ND4POckYS+o7~%kYZAMcwrItG69%;kb`BDVvNum*TA;-Uq&7018%j z$TA>9mI1j@RYxt4D(}lZ@KyWAg2F+=LCAtnxiKOOW<$;hG;J^)>)JSmg&O#_3>Il% z;0fKG2woub7s}YplI|FtoG5|bC~sX3w^cl$;jw^3OnU@M8Wu($pevaRH()_3FCRtM zi;F%16gu#Ci8T)Fbqdu)@)&xRE_8mlAwSH`-D-SR5eZO5B@LZ8waJiIqbv6RUB|3h zI!3xlqgqtxk=3jEh_Ch%dX80LBQrH(2DJuomIMx84>zk?Y56*TX!a;Iw}-15R-;>d zM5kgpEUUG<2n*TZR(RLCP@~XZtfCV#XOv84XR|}4R_0ep?;g0&*YU^WyUR<(NAYAh z81G#E|1%Mp9x84JrNXE!dH!u{;B|o;-#y8$K6NIwiLR9)-ge5NHdSHn&FiXspi}=L zZd^6`R8>ovRz_x-`Jw2`j2iGe$9nSEAauON6epx&g@t0d`ngSZKbw5Mlm(uPHG6qY zVEuaD_YZM1qb#OcF&j~p3=*9-JcR3&JjpMglu!ld58yk-`18X?^1C9YSJJ>)91*KV9PH z(bQcp&FEU_CgD(3l&2LD(W&11*Tu4VnkgG;M1ESJhMsA#Y!un3$J)DO?bDgP5K7cu zras-ju=N9{q*$=H{D~m<+XwNN&Qx1igykYe?oGDpsOw_H){uzWFS<`khFea}GAzfg zZc5!c?9Ow7d^Ci?1(NPT)nW5F-FM-X3Z)K;1PR~i!`b|#I4{GUyN#LhEj;#YtU^z_ zsS6Pk2ZXPn){x?bZMGsbiPSR5YR-SGuF>>aXC%-9B=llu>}eEgIAia>|+nbw|1<0FS^Dgd^as6b1o zBADrcJ|_u)y6xzAQ!$@Em8d^6Ie8Nm{j|Oi5N{6X+&nW81nUqs(-myY{;%5i)IB}g zI?ot=0}2EUgHS{JMdO9m)*da-ih1+!> zk;!&Lx8v>RG~n%2JIOC#pdN`NPTAZXTX0wL!3~tY-EL1H*sTSr`oOW}&E#I%#ma~} z{xVk0HTe~WT4g}2q`}vBbp*N|Vu0@TVc8ZZ`OU|AHTpYtL@Gg{8-OaRS_eh$&0mTY zLM8S~Pi+AcIPc7*{>qypVD4rgj88@<-$KvsI*nRzI)!U)ou0Diy4--VKkNmE0#M~bX=s+8 zvg|5P7!JDiJSrAYC0u{y#opOB%i%bTdRK!Aw9Xm%JG zduyhJilVX?p#*K1h&S@Z$Ysn{>Hd{{9cnREo9>M*-M?SwcmghK&F@*`)SiAY6v4IBDo0hb&( zdaC~(Mok!QIOO&!n2&P)U3${x`f+h>&bmvKQ2(G_tX(5sCnhDnS9K&2D-Q*G3Pj#- zTEH`2)@|%byQc7(83!?a&hw7|%p_8&_Nkgd*(LPa2*84m!xz=VP|0X@Zi ze{>S#^yQCqazG?fOV(C)<3gcZ@wO5ArS13NN3!1o9j3y~Us{%k?Bt=qzFUsuBE%;$YHQx z|6U#kSLmK&}5MS^# zcVU;LTxvV(FwT8hw$S(=V+>sp5H;4!@*C8%1Fk@Qrl{xG30vylD0Jf_D=C**4j84f zsBqwOLBdJ%X*-H+`TE^mm#MPd?_i4=5g6W@4k;yV5%qQ7H)DJh@ujz{6XO{P5g-A+ zMh>YjBmMqcm@)1jH#sMus92N*NVSCi3OrRaj9@4x#}~+Al%}CXxa;V*94hQaG?Ww^ zH+dbZ&&igZU4NYojG)(6c$+g-MjB@NVqzPxJ&JW;Dh>gzY13{-BNoSHuum}p*aKYF zmd2vBmKcX2vTacy+IxO3|OLokn;w3TbvPoxyf)hWy}`^O0!Dj?5@!- zBv!9`YKfTC@wsN_i|h2@yA7_^3VKF(N7Xdw7t)^iC zn6vQ>I@JU>$y$XsH4BCJ_PjRt7P)<6eNL?q85t76Jod|kL#-qfM{Hsctso1fyFZ)L*!;t1ww?%t4!-Zg(z=FdFgoME8H6F zy9mLVbNMeiw{W?y>aloKl2p@5zfJm8R1AiMFM4#RW%9zI9ygNPG6keh8+iU8!_Zi$ z=}G>@nj>K~VVgJJX@W^KgbR)b`%%p~RSV#gMm|XWzoVOvY z%Mb%X8JUpC@QbktVdllu+v9dZf1dX-MN@??2Wq`741z8z6z|lk5y`FpL$OuNK(8w+ zrQaJG_OL0$fRRR%O4GMJ#-n=7Ml)M-J|Tnm#lTSuHnnoTidyUl0{=-lX*$G$xGe0@ECf%X{ue66^-6|Y9bGq>dJeQrk{PS4$+OV->g&>KJmTW*n94kb} zmUmuNS1zv@Rjatdc#@5l*}PMWnv;P~*ZlR1Cil~i`-FZ z3^fRCKu3qXLHW-R2I)^NU)fYZ_*qjuKTwo!vEhgyv4?wWRWSo3MMmZ+Z~;_sH#mUc zrC6>@#_@e=R~eB%+n``~s-hgB9nj-c!lq`wlPw%2+`#B8g_r2??3tank8Myf-)MIV zeP2IgzW|7+2X+||CXIek>m!<{(LyaF*my$;aW?yS2@bIXh+nWME# z1nMk1K5ZVu&;-gm2EJxw`{pr>h}twcoa8655qGEjZ%%RDWWE*TSt%-J4GVFFlkHR! zt6HVVXTNDp^rZe&u{}jCJoN}fvr3>(=Vt(}(eFD0~b_)=IA8HnY66(6l zmG=drlY7Uf#JRonR%$-vGIpf^FsZ22GWNfq-~+J8fNWih_=8{RVakD4;h)w(p|2<- z^SXx|XZA(9X|qaU$Ecx5y*6F~+7PSL*_-hF!_>{xWW`5ZWb;c^!~+el;=zIRQK)e9 z0D!Pai{tKh^^~b`$yo#eoapE|AZG$YJaA;cMxXEkH%W!U4$_#ZGruAXNR&*`9QSX= z!N_^VL1(?)O;TW{bmew>qL6nd;uBK`4teEg8)+<=iz@4!0UheO4j~EFD%EdIWEWKd z7T2drNTmKtqVQbLw5-^PSv!Gg!~(flvQ~>>z}S?L#i7rc3ge-!rj%Bfgo3fs+IP>p z`zaP|72Z23UZnckItC@e{fsIR(8t2{kOE8e(jtLFrzEI$ISs3tIe1y9@sn3CutzL^ z<(CX)qdrwXffjvu=-}^R{4qK@#`2GC{T11IWOzR|^_`!EPeEDrYo}_}aafY*WmZ4n z>$=Jo?!K)^7jf5bE!D1jj!rrqN<9F?7X9!EmB&x|0Z8P;&LphcR$7#(oQ2m}lerv# zg;6@wa@ywEk(bK?EnO1vI%|=6aCbp?)N7xa0$|&6KPf(eU3@;h96IFCVWyu#PK}J# zb{}zi8Xqw}R*~!NRkse}FJUpqVj+{Di7nDR=;`U5Z57X)y9^Iw7`vl)d@dB8gV)R= zTlawuv(N$ggdE?ZU1BuAD7p?=1~f?kv3Qh?0!gP@Kt1Yr*V>hkSt|y}gX>C+Re)iE z{bEP^si5}y??>0xa_9!H5K;yEolv}FdxFRRP{NPE1`5$yx`~I4 zBERnVL18@#Z8FT-E>6XYS=2un5W=E$a0sWP?;4LX3Wo$pud9#j{vx%O8AzF+CtruX$_MK{|P(*=T{Ao z9OpN-zKE>-$#> zT@oYu?^n*`9KHz-2`WpQw7eDPvZU?-NQe#+0Z$PLsyacku?gtije^CJRqu;4HIxYZ z+@ZXl;KqYQQ%QmX(Y?In$^h<^K1k+a+;g)$WrXI*wkcTUBY_>*VtxAHa4YeMg3nK} z!1i>T@|BX2*#jgu?39GmNh85xGPMTK%XmY#_bB3SmRS=Mv2~{dJ_>TkqZ2cYp!NjsW<)K1nciL^gRfHjYy>6xXA?`nrwNW(Jhv zl2?llk?&Hrmah4i6TCBPrfYYB7Q9OX$I*#AbnNxG*T<4`z3=Ovio*k-fkBJn+tJh# z@I$LwRDMN5aZo$74t2AKOxqHo;J3XeyiYG{Xn#Ufbo3mCwRyQ%DE^hyXAuD~59de0xlix4 zMgkaZu}-rG9s|NK$ztwz2Ex0m_~8T(DnEAt_4JUQsre&&h1LnFc@9EM(OJYFR;!6^ z1Rx-R2XW5Ci5>zbvm9p{j`RT?q`1CjA>vtEZ>MsX0BiV&5<~H(C|CQhB+Xf&CKqrK z6~qx#?upGe<6w7bL5VyO1u&bn~zBap3pnScs3REsT7)vNh9 z9W+>dkO&QiE+dKU;cly^*CC^oD=xeFLYgb!BZdet{SWv0m%${yi51+|$n3Hg-ZA7& zTdE||pxPrrf!q2X7}LT>gw(e`XEBo99h~~j2`B|N|MYExTgRW-MHUhat%|npEAjaj z$xtXN025?{$%eiw{Mk%km_tILgIv1)SU0*l^}znnzB*C|?x*K7`&xG zo>+h;m`>-m7n98g8n*dcfQiJv1LH(dOyzK7*Qzl@TK-_BysZXGo9tWb>N$8{J2xm9&6Rl{`q(da$e+?=9(c-fNh{?(&iL2^f zR6+vG&RzC>sc!8njWxCehr9lAJ_uEsynSmD1Is3}%?CcOn;+Lnl4q% zIRYGhZ^M4m6ko|@dcOUF7zY8f!}Z-{>=qjpJn_U6b!<>|SX?3@_n*z*^4qV1R_JLyIXeELfr?8KUe~D1m06 zw3}i-9yttv`;}wBp2G%Qf>#P}JHNXQMvdcyNI<<$dR>km9r#Yqm4_hZU#otQLAlFC zRlSoM-@Yq2PQMK#^6(k@A>SLSO`ULBL5H zkm`S0K}rX@C#at>?Fyy0Nbd!u;8MF_N*uh^`?$;;AQ6QDTEqw+j=SWiw`jvv{YZ@! zT}P7B7)AO?d`%Xtj%1Byaq&y$@lM%iIlex=pL|>?if=i|7}D=fXcBPHbI{r4a$;mRi{w#n8$1DxCDZUrwNlxy8;p2 z37|-3+qwarL8754g+!Jb>2%9 zv5^}2nLG!gb8z)voW3(AEH34LGyZv7`Iu$2;5R19yY=G?!o9n6|N7sQlZ13f+({v_ z7M0n&q=v-BsK>;@!9MEqqMHXPMo zp&XXMd_-0poscRt#ML>3VN=^t5QPAS7ls1`35awWmc)5MPwde14}hk$x*J|Te&ZJo zXe6P(Xz@++_IHF!Q7~IGI>{B8`(O#p34|~Sj-sdeg|2@fjXz zX}w0e$W(T@qAxJd=|Vzz-RdaIM7(@8ch`lXpq2oOxAY|CVD&LDQ%TH@3s~+3(WSrO z6!eSKnKW}>XXvBv4t+B~Xw_>`fw_#)n2=(|=_Hn#gcbyU!&dKO8smFgK!1^ux6BNA zfT%3d_02AQHn*rgDFZH#3N*ta)rEqEJbLzz;|5ysP1Cq@QELjG7KiVN%?3K#f7Gtm z{{vyOhn&)?Ns_0v4iOVGLkVE#Av2Ssk2FEZ>U95kA?!~lqQB};xEr0R^KmXX^cn^T z%3)IB@au9M@ELEcO}^hAKQ{QjX|E;#oDzEoH*~wABg(1ohJGQEwOuZ#4|gTyAFoSf zEubVo3qzjECzohAtQZf^lQq$6LVX#hINVD97$;dn><5n+%p}8x&_b9VfBQG{PDOrv z@19jPdNHz35fGVqH?rf3u5w$X#)97S(=W?F$upa8uhJPaC7$B~#3_M9P@5$Jsik-7 z!*3Ziv`HaMYED)ZWLbg#K>+btv&gKxpBGiwGo|_iO2lHq?6jNxelRELpPQ2l`i&td zq733U5eznu<0U!+*W3r&*}$~XBjxz##1NVRI-ayn|G|79tLh9l7#b#&tDIH5RZH;I*+9C)U>f2dGrH#8`)%>kVlT*ZY;orCV{~-F7?CI!kO`P=K+658&U}s{ z6^>wSKX$1sb0D*|`w{fcKQ5;4Mhd`_pClw|rG4h#eEY7?{O{v8*Uv-^HYi)@=9Z{x zD1@}U^UqR63_N8;0*leN>j~ItO-7CQcs8V&Y)yw=kQ$TWC7b-SeAWi<`Rl3D(fC6O zs->&v~McK;Vt2$3L|AENWX% zjzj`}eKB&IV4%yXyz5}Uxd1L34=O7kILU+t9&SsOF3<&s%{I`NE9B5AWH$Gm{;q47 z)*>g*ptQ;g$}aj|xF|P>p2<%jCr}LU=o7kQComL(q37Rp8~_uzzN9+3l4g3cZ|pG% z{Oj|8XCcc&*S=p<{?_-XNLx;Fx=mg}2}j=sCK0p6N=%P_xUxn@D}IQtWpX=L@q{jv zBfEzGAIiE0a^!cM((#&dvV(De06W#0&zFsORu3~YN3Oidyr`t-e{H2y|H>*?0$tko z*t0f9X9=s;GGp~=H>uT3e_|SMEsWqXGkTEBAK~$ONAupdds9f|ggd z&yy6oku93rr6u3~HF$N8%7zh4K6dTB$-roFW&n5eOC42}`q+S9WFMy?n^9l~e zF5~d_0Wt|rrpIx2#NeL^b75MG(M{wKv0Gs5{uY=5j4vC*#qKa~d4ae8-ri$Za|)oM z?lGzj7OTA~vi+m8Mb=2XF zE(YT&?jAjh*3m8u(T)R>5LN_X1q-Uhw)wILHB7+^OP6y#kVRrUfNsysHOqD*3ooUH ziHA)-T69_P_g%kM1W=9;EpQ^H#i3q;k2gs0y|e<6Rz~);OBUUp?!(6CbIgQ04%)B= z>mn(n%asVHG_Btv50UAMg)5OEp<>aWEdSw-pNS>3!l9TKRO;yTYx^`0;vD`#&diXw*d_Hz9Vv+U$j7Zl zS2q`}FuecB?~%{Jkai5LJ+N7*nFR5cc|6^&*4y>bBO#qyT{ya?=V*1Lq>lT2b|Uwl zC;gwg*?w^YM46lGDNFA6vaPcp&TQNb-W6Chqd8oxKi({l9!L4B+LAt25&^Z;?jmQ! zy|Q>J-KQm|wjgkd2)&nk7xN%VvE)6$oQxgG?qJ|ghZzakE*5;eT&0OHN^mzqHdFU;YtV1g)gMNj zFItyhTO^h?maalI(ro0NK&!MBw^2CpT9#UcnNpz^}h1om`l+Mpz>23s4HFx51R7|_ks>;%pf?&`sbt;|Us90`tg&1sbUeNc<6^3=*A`1Zr6D#Al~AhE zmw*07jeu*OsEC0Vc>4E4y#j;B^67_(?dMm1(&WKk4|)xwI}`MG188AXlgp?Y=4L}L z&NknKOGwvt{a5JB12#d6PSIwBt*dlbz9ZXv{0~MRCa*M7!DSsb+JGZ6CD+-TxS^9# z-*hB!h`)^s0 z8c6p9*A6dJtgvZH`HI|5TK&#So4ju^QvF)#8^KPAAf8c;%{y3da(vMznd87IKEONF zfBV4IcZBt$I2YMNdrmTJr9}+mrA3bqLJ?Qj*|~AN{2EWo2S2Md0^(Fp)y?1o1@W?A ztWTf(K;=G{Km{FH=JdM)Zr0INuXz9x@s;qw)n(_jaO&sH zUhHduwCtAblE!o|lsa`ZGG)d$U4_-))2mP~HoRJhk?5TM$%=>xp14e~^Khj0Cu`m~ zy)9jaL+#)ViESh0lz&xGM**{(7Y#ySkaUMJgksp#Nt_3)Mn`+fue_MKSDgoQDH&U~ z8EN=ra<#`xE-A)B`J|%u_)*Bk=%Op@n^9@M8h!Zr0DzUT|AvqMp@M=qsiI}fxo!YH zj7SldOf6C4svo;`>GcBXE1=nMFVRuL2gU%(j%Zy%lhb!Xw>*DN!K7h-Ei5-$Nkn*0 z-u#h22=J7LDDmn@VOXbF$^%AEdCY5?#Tt!TjcL1`{^T#{Y)M{ZB4`gDS#$xbbT^0t zeD!%)Wt~hoRq^*-xdiHLUSjF00~&mY>LO03l%?Zq-6Wr@@`-rAgTp9g6<;0U0L7`B z=x-?)G)+Xh}Z&>e6c$7m(L5dkt~ANDsL= z1@biPs6}q_O9B2W+WrLV8(m!8K}!!J#*W6PWU?>#-tU>Rfhgvzz;r#z!F0N8v9||3 z-J8y)qw(Ql*!9F0wPveww>{JSzoa9Lg&vsq>C_JcREg8)=gRl2#$P2Le)TDdw@~(# zP$Ak1fO7OM(g}L*wKVO&p4+RwqM0UHm|b1rlCv3j=ZN%f?zGC7>eYt0n8%xptX1G% zo!U;C-oI+1C;rhrK~SQh*pKW~l~M$HvvZSe{aOkYjdPkQ>f2f)_Igo;bo*@=#gtAb zRtP>O_0Fz&--%NQsnWidc_Z%9Ej+=xxMlY5jqAH6r{h5;ioh6*So*GN1bYS6RwxZ1B_MVv&t4o__jdccm$W>6?YH(bu%p(70;87wt|NDjq+9O;km$cO{Q54k#q|@?=ZvH!16=9 zC3ytlJF@5$E;4K}oL)O4&UG=-0Eq-7l!zrijfYV@@zUG@5?7dr@GbQk^ys@DM#?_l z-Ku*+>Gn0PdY5ce-ehOc24+7?(8Rv4Hvi)dy0<_(dkD=o>SB7adoG6g* z0)d$~j!xsS8u5ah+2DAl>pVR?DkMl#1FrDsZs_B^&ei4ay0(iJh3Qi7a+r`yKxvK1 z;B}c&qT}aqe$pb^Wnfp6Ft(hBPg5^So(0~_%O1lg4V+{=;Gzm{V`1WCJ#6e093h8d43YeYgR}*w5}0octapfJiqwwuNb6 z$A4qM2$q!6Lp-`bw>$y#%whBkjmWlUw8Me`A8lm3>&EUx)S0v3*ALh9;$Bz)c%zG~DswMaXv&oZfU}&ZpJ?9(u?b zllCdeQjvb;Jyc|wv3adiQLiieQ1R?pI`?HMd1ySHo{Y>#W>(Sfd!fYkWr`mXQ-^h> zX|09&OuPesGhLAlMPJ|w+&G=ouKa~pxZAls$N>Z*e+w;cauKw|)?o8i|K2(o4G!B{ zeHHF_2imRvh|it)+Y((fd7j>|KG2^|ObCYvtv@a~l#1aZOQR0{ngT+qAcpbl>y;>M zZeDKoUxV>^E{;KNjLfrp*QJ_{H#egyDaj4xH*+3i7^_MGk0g4AtDD^bbRJqhRKu$- zy15O{rnPlC7!};mYetXJ)SOm}pXJf}C70+%(DhF}5X?XAuKpYyPaqaXf=!9D(y^Xu zsYZpi+TC@TMeHC>S+gQ8P|mX1CA?L`>MDSQ$2*5QB{BNKXGn8<&&{K~VS4&;{W42# zW3*+R5SOICD{Z+$7&nITo)IUh08Vc~pP@|^5L$U2Zbuz0Z~C43eOqa);(qvQATcEv zQ+Ex>kkQ@;;)&dg~R#Yc9;Z) zw8UajI~+vgBST!6Pg_My#NajVjQ5xZD*-2}S}be$WO-3DU1S!6x=z_DDp)huP2HyH z>hi%&o5N@ns&NQ*`I*$F^sfW=_m!|Zm*gFAN~tl71A7dIL_bnTix#5e08zEIsrJi0 zlGCH!srAqI&sRXiUL$K^eMO*;?4>_WrjCv z$9Z8d79n_T0jp~PANnhTL6+g* zKGqtEN6$o=&@Vml#Rp%I{;C83F*8n{#ckqM@$8S(U0QjZr0z<2oQ!mNi`w(+Y_EF| zy89w<_-hVw3`&W)+|LfiNMz9S6+3E~9GWTe_48yoi zRUL=_?h^)Ks>y5|)1AB|!=%-pyUM?GXNpbZJn;Faf;zxA=d|E(OkA}wfSF+fCwh$% z-b1&*VDe`-VaMD)A8e=5%(z2)%%WnksgWQ90zVvFRL$Fz+H{n{;!V9ZH+J;$xtGLr zec8nz!G$gdU;=JKRAXMrx$#+Czar} zGK~d)C1m4uVDzXA#Yg%4#h=|wx^Oa@gt4lqK?@!KvYr11N_*gpkkaHF!~t|VW)&;x z>g*y{Kv+(QLXK_!^KPS<=~=KiJXy1SG{~8Y&%he6p!O7EhfZ8B&P12ShOM8GiwvQq zTZr7Qmi=7Zm)z~Z;}BRL4bRzRq8o;rv^*D<;6FPpLEQx9%WEj9W6;G(4ELb%s-L5q z6od*|dAPDS^%n2ujkg1m`M%73gZpRSSMys3=O3EvU(Eu-dh2vqXmJv7PHy zSriQ8a$`^U0SVCRE%vFjM5&Nj!Ith#!rh}2C76vQf+ZC^^fl3FNsaaq8B<1 zhi(xc?+npl0K!sE8^RCA%SD4$(C&x!yo0(+Bd_a&L0DX(5h_N(yl!vgN6;{cGo7lc ze+{Nu9o8mnK22luD!`*wMt-*yb+cT;0z6f=UhkF`YW4pJ+Alo`tzzKk0&2o}7-Hf< z`Igh|1p~VAZ^*O!98YB{d%N-j;!gAsoOXdx%SK!tTCjS;RP`Kb5?MxlSEWM3F=v*} zN&^QGj60PTRCA)E-!IM6{%Za?14J-ZQRsEr9a(1&P#>w>%f|B_FCiPZ-VKrjnrbXE zRU$(Asz?~sKRk?{a?(u09jAmO1+aOc9xw2yDt~pJ9Uk1&@sAXJ$j#^ilPXZYH#A26 zyhcKSp{_s2Cs6TF`0?t50PWn1bPO=&iZ)y9Ja4~qq%m%8UC1Lwz{-_5%HA2h0We$~ zYUa1_4k5=djTJDapb)hfHSqZ+>#!G;pCUG?R_?xq`COvt>j9ukqy1V7l_(P12>1NveqNU{PF`3XgCU_Xl;fN=aAFr8_Msf8eNzZyq|2M2*E!pgd=YLkFu(9CI+T%*%L1mM$KWlvXP^&%N* zfgN1kWd;wO`4<_9smY>0R?rR2E{V|c{jRVI>;R#rexk zjf>WBG+b1tqSVE7dbMC?YK^8W2x6d#CI{qp8exCbi>Cy>cF9vOnjhf%jq0{+FKFyC zaLDQzRa4uMDwbymJoat(npp0GxbLeYcLycutI?5%)+uB6+AM$x4_Lgjrq1?6+9J$f z+BoUA{7#if3b4otGeHi>T2}nSr~V@VHNV=1h<;(MHElh9Fb|IS1jjpQaxL zvhX7a5GBuWy-&jKmB69)pLG9Mh<4$B|7J?@bQfM#GYEx`YMx{cbdf@ zvGAtVrCVhKX%DBk`_EhZ)lkuYb?sx>iwmG`E<(XnGoP;yOnU;Zw_Z9a!y3B|!){W! zb}?BSSlQ0X8ej8UZZ5k&1JzhZU<3}+1z$@_UKoz0x3ccE>3?0Xb1+(F_aOwn41B~d zDvi`0c=b(Sk(b6jejb&$%W7=uE$N|TE&Gn+Y*0KmV-4Lp+!5STng1i%Bt(Nn^TghWe}8Kcws$d2~ZH!P-|&`Bwp*sMO;CxAe4FQ2bH& zv!uZcj*PPgUlhsU*4U1ZaXt5-!4UIoRNe+{&+Ll1zo&JKub=8q2P5ThZcaXmHaS}X zlEjccesPAIfZx>H@a1SyyM`kl86XmBkhiZMRazvp3&Ufkfc`FV$q43OoAI3`sm}by zSc6G}FaYML7?0_vm;*53oI|Mpn-gw#&GH)b;7>HS5*UkfC9n24A@u1We+(Pqs2h20 z;8(-V=9DJa>OKqVzylKbYS2Gk9URBh>H{22^@q@-`(YrM`qFCe6aGfd^3k8r@G$bLE#!VC1cEW_|4(qIS|jYuvf z*~wOz$F6JpbFF$^S{D!CxYHE0K5*SB>VrhNBX(eA-2bU@b)agIo;U{dj_B5$VUZNA zt)2QCS=fI@VN)IV^6~GFq0`NOG)nzYtbYIKha<=P+jNa!9zpXenF+f9o9<>al}_i*m6~)DkZNd zecDP!#f+fj>rD${%jH$S;TDNR9r63!WlqB}qTM#lakQZn_&8lHKRfpPhdW^nl zB^P0^VNY|pN`LP@2>15xI*Q~jA8mX9+^Zd~je;NVyqI%sm?bSW-78op_xt;vh*iuo&7Z=n zOh`l;9tcSU-zUMFJh11Y-cCxp?^p#^l3$Qy{yunfY%wG}>#A+<$%DK0F zPXdhM3cHcjR)%gb4CEV(IG?trKzmD3wbi0zA1DQVT?ysd`aQmTc8{%+SyxCGFo#V| zy=ts}0R;9e05}!EboN4^@RAaldNVZ{(2#s=H)R@`MA_FRdG8^{s!K|Kzu_+@Guq77BImEnRV4g~Sp^$Uvw0I{LW;o=^ zLlV7NO?ALSW?Aw^6t~w#mzz?uQn?%*7n5b+`0d0M49S`LY)@zJXdbil&qX`^ODEj=OWyt@gg2Cv;`KM+cGG~LV;I9$d3CghUKu9uJ}ggA9=q zaPTaQq~*_SPTeY<%(Z@9Nd5_T%#J46Hf~+$1p5-!-Umf{5R~wZnR8qexN^qH`W$2# z$hYa7Cb&>md_Fn^|6qyNv=_mvT~dKj({s2OCFW`#`zWLvB*wC^3>_QN+MI(ijvIM& zyw>*1`yjWJS6*DKjTHPgqbG~v&BQRC1d%w6qjZj`^X2=r5?+;=fMP0OB$49g-MjXk zv@KPe_#3^DM}wQQ8!Ei^rcU&ntTWtU#x4+5Pf20y&{K){vLO5hY~4CqsJdcQ_B-s6 z9gHP&UuKyfsUZ@?ImRZ%BRUC8AZYou#($aai16BV*cV*Q@~z zZ|(?}8XZrGxCbn2S^DJg`FfzR+yQ+6_$h(^E%4F%D8{8;AsSV7zv45y05%_}+Jxl8<@GUW|#^Uk&t=`C*yc20{L&CvqsoJ=4qwo2y$CEpENx1`n8C z;y%NNk%H-Ws%5fu$c0n}{~X34WvJWYPF{+xDfJfkeMaY=aQ4AwBzZb9LWpxUwpXPV z&Jw;JnO#Td{9Z2xb*C6Ml@v16&%e>rQ5la9yS_uR@9t>!us8EX{~3T)bXs8yyNKZS zVg-4)1y>kV=Cyg@B;aCF3?wlrT?n#$OR+9@X((EmM?!E0v9JogHfmBe)yhIwKa{^c zfEU4=LnvsO@g{>q&Mk|{PFTVTN+toqbhM5(sDH6Z>(W7e`8=y4%Gum>UXk3xzT(&J zIcHHXGMe#TW}Ymlu;E|OkA}jc$%}fq=I1X_gZF(IKBB>rpMAbhSEBzt2e=&F@4r7g z!hFLf8)3fx`{dd7Po~z}T=p<^?t_i zX2Yn{Wf`@6uhFSpIh@s5yxl*W@?73;)WA{N(tE!`KLKp5ELrRmns%^69pfUa=130u znwO>yoobFA`*JNJhlOGMQ#v7-H9?>uHN@ZB)vFmSssEv9@!NMp56K7Skxbj|Vcv3{{_okIYI@;%M$DB;t+4AS~Qxc|I(f z`nFP(kIHt!xS_EsRn*bWlv%5XG`h2a_(ED;BL|>d`{a-teotwSJPvF?fbNHX{+Uz< z&L$_R4eG0}+Oqc2(x>0gM@d}MT(=)QMaA7&EMal#d`v0L`E+5VfITjV%RM{X?P`nI z^LSf-(AK7&mOjU@a?GqFuTAy%FT8NP2Jc1inOG+#8g$aA>krCwF@*y72|J!5wKSk) zOYfQQD+qLvhyXG@<-C~xZRg|LO0?jO5Hu36O*YBNz%F1;UED{_9sAxaadAD8^okf9|?s8OII^*Pb2Of4^)rII@eo`hcF*?+u`2kaqL36 zIO+O<4-YMak-!A0%~0`vylHtup#cxLiv8j-{K7A9zz#~?1aJYK7yX9C}-sd7?kS70;jyMRY z*Jvu^1a{5E)k%bm_2gWIi{0>rLas*a^1yd6nX@~DZ4M&(wSIeir}l#$Sw7A&x9jRJ z4u5-pvjgio3mk9~b!F9r+VvZBFtp3`Qq?rxIsXLxGf#_DX)%BxhD)`+zjX}sCoPd9= zMQ;N8tK<_u=|2(qD2PIZX4L6$+xCT;1N=SH6lA37*zk_+XGS^82G&vOEhA@oVlDV zLt(|Lf>o?Jz_(?l9Y|sW;#ex2#+-68Yu*<1l~8Ii zk%j$gxKX!BTvM2wrIlqu9rpdT6g^>bP``bY9}AJ)I-p8 zyWQ+1+&*LW3H9a_2X1u0z|V0^4*O)*%Q>_N2y1}mP2qMFY@Eqg0O}MVtAD7%C4VQh zkD!Ddj}h(HJqL#X*dQWLSu{On&;c)~-?x-3S2@fL`(#o_Q&cUT!a>*rkh`YGSX|$~ zjN{{wO#E#k|Ko_Bt2-4h(BT?krHy#Ykx19TAs^Vms;b5ApS53k=wE`i;;1ta8;44y zBNAi{dMt(H?Spyq-)#Gb2b?BJq`GAzU;rfbC{DX0u5Ztfox6w0*YyQVL+wksiA0ncFFHJ zVm5;(c!}#TUQM1rK7pBT&4@LEYf9YPv*gD=>~QK?%yPWrFNBHl(8Qp7Sg%GEjh_R zxz;%XJokQPKGXo-9|!jSdqFNmf(tpb9AJK1LW*;Q_iw$e%BWN*YMAFHzMRirf0M$2 zu&v8@4QC3cc`OQ>?1i_x#Ztia3m^Pe9KdUIY{~x9ovT;ivh|iHE$hSA)GfbtOZ^T| z|52HV$M<|Thw^qwb%`iUwo`d`71UE-lo6L(*lfq;;$|Fm*F8f#7X(A0?Q*aA2pBc7 zO+aI^E|=kla*x?`2D7`wp1uHKA|eQX{b^Rh%9&si(?Vub&GUr8OBNTT5Hh`_rk=d( z6mZbQ#DHBqpP@(7D6&KQm%4>7#Sitpwr#o2POvU8{;iQ=E}Sm!NPn*Vq+KA<@WLaG zPJt!!d7{j2EeC>+bLc$gkq`xTZvxJEY;md;@Ip&z!0uuKg6)+9d73*GFppgmNit*m zCRjUNCjEazU1eO9?b9VB6e*QZN@J6XrY1}40FgKo zL&pyRxH4o3ypR#;zlp;1?WC4($XNWTCcUnptIAwS>lnK45b~m5`Az%um0@?h$RBeV zsw})Sg%#wGFmi-)-4ZiS`Z4+6Rfq@lSBz{isn)p#K#P{{?4j1&nOY-SU}$&*$?}iz zGfY5P(yHw2FJe@J`IyLJvhBrv$-#eP!L4GGL*s5giU|@yS_d;QUw6>Z4|07Mix1&* zVuyO^mldE6Gj-np-j9Fa(>b;m`UhNKmlk6Bzau^C;uq1baXkN5>gQ+okkrBdtiBq` zWGhG4eg(EoD+h=y zDf>`MW)Gisx}ARuhvdU*AIEuKnIpF|X=Daqk2A8}EUrK;4#6J!il?^~%(b;rHJ+(O zMk@3HV(v{3tdSQM6~+T!n4S;drGTp!2@4AOQ<9Ii(gLmd-jC)ktR6jms_PDft3D)d%OHQ)1ifvpU{+Km2#Y) zQ)4I4$4Q52fz>TF6(B|+#*{=u^}t@GrY1U_)4NLyh^RDN8#8(q?Z&9y0H@_lVOvm*MkB=MMl6z{k5g{TU zv9)fd&=GSsV7H+5h)l7GLGJVYG_hO#Xjy=fsq zqx0fl%ES4@>IVF+z`xHjXZrgMMl}m!8=)!AFj#Sia9mhWfT1POISklQngOL}@R^Vz zb8{LVMhO+7dz}7M#P0PFg`%d*y}PoO-S_{tc~jb~58tvD6CB#$WPr&WhP>geCFW`8 zFgVt&8SE!mmXu*;26I+F(3lBuG7o_7AZB2eZ-JV@V z#S+%^A)UxT8v30wO+ir*X8K!M@h40}`U=3D2_aCP$r2qX$AS1|S!OFhlVfz!zy0HD zifyOEnPqOEMk8dNvCP=WSRLsU{954W;n=UL$|iNN0k1LFZH(ouEc9_e3>XvDY60#Z zxmtaBtq-@J5X+<_NUr7N2gWBpNc3M=RG;(hxgKZw0B_+OQ@4TG z!Gi#xk>h4R_-)10AAd|PH@H00{*Sz8GLW>y2gf|=U?kb5x2pz*c60f`1fdSsm(%Aa z8J)uW4v4W7h>|mhjU!Zx7Y=B9bgI?4H*#;xy3G`Xb*fg z(eL5x=rqUF>V9n2SUi+~|M*RMkpKCZc+8sJkVEg?)8D$;vu)1%IWT*ooL->dyt(-p zE(_lEw;`{n;>acz<86b-ymG_ z!-s0ucD%M>0@@@AE9hMma!$l`}lIT{!D^%SOyNN-3J2!NE-z3N%6$ zy-&Xgs_HVeJW6hSFJEZFKU?r7=<6RkM4g$`cwpVCCh|P-odDXK%lH9nE>uZx9GT!q zrNIza90|Nn0%yn+y@NU#3>3m5+SF)n(qeg+zW{+*%nwU0mVObBzlp>pFw@)E!d_CA`Am#|K_89teu8NQgF}- z37hwp0rpD;(`7DCa{+%KJr78YEuzNGbhdWnWWFJ1-{*5=#Nr_rxCM*SIGMgN|DG5# zahYk8AXC>Ia?sh2A<1_z3cuj!vNuKRX*s<-WxH!Q*hL6C) zEbF~yAOTj))mMur$~1S=kaG((RTzJ0Z?Nsp>HbwXLTO9qF4LlXT6CBxh8^V?cPseJ zTr2*c|Ee`ftCx;D>lt6lA0KQyUbZ*9__;T@RTOORN1Bkc<*b_bYt_y=#nfiYK8kLE zbY$8iePUTaBW0KjXZdv=PTw<*qYi3i5#<^&nHt34D;+9LY6#e|c=U^>Cw!67eBp(z z9@vpl5k9v#&k?3Z2(^Iq$mp23-H|?O!AO>#dYQunmN@ygzsqcbcr;hI6F-3)3F%z+ z)nNwk(@-3(Z{>HB75KzcbT+KN7^bVEEbuT~w(iR85y@kk6}O6|m)dRubLVtp_8>ZM z4>lVcYogpQs{KMeja1)!h93C1;Z8L6l@iY3q>DSX(P7B_Bzi}ZbE99*l#$<%x=+IYukWh5X**cz)eG+&eD*PmpHX!(El=1kyX=)9xj`$KKNS;kky!8I)( zL!PhjKL(En{rVv?d~`tSCuiy zFw}Jpe9>2bGLwlLCC)}cKtSUb#z87fTXcVq`DGlKg1FE1?+{UgjAyoC>cap0k(z_8 zd_WYknj;$?7TqrI_qMA^r3k6uxm(Km{+=K4rD?^F4~?5m90xMQnF~6|8HDHY#1{xsI2e3O4$r;5w zO%_`cU38bdxcfUN+bNx+!s8Ymt;+4x6hQvFf1W`xnQ?!H$IAfn>xec`CMz1xw>f*S zep5ZWFDZs9SqcK1rH|!=3ZHNSgoqao zkLrS#X+^L`RAHdZXJLpvXjpO>o#%}1y~eta$B(eQ=;!3<=qg|)+&l`}QQP`7nUlTu zbTHer0&{E#`5$>Le@Br0Xt+K@ zl(ZK1Xu1f$wySwBn)_P6eqY&br4D+0&wJ3v$)M|GfwUZK_Mth=dZk*(bZSyrn^bX& z)9PQP6S*i_0EUwmyBpmxl;w(dkQ15jJ;J1(sbHS3x_Hny?ml6h+5WvMk8naQ17L6i z^Dv1Wg&Omz1iWWVt{W24rnb$!h^;<4cHuLZ_)UbFRFN*2mQL>77RD)}0Q(ne(YHsf z)ym?Ne#lXn(+-uZG7UO1{b<8R){hH$zz6=-Ox>)}nh5w-kV`4o&#N}~m` z=Qz_Z*yORa`J#T8qt}~X{ZfDV-lg3AliJtUm5)6g&i(wl8@g!OlLV8w0NVu1=%fN$ zTqewf<0WFK&6mhkBtu@l4=|gs5jJq6!m3NFhc5~6$I%1JizYB-yzwR3Q4()Q>j*J6D8{A5*K9Y2zEnMb5^V5Wfhi9NGTzTM|ZX zxc(Ga;_<0mDO*(P>b? zJuN>~*^yT&T}8Uk&&Z(;Tycx8%hfjS>?*3q%_tw}5bY5MC~a4ikv#BSZAxp-XS6=H z%e*SBk(kG0XF-%P-&!wY0jA(5%L=(-`d<$Gw^-lwc^}!2kUe}ltvXhV?h2Fil&mbF zS&v+)xRY%S8BcWK`HtllT2GG@tTAhpyw9Cp>sj&VpujY{pfiuW7rMIi4pwN;#t5G3 z_rT{Ia8)L{o-Qy;ZP<*p&yIzH=DJV(gRO7^Hqe3BWW|%MYv36D3LF88tdab2|NP-m zUSLyeB=d_ej^Ozf(&g-wK7B+8_k38b{xM@2kq>RZ|4r0Q(O{!WkE|SFzafi?8vCW? zpoenjd5K)J&8}}V0Y}F5liY%Xz$w|Y#A(GvG2IeNR<=P1TZedIKLOfN_R3Z9!^6mV z*(eYDYX>xDjVpL-fzV5rGTl-XVjw3Y2W0F!I=>Xl5cw6wG;)j$x?%y(V|LU8E=sl zbcgNxUv#xl_Vf<`S#^6dO(tRf{Q%2Wn`S*Nrj!sZmFEsTvqm`NP^~cwf7}9}@7+zM zUf<80JalWHRWd0&E^5R5)Uj$qz)xEA#VN&MHOK$>@`DyBizFy&b%BMevQg&1`ZP0Q z6MHi-rQ{WXuzLFrH4q#QQbErKd%7dez7|{|!7~BCmkh>w&?_qG!b>9TcCiYTvB|92 z2bJc<;wrYePC@n%@|Z8kS^59VSrcHLvL{7E56JcKH|y6me&&2~Dn!eJCg%W~24h@tOVfbJ>U zT<#FRPxtTP(y21(m`^EL;}(%Y;a}p<>`pL{+j|^#Ha$tJKVhmp4-C6_27d?D)C90I zFTYm(H@TD9n0>~lRk2V)K_;&|E-wEOe*bSL7hjbW!McIUF=8Ve$d&BJN(s9xxY-_G z`adDO=R7Cz{6EDX`VpL1^s+?KT1gks$+>Nq$5s01_nyq}-iVfq ziUli9Ouhg+rOnU=ejxLZbO1`SA+L&sT%wwZQxhV}7rgFyC#z9EYc}1G#A41YUUz^| z&N`hNpDXGnZ$$El_?J8&C|YDd$=-hDR}?VLl)d29d^DtrFbt?~cQIw)itBJET|%u@=WSwtn>k>e7G@vfi1$RUqK~!yv+dzVwi@YPgLASX%cy zV&>IQi?XQ4rhKKjx8F1_U@HOKH+z!eWt}{XH4k$J%lXC-3u&7kHkOU_bWnkngMM7e zx=`p4AlvZ2Mqc08=mO7=I9a}*l>yDG8LD5VOdBV&%bo>{5U}6FE#DEM7rD7T>&!r7 z15aK91oH72i3%`zTZTz}?98r$t_{UQhuYjDd-2#dYFl@>EpRBhzSx#@`L-|Z)Bzg2R?=%CAOxn3cm zQ29kM`t|LW60(oA7HZ{7F9aBsf`iuytJNWn3s_TL^X_Bu-xzGZ5(<6+N}9l!%IR~& zNk^vg&Bq&3<2{3OVf-?ZEA+9m5XxB7#`A64<_9`JQ#QT`lE_I%vpsGC|F>m)@nl?T z_x4!nf>l6=@u`FpY8yIf>;|4D(*%xaSp3?(6LT5JPNJ3q*p%W>1|CqKCUG#RsSbYw zHI)~9x_Kpo;tM`&NX-v+(`qg%%{=!@CXdmSJ3dXLwaAebQOKhm0E49LG|o0F&%Dwh zjc6J0<0+Bp=8}%qiXYpXsNfdZes8fCvSpju4)0w1D6jUdZ9)eaiq?Eq52B$@*Qv6s z_?>e57U*MDpYa(+2V-syaKA@L@&Hkf*vQOIl=h%uci)&JAfz$|UHNF)`W>BCnK=WB zP`}M}(&w*hy}0W63dsHvYcZswWFb8ulDYH^m(1tiYj6Pk1BdNJR%}9eqycJ`0L$ z-^nJ%Ry`)?&JlI~Z;%SpAmQi23hXWgyCiO_A*qk<|LY|Pt0_mZvbJhu<8+bMNM+;` z0jdVCx^d=&GNHhBNb4n%%G2{Xw(!~0E3wGKJseVmhIdY3VQ~!52v4|8?e>%>@Xh>E z;3LW#{>>$?m|_U$^APggDmDGP^%B^9_d~8FxJXO4PNbI{)qet9d?jPzjcBU=d;)mw zuT!f06qKJWEId|=MsXS{yi4Lu{9WGQTkJq5&yn&KnqjPyu>&+E6@l!0#R>@lTcenb z^bqU~5Fhe)Cn0%m47?`1xr>g-8Ch!uO*WXR#`UN_n=4<+oN+BVgj(y7;WHEd6Xaed zTGzTc{7D()i~J^Nx8=2p+m{K0kBNF#r`z_9XQz`j|TC5zAp?+C%{XMMOXahs6I!v zO?_Mm-5j+CS_qHK{w34v)g!;44m=@#BhP0an>B?Xs zrFi`cxQv;mGMA(|B8u%odiQJ8;7K z0<7>53snD8n&U}y*moNvIwYFj1*UmGqjwYc{IX*nnynfNEQz=tKBB2^x#hHr+cuPj z!3O~!C@EYd_`K&ppU3eOP0%Hy0cnx_Gxjw}#5Z{Qv2Vg<`i6C<#NCj}#m-%s!r=X{ zuclxBLu}WZD?Ib@B8?{D?ITJl8Gj5C|13yjlE53>flBgLHK590m#?2smFa+nX;!d; zOYQ3-^CFckUy;m5fMUeNM7j46%?zR(Msyh+D*gVpp8uk!pa0P(2a z$mpa#qkjroXAmLqYUxzE4~SuH7RpLsH_u=yFSC54;|S-r55G8SnoyHTo~8m}H1@*a zuNcDxS((qQQeDSJj*W{9424rq01tclM>+M~{;BX(#mZovCQx~Y7CE2qqfP;NPB{#z zhW6>j7*}1yk}LZuc4*5YW@LzO$H($iREl?Fe%ZEHe~SJ@^V|4ZGPEfDCry3WxY^)t zCODCS^S(Ji^?|n0o5_Vr2h%kf23td!fc^}?IiJI` z&#pmlIC8cRE%GA)Q>w%e^6*4)2U!?2$&te%mAmId`fcla z&RS>5T@v?=zVSecs>ArEBS)%fC2fU(`3Gs)dz{GnC`QE@KVyIc4({hS2kJidr%psJ z^~D8iaF?;NqQUN((juKk=N$%TmD$!kPn`)?O(xZH4;s&lfq+7&xKY~*cpdt;4 ztqwrrylxs*tk7|ro6(FFmh8$kV6yv2#{!Jz7Ngg=x^or|Wbo19#h8p6!-_mPl}gVi1PJlEdCJr;)ev|^l`vHIv! z!#UtB@&|ZJ3$>>;afK}{x;@N8HYKy)*sZ(`OxzdJBnqLO``ucE+A%7>R@&*jTMk#Y zZRCU@heu(nMwDVKZGI}OHUnPXJoo9PGQ~XF8Sd=dUVcdu;0Y(^MD7@)}>T`&;F0z7`j>7?LV|jzq%xhzhZ11rk5|R+@ zs-WO)AE$=v&>Uf++jl$+x5v^GD?h}xQ_0J_f9O0+DOn~=l?e4(P}!=zPwwMIiH|7)}3}CGrmOR9k#TmTCG{lEzXH@Qa5-da#b&`PpLu|YknF%XoL{uM5Ibk*0_GJAH#=kIH-SPJI9$3!NzEW}!%zP=cBovs(<-a`muI zs80R}OqE>P<))5>`SM4mX)^UyA(Q7eUUtxotz;LtKz=@GH#&4dhi#JFU62M;IFB9o8b(^lY@ ziIz=s=fN)K6Ol<3HQfx!NSOu20~$mT@rYmqHrbt)IVT2`7#pIjPFa-Mt(y zGAKOlkEl@;H|prR*~@D*cJlscP%YlU-LG-Z=InUNlbap*kUT}$cEf*UzPND8c~Ifz zn_G8UwddgNaqghEaI%j0^zSodq-K41thD0naE!*5c#Dj&1HM!>7vGKeO=0!!Nvheq z4Pkxa$;7Wjc~q%$%{)6dU3&RFxZaGZJo>JiMfCIG%wk*8CipU<7)2TnV`r*Q&NSjQ zTsl7lnP#ugbf*lk9OXOOY&`q)`eo06=85w*Uz7@yqq9i_IJ3|bt*W9XvwW3TjQ=%;#9(CT3)JEizD21D2GC^)4uq1 z?+IUQl^i?4mv<9TdCmsTykccr=J2?`)LGd*a~e!7Y}5~w_#iglvejR*b1wrb9@ZHO zCmKoE(@tbC`r})MhUs(?H;emeX;ML>S6sNmb*wjegt2_@J&dWYcGe1NAh6cUnhIU* zgC?!>65t|TWf#RuRh(2@w%d)w`mZpc|TQ%;)*y$Qm@_{whPsrS;S zpxU&8SN#F`n`*T$SC?vvxg8VVJSWQT$y=%Z9?!d=Xllx8#85GJ35^K#jaGQ6*21V* zf1Z5!T_~*T8>O+RIPnbJ>gdYDX=~T<&-Jd&Oa38DawH#JE|}x^`q1#DD(7$^>nLt%6c$PcB+i>Wz@pEKl zYKzEoBXTrKGL_`>RGMqaW0q%MYqXG*{fI9~mJN9B1p;y zQRWJagNGJ22w06&u=-b2T#m}>v&ODM7qWIIdtP}DY>ThmM?422lPGSh`51miblEQ7 z<+C)+ugyYx&<(4(+vBumv*~V|LFatl!@fgjzu<;+!MNrxgkkKt3z?V-OO3{}4fo`+ zRZ9wGMrp%);1dkY&Ux#WjS|X|j!umIkVHdms`c>FSAX^-b}mb&ockzmBRWnFZpQ;n z->Ty;c6drRh|HU0aA-e5T6bdCw%ZeUSIHex%Ru;sl&Q?a)1($#Q`olBc>Q9dYs;k8 zt(M_oqnGnIgWXcDTBWqt>`yHs6V{*)UaeV+u2WVl4D^neb{Se%@L$S${Jo}c_=l49 zGnVs8TL&$+1E9W@HEFdElJQ%iSKUfNr zHc7xSjC%;8&h{O;%qqx#>4IaceL<%6KgELW^zLBc$m0GF+}82l&fg>*&n;$e?2i~} z(0^5Xw=CN%&wmrLW|=4uU)U*SaxV@v|cQ;m`Q# z$5Jf|KCjDaNnDeM`|!8l`(C@JH)#Wf2yYa zwRU@QR(~JQsB$L&hf>Nc+laa?h`w;=J=R-)JoYt87JU8=LZ}8(g@+#hK5U+k&hjVu z;7Qf!y2q|yK2=un(nsC_UN{B$y4inKimqu`XIaD92z3n|RNG~uBs2WAm`O1SG%V^l zN?<`?qru`ycc8OyRMXsaNt|ALr0! z=Sr!F;&6f@NC(>j4jEvAhU!fV@DeEX=bbt$|7k0g_RgKnh|~{9YfsJuyfg4YouguO zo5E*yB3+Y;L#|&iIS0e#+J)eY(HpSO$4|~?<t1Nv&hHtV0Fe?K%(jB2( zHD>S}b~1B=t)g*FrX|IfZa=keU8vjq)O5Y6En0iE-gkXz$~ZowwDztXTc9j@LG`Wf zt}0zxIRbH%87kIqrySnFg{b4goJ0Gk&vKl~Tj#UzS8CJs1j}c=R{Z9#6lysoSl$F; z*<71)Z)GYnKS{-JXKTGVFR$do4g7#20j{s)+FRjSk7?|}_W*7P$X6;d6V^{Ey6vhc zk<1UY`<-ja&%LqV-#-Xs{xVI>@RWjQ3sudmqJRzHetDIwS^eF+Wop92-nW~LZFiPiHyPqQ5kt~R+tR>2j`B=kVI{^7iDB^C?H|#Fyv%MT=Pk<(Vj1C#CEL8Ot(Q!g)(2NS^@+-0YaTZOEpRHc7`Z z{PYG~KxRjvoGX38-byKDVL;pFUy-e-cH$f$Caup{XQI{$-Q3zDyG996huIlG`7^g# z1q7BBxz=jcA>NW`(?sZ8ea^v~fo3tuwPE5{@3kqs#SSz0+d?p3Y8LMY@9?s=I+{Z{ zEsV1c(NkYaf>THvn3l?W>fB(y*>T*S+uGk22oPiZz>o~HBc3K#@WNtN7>gvp1d>Q` z&IP-+sv0LjJkEv$NO5J5U{I4$2>o7eAf~-o$odu7e9&0wd{cW&2b;5%9TVHV`QC8i zu*?2<$wNdduH`VGvEP~gy%E#`35kJ;aF#tz&^a%-C~%~wblXxz?M)EGqrXKT5$&V3 zR`)Y7v)_e(aA9iTn|*bcZ8p~1DkoR&`cey`_KPQ;!s^g@T%W!5u5S(yZ-gQI8mSApe#k@~>)3HT(24hZX7Msw&OWxY59IbosZ*VBkK5yZ>4D8QA%gmeG$Qer)>j$laal~{z0SS6b?gZ@Tbdj$ zo#QSdG1r@hPY#k`^jDQPF=>6bfwu@S=IX$V-a*ye8(92=9^egB^7A*6Z2gjev<-qd06kW5xl9=XJx=aFhBaqlc8! z)t++c_sMA^$l_?VUr|}WWA)l{EfkY15St8c9yfhDdo?=X88o7{d!d}=iioYE{&WGJ zn@g8sP3(tDU)20@?4q7(6?7t-DD!SlR<-v0ux}zC9sI+jp=SmQF6ElAo}mXhRv8S< zjE-AvOsTZ?5N_a$R*!id^smSSDH)^EtYJ&XaX7%2X-l0~GT$h(hzsZ_ch-zWsIf4- zu-4pXpC&xRLofnGgkihQd!%Me5;uxEF#<;IvmR_ZRd+p7 zXf{xi6p}`XIOKCPNt{v`O*Yl%E!RlLt~Z5UTl%$P%5TK6-af<)lcve5IrAqDCL|z< z6gq;`mO~&rbh2q5keX=%<>tI6))aRFQ#Gz6F2<8fv16I^iNeMo3QQXliP26^-_Vm^ zVUg4(r;oN*Yl1{!vwFO-abS`riB)dnHlz_d(S>X>_ZDBN@6SVZ%gl>kTYDHd3isJR zZ5JqqXT|b4{|VONqty|l)H(aXH#POv=({La@M%~%WHHSlP|nNXVwe`ztI5Q`D_@zN z^@a()0SDix$wcMICSPfSK>S5SJA{u}TX+Rx#zv5h?mZIGzMQUJ>I~nAkJL@paq0bR zA!YI-&@k?iA9`*V8B39*GEYfQ+gF~E#9@O}!>&d(&*E?zmryIPz+s&{cxkqCyL-32rYvxbf+#Z6*}QjCj`wlN`*8%d z9uV&83bq!Z2ASr9JPwok)V{8eJt{+SQ}+#dy^7r3%O+-sa>jL7EBDSt#FZYGjLI|^ zmd#<=8_}#0pyj3_=3mb~N@qQxxsIp5zg&W=P2;#ug9rvWVpXM>8m*3n&iK>V@~$Du zwm?(dLQg9TZrCTlGv?8xLkr_j)X3`$)+kV$HdR;!99O!fvvx}jB7klp5;NPy%|NqJ+PcLicw><9B7HH#Ia zAq|;yq#YLP6)}^2oQo<_IZ_QR_#MnV-NoCBe*Bo{Znmqsc=smNKko}UH0?^NeLR*O zVlT0S72ZzQNaZ|0&#W?vdd6gK?|Bao+sX;M(OmpW0vvK;&#SgAcvEXKA*Am#srfyE zZZZ+KXd6ru7^(A+aKK)vZ?!rwFyPg=Ww%ph8i?&rLpGhFJ;|+Ag*{F#Ivxs_$#Qz|rJZc49guG%6J$tdcR&7I)x=74z^5+(kowOw zGj{qHw#)y&L)VQMKzIlnA>whORcp+Ae`qeMhZpZ=SE*IlLw@@7)UwnQl44bbM$0yI zeNyhs<0hcV)Z*OUp=v|%+EP2~gep+t?W91t-}E!snTOyizj&_LHS^D63VrGR!-d7E zvGP2UwZX^y%E$dvBhTLV~YFa=&+;1L}>@d@aY9Jq82n zkdR5s`x#VTmzx4+7h6s;WmjWMhagjS4$<}T(0HTUncvqgc61YrO!_v=y!=J9+Y=~vyG~?Lxfp|0mO8gV7IGL`RggwMkGN#ks0<^XFWnA$ zu_%!BfgF38qON>*6X~6D8|fi3n>n3uh5{qvf0aJXb`;7uBHi7U8)NbeCn6bFB@FdY z`yQ4P-JI3stuc(12xB*rDJeemo4$+{zpJgy>B()=lR8pCcSR&*#~wYFS+{}Hq`{kM z4YDF<)1J(cy?tWg3xKX1-Omk``Na$HC??>iNeI}Z!wa!&Soz}}TY&R7ltZg7DAFC= zl2versqj5o-m%*DIn){b;9@3U=-SDuqzqK7twvit)0;^rhgiE5RqvA4!DxVxa4`dfA!lC!(bwspowWapRE$sBJ1bq^nH;kr+xHzBt)XrSHkR&TxgTPp8 zQJnf!NGx1`TB9bw1*zn!2v`GX+4!oD!JrGAMmmY!@6Z|xty%lh+vP$g$KcT5X(HWu z*VR@x#!e@Sl+jFPw!78w-b&PcDKm>l5Et>9_ER3`+Gjt-JKt$j`M4hEix7x@M|vzq z)oxO5SQ2)f<<>gUEQuj`!SdO1%9&vm%PNJm(=$=O(%f(eGGYSt!Y z5t;CGNTy}#K`)5#QQ8Pu&O90OBj?B6;R7hasC!K@X*d0w)o0(Qr_S^fM-0~|;+u67 zT26{*ry$T`I_;>p*cNVeR!w)l`OdHES-f0s${o7%s5omJN)%qW%KbMz#_o`u#QrzuvxDk`(#KOTovYQwSJd!Z8-Gb4JrnbUZM$*`!Hlh*aUWkZ(Ob!FYdX$yRe|P(Gen+7=-uCo zL&E3VSt|9$&{u;g(jfT_X13l=WS2gpU^iSH0%k(Mqda7%5q92Q-#&F54tx|xc~O1- zE`7!j8Tk`YQIXM+@x=PcLaN#e&x~V%GDxl1 zSFJl|al{vOE(J-a%bj_jI+#^!aH$~B{IMCL8X?!a40EXc&ZMYw)3~wPI{kYiJ`8YI z?(H2o*iKs|L0(B8}WP;E3Qsq(V>QFgXHKMR-dgpRC|b zRvu8tgHE%KfYfwuT;-sL7_uF`KaYJ<#DX=YVkJa&82K3yfN&*Y#*a z873<5Gm(&99dzP`%N?UA z4UP`RCk*hD@6J3`%CLE+p`;_-#iuqXg=m+P34a~IO}OPQ?i$foxIw^Ia5OyWMxrS! z&CZ;uEzn_8@pcnj2G0UzoikCWipa*T)Dz;!&ti#}37LsUS(=%qX$-&kd98Em^IDt0 z&?2~j25QV06`WNck7i5`97|Cm9YM(ZqGE5>(pk@v{^^@L5iT0fqgCn3DLfMCPZACl zrL$*xf>A0W9r3BzfliRdhD4i#3kiyzK#SAZNjOXGf}pYsz0gf@+{X7GVpD{!QmL7j zo_C!$W_QD*sh5eSkHh8_7X5PP6^5-p9f=J+Z&!%w%i(y-+V+8os!}!&=?ffUfIRvbp8IS%9nD*9|NauR z8cG^1eMbW>xAiTIszc{sV< z>rJcL1^<@J#vfv30?hgk1vQzGkQ!d%G*LrLz1S$?u=K9?&k03nH5ryXE2<=vU%yI6 z{<`OL&{4c+7>8?jWp6QFCfy#`q&2+5*+{J^Wc(pH)>t+*aoh@?;&pKiEqUk;3dj2e z?U)#~uRJPE@qye%MMH64QT|0xl0&5IaXPzbu&q1Gk@g0RU?o3r3 zLlK!~r2**n9f#JuOy%MA+>E@X?@#fPKyjb%yStX!EGt+FH4iG=-ERMmUd`thPmpO3rBJz0dduB-Jop7G+WJr<=729Mcziv_|vkqu_!$u!V9!jFWb zSG9$tk&uO+8~>cSPL^#kc77)t+$iM(-l#D~|E+)*^4`tB=2TIA(a+hV7+u zY&KOJ8p~X6UVkcNrJw)o@B2%tzmc2>xS)=>fSI4_Z7*{=u^FqjvuR3Ib zSY(Kzy1?Fo$MOT?c*y`bREK^wC%L^L+^E4AHsooma!;c#Kg$5#)TnqO|9>bdPbMik zqm{uXDL4V2m$Y0&;Q>)sd|Lp!*;1VXU~3NwjZL>iS``lVce=gfTAb(8bD+?1zpldt zO6P*}RXSElHMwpDqajra_NaW zF70f$`fM)jD>Tm^$9m_U*q#xr<0*BB*63Sl?#3K`c@|F z(LD1L`g)@blSzu=ars$nzFJePuG>xcD+74WE6eo@K%{z_-KI>L4UARY!#fT=j1O5w zeGZD4blNXuV}?kE!#HGo@m_U~;N;(&(H3z3efo~yc5U5{d-5BUcZQ-73>1Rj-Nhk3 zV&xO@Jm_gJoh!ROo!8^2d^GtJ#t>j!-soQfv=D66^Or)y8_qiz zyXds)o=^mzd)lIt5MS!W^*20T=ZkZRsdj#|nBZf6%#LIaU$zs1a}1NQe>`mZK|R8Z zC6bl_{rkW54aSQkyiFLNz$#Dw8XAwC!4!a}gZ=#N*h8t_T@oGjF)^(%9OfRE@5G$u z9~$g#-;GqiRC=`hON$nY>yzT{EYM4ZAxda9dMX62_r?)V>D>?VGMB4zPmn}K2!JT# z{A3cMa`^o?OaD_(AN06%o>aOQmL`>|qUKFYqFrx#c~Llmh*QvPA8FaYj8I_{7sXG& zeC}0inZ(SCQRkpZi$fu4@bBtM~ zUM6V@dK;@e^kGtjlya@%4xkVXIu(T=4!;z5J+S$2^w^I0#M>T?ECM7#chHT(Vk$^* zDfWcb)Yq0Hk=u7rz8h4OU@t0Q*%pfuxXSz(pQZ2i`+2qN9L5N>h(^3@ieTKTE?12n z2F{9pemGg9b1r+8F--yC-}85He7NRrSSBXjP{q7D_J`5?{Zj!I|8p-#mmkDqkA{ob z^Q+IlT!mXntqr6kq2V24uP{Gm#`a0!*}5bI(M2r4fb|VQztm7ZymxRjc{P3;yNsiZ zkGMVv)Ehq;@T_-hwET;5X7g~GhQ&MbUnUrWZ zwGJN7F$=CwU-9$P_|HMU`h7pKr03iHrXXQZDD>VKV*YWcHw*r0a_9&y*hry*#LjEo zRV`Uak2@zQIC~P);8@pU&{*0n{|jSP%^A~J0dY)Gg8?|s&sV!uir-4NF(S2o_o%DpzH1y z3+8srPXSgNgX!2iiuh3K3$RPN{YAdl5pNyWcLVz{%jY`K8)})^0XF?pOa|n^)d+|* zj_*G#4lK455(T6jH*+6Su>{QCm~VR1&bu~akD3pB{)hwk z7@(_(5;yJdtFK~JZab#W<>c-WfraNz>Y5|~vSF=uu(3NjTgf&$=YepV{qE)9$K8dj z#d}UAdb>;C%KxnPPU`=Wt~m@DF=P%vqRY5N#n)33!djGuK9LG#JHPU&B#D~DHg@>D z5!I1~kU~wkGWz-r*2{8+I~pJ zEvNU;=;{LfCLzgxo6%t4|2l}4P6f)=?S!-`4XBhmOnXcMM z8Wq^vj@Kx1x_ecTH;uWnFuUvhU947$bs`l>CZ`hQO@CM;gTniS1kl$??4w6NCB9~a z|2%n`8*AYSNRs>X!x(17V&@liN9F${=4bhO1>4?s{`uI9>%Fy&S=fx> z3B;cw9E7}Og9#3^oflUUs_j)Cn3yE0q31ldQOb)g2$qnXEO|SX3-LSj|9cVQ>~57) zO!8BbF>ZU`Ys0JV+iYFmI5wf8@p`m7C_(rd`JbeL-eQX_jE4!-5u zZWX4M87av)emDYoC*V^g*`gdN>e=etDOy_DT^jKx?#cV>MXsS6xXA@(GYP-;}>Ph`)U`Y6Q;IJ;)NE zef_@iwUJWh;>~Ja2-XL8_egGX0UjFTQEu{C(kH)bxjRbX;aP7(Gj)w)-VwAYFaG*L z+^eRPrl0mwIz_}>zV@UTFg-ZPRZQ0t+^5O4u`ywXIK0i)8+QDqlu0?eBf`g@bRy<= z06ze`>{G0INu?ohaIs~nEfF`}=d8T7tHOILl_do^(g9(jd?#wP9K!WLUvcbCZy*#6y+_X5k{7$01lynL1| z5YPXGN%>T_q5k__(Jgjv<`65iUGWQMhO@-PxQ-=1OvmyloX>h7qujGu=sWewqOwpw zd?VKfzYmY`>=!g8wmn+if1-w!@UF{|v}^)p&(yHPQ@QS-&@*}hKzjSsnu6Pm-B7rf z%m-k)EIo*Pg`ARd!~Tn_e(v|PC8+0we{md ziAa@OBi_xC;2(U79nfgzXE~(Ubvg&+xSGY zI)++6@lmL!WeBXyKWVZIhiReHhCdFcH#8Mm^-GP*nXC>BH_Ki0pgaB0GHB`x1{E?0 z3aU^Ws>F{o{-eSAa-5#IG><%;r|K=#y=;b$+}3(B+S~MF zKqyVu{YOf~V`O+Z88pi{===c{Ub8zSt@A zA=Gx-6kIz?Nm3xxKM#PiZ;B`0!SU48!N8a3>^U-QTyL+rCx&o3KVG^b z>Dc#V{WYFZ>7t0d1KO?0Nj5n)b^94b0eI!cGl1+Wd-ozT62D^*76sR$w0Pq&hlx*D zh*A8_(y%XOcY^o0d2`fkYXqfDJJY;qv zv(q^%xdZb`*{iEhB_xT_rW6kJiB{=3+4>};&{oKAPp(;qNMz-QTsSiD^XglkaJbj; zT=}`({8O;_?CQ5Whb$+%Nvn9&FkBmN)&Nm0u^I*xv;oArPa^yUR(kLwY2tjZ-xwMi zhWkM#8rS5cJKJ?IQ>nEXh-ewQbPdf`4m)KhmB1wBhvlG$)xe@e!^!v_DviFbw>1u$ z`#O39)UNU;JFC1isTh6-J|jk)kW*D30bzpDcoPfGD!f8Zw&|oeM5pp(^T>yQ- zq#6yvP7yH?({EwzMALuNI==JEZn|`wg11`uFm5eVj^L29*bNC`_P*Zs{r+HeltH8~ zJ<)4;gd_3bq~|RjwDDwR5h@q@#{Ccm1O{~K(t6&^FO{{EgXgUIyF4n9159a&l1B)Y zCSuz@2BY}t+DFd+%CP4tVT~?xN~KgJ>x5KkH?cWQW@f%an18)nyLX4bj;YwTb6OBk zJyi7vcDDW;PG&TV?x*Uqv@UVY`(~X=gjhFi^elH_M^vY8hft>O0-p2;rI@^BOL?}m zS}envPVLq%I(ygu5M2gY!q8{On@$a)Lx^`T|FH`WI%B?zsL}$xX#bV8k+($h`haHi zNZQ5-YWgFZd6?!N*pjBgW~HH3qbVSJm@2W;4Vq)d04Fa1)_6RBSmRdhHY9QbS#O-h zl7!YF!M~y`(De%u?}PYnuOTAqOyffDbt}J;-~an&P?$6twtpn~U6K%XJTK~PDp?gP zm-14o)D3ZThMb1xU`V`1_I8v^^1;L|(6d6^>*5jerSlTk`Am~yINq>V_0p@}BCSoJ zi4Z^J*F4>Mo5-nkNYZSGW3%fzFuW*NuCo#^Jov`NbF#E#V9ty(g-bR+-ha zwjW)d+k_2&-V6FHcD#sTW{jXBK0G{Z5blW!RK*l*9rB0^U#;yP_)k4h66&Nnt8fTz zJUx7Za}!{;?1pZu*=s;O;Amfg=fWl$^lmJlPK^Hkh0khtWEHB*Hni#*-PCPD^jU)6 zuFP6p9mPkI*$Wgz?ucEF>Z@77QY+`YuVKsW@oD&NIK-hUfz2V8Ib}aH;p3a-yE5ZJ zp(Jt~oTL&f0?#Yae&YAI)BGo0?KC(RYQY2Ejxr~|ul?TC-x$#9uOZ=P`w}w#Rq~wp zb(3^P4hAke%LPZ$^=1u)SjElt)*=1*FbhMXhk##Jcb(58x$cYBl`UtuUp`u-`L(5= z%kGgzDY&y~cLUWxt$12ot8-fNcc9B{KDz3g()IYJ&F|dI?=Ju|Y8Wl@6+HJQQjltrC4PwV;qN)NbB-XaiNY1)mscr;}%SE1irK2 z+;8bWuGUnYOGLSq`8O>DnqctCjb(tYP5>AQOJ2pcZ`)_E9xYuA-?09mF;_GgJ4%Gx zbo^z@QU~SyH%pt_d>sVhjrWA-QLxOG#k1p~cHajNsU@DLK4QImGnzM|ui5*zftw(R;-Vo1C64HnA)&N`}Z;!Gipb`_f|46D5QKz^SKzckr zD)W^kNmpDu{KPLs!k4Z0^XRET%)SQ)uR{ ztI)v(6OaHlY);NMBsrdLRKTRSf4S9PRb#~-V1#xu(sAejOdAj?(+W*Voy1~s6mi%) zY5yJSvpXE4V4yNe6x$y84Df$>4WG81vyhygxC@BiLzb_nzSz(x93`?)G#%Nr4F!Fn zWO_fp`N!i<1qo)XT!h)v!58_)jDTY*FXQtGPDzL^T9<7Db- z3_lkYs7G{c!=-upMk>qi!3cJe`Q2Z@!_LFGB{8K>`6ucZF_|GH4vR6c1k2(M=(|y{ zFRo$I87sx+G}WGk>k6Rlra=eKfpEOH(W5|#bUgHtaGXp5}!T=C}C-vbGeq=*CxpuNIY6GG966XZOGR)mgaKKei&tz z=@WSGn4)3b|9a(`OERiAds-EB)OTZbl!#P9J6u%U_cU8;cq4{I{DPmqe=+P3ce-A+ z2eI*VXGd|ii^~Z4fyqFS*{u_%;HCpQ4R)ghboUlpM4%?0w$sJAFioChx)@#ko?1`m zT01LM1HsD+?XR~jl&r#!_n@&^TO2oux^;@3hJ;C_aS@CIM%pwA`SKEtu0lTPA%qTM zW`e((KU^2|a$VXh9m@Iiozz4yI{*2)i$RUa4g|rv{Rts6-1I%X@&^63ghB+9;RpGb za;&$cgtxp(1iUX3ZjQeW-v$F!*?*FV_@r6qXQ%*&Qi8a?+1g$F73h*IUFoAF$|NGs zJxrfb@LX8`;oiO60DZc0iHphD>EWbQrD=dfSE-es>=wrdy~CrlRXHYIl-HFD!Mn?> z_esdnIZ0&oqCDfSsGHDhYZYxFiR#>SxG#Gm?>6V4BWb*p_q%j*4*3 zs!w8?+wL3a%1xtm{Zsg2z?p5xMXyd)*HGTW9>fJtaieJgGv%ZPX`8*4C1yS`@a-k@ z?&;FiGXGkg(MXDP^?@tA`aob}_aW^D&%aqsz$F37@C_ZvpayE-$GNPJ53)^#E0*<-7VC-w6)evnoPuBrH^D9%)}+ch9bmRePczovTl zbJR6Hz*TEMwg5`L;qmRJs@ZA94QFufCiEIuoBH%*HBHCWn*Yw-S9#KM)27+7Wq33@ z(S=Ii)r2G1OXTv^dcunhK5jys(^2`Qh1n9*OU*6P@d4cSVJIH;9wcimZ=3kXR>X-P*C+9uSFcz0$ z*C*1Mn*y70xrP@1((|fvO!00yuat+K0NdVi|M|iJ+%RU3jyp+LVr6``!PBqBg6AED z_dJjB+*JC)gdzJG4CvHn4b;e@n^SZ0y=e|xNIK;a~k;?Dt z3z>qd-YP{|z9iKQ)S?d%!XYCRw-CHeQ;>7^aleHW|D3&3B2~1VQS5m7X|LUFFH8e8fbDnHLIi|4WVm8&5PavC#R$iXO;?lFUax zF0-o8N9_y)!Ub-+cbQ?PoVGwull=+k&&~4NTvW5cuFvaycGHPnXmwousI|Nrdm8@? zu{jWmA8i38gkJJZGYdtNffI>{%6IODQKHni9Fx42=Sl>e0KQO# zs1p;^2;nV{sE|9_g;n84jJ@}%ehnDhlu;t+Bu;9l>J5W zgYGPtU zt`Dd4)a<5AD;zeX@Yk&b=*$^kUkUIr;q%OO!VB1m>8J8SI@`{d&nm5+%Xe#D*xOGv zK1gNvjRKSb%XD#i55zq=7^gO~^JLkzOl3FW0S<^W5Qq1WrAAhdZ>ok>*)ZKpHbcBw z&`z}9-N)3+4j|hU^t0cr1w-=Fc?^EVlwF}huD%J3w$poc*>@Gcuwhc8ae4CGysqyP z!(hBEQaKzR11Jo3hnK{XO(K#P7meDt-4D^6uCvb^8MDjSZG2yvgl)RJfN%Wj+R>U(Ux#^`nYhuW`-^p~) z5=m0ts;qBAIW{*}`?DLfUg3t(>C>nqb_8vVruWHzH%Nzn%`|2P0VPr`HhP@OiC2H8$e`2EW*d`v)8Ui4w*k>G-P-w;4>= z6>rV5YajWxD0|97QJ5O&M7dNYos2bD-`|*{aN;r?6kUNxt}CixuM4)!-eIb<|E>Z= zrmDszF7vx_eRHO)1o_`Nj6*7_+bo>I)}L5^Pi3o&iCFK1aG2dEb7lV5k9P8ipFdRQx0SaKo;O3T`VCLek^useO?qRTDz(xV2Zm zkB0htzJ@=zzrg|0EJ*ErVn&^j#t(i6;X?o5y2r$+pQ}h<5iD-VvB)(88iUE1G;Bgx zvbSrW91i>2KAIsb&|3*Frj0iq%F!|?+qV{Weq_=PO{S}`S})PI(aJFz`U8!YWKCa; z>6gYMwO0^*c|~g{^(E7Yp1sw#;-17xosxWA%M!?G(jQ2z1C@bWUq_+e;qhem-nxO^ zw0XO$xa0Vkt4Q%DYdbtk-PWU|X%$oNMpo;~?;gVd@mF5#suny>`a6^(#ou@^p~&_> zBgqEyAZmCKL)`9oFA>g;hZJb!$Ihw&n>68;+M0Pzc>U~`iZ;s`-N8)x;QQ(N7vD!- zmWV4D$--ojp8nb@twa>@k6bQJhK|e6TX@AEn%-YWiIFa?80NQUNkO+YCx0COT-I}gx+KYMMmn@*3l-@vA3>`Lp}%{yr>zQs{FJ&akaIr@SVGt z!C#xGZJgqms`;5x>wX>6$wc}~!Par_C%rfI0|XI6<>d=4BCqS>Wt_+Ww12%2$WTIg9nI-_;|IcOfE@J z(e3%~kA;Y;Q701n+1Djy`0O&^pPY{SFrJG<@@+0Gewm~V!BZM*XcVw(u$C%#M32Uf zrEsqiV)ehcUMm3r-QwN9L34P7SJIb5$OtOJ%WkgF`e$}?N!-edIcRntii96OyNn%_} z5)u%6gHt3OCn8QxD&0m1PtyME++U|TtGt4fw}iL70b0~=lZx!Pmss?^!&Jb{2^t5C z9!7@N!%|IU8}n7@AJK|=F#}s5W_+rmPhKx;H$ylK*f#zh8`?(nGN5y|HVHA;%DI88 zHukRSg~@<4*PXjj8tRa5GMCbjmYy9I9mdBDbuFphayzz}^valG(wPjtK|kmDIB`&YnB!S;ozeX6RLa@z z8HtRXfdMO<20V&WBH zFu?%@CV<`1ZM?ZIEqN@P2>;2R7bYW9DsqbGCJaLNsMQM1g2<~o+AvW?bn*+xgvmJ zRW_Rg{V5M5Ge1*qrUSp&LB+K0dTxY46$4oTk-yG7!xI@F^=?qG!&D$?xLv|<%-ynDfr9U`n7l% z_^24>XQ8osSRcfdqlKoPXIYy6YFj1@c>VKV3|eOP`J`hoQ#4!7;d>0rAByPa+17x7 zu?AQB{;jf^crReO(LQ;`N$hAx@ z99&bAH(J6<%z1Y}xAI~5*p#yY*(*65VpPQ^!Ev4L)&kCAwe+)K+gq4s^Z=(hWc42> zv@d0{`X&e|Ip1icN6w&0B@0f)Q=r{p8#2Ml=twSixqyKhUWHq9og>*Yw9c5 zj1Sb45}-aOAq7cT*2zn^bwi|TASTfw}DrS5g>CB}cv z{s|SVM?FPibO}{z8;ZEBnqs1Gr8ke69b8~?(zSL{lQlt*VL!0IV%Vq6VqRTXT#n4t zni-!BUx!rz{!y-!&D@;kGeo@H+;6ZDHBEX+nBFGb-k`;#T`w~ckdnRZZ&>n}bUv|! zJ@P|F#rx1t(j+hMlvtbWF0Bc3vcEaKAqwp&`Qf|1GiWaoyoNsm@bf-@A%R1WL7pFH z*$#liZ4=w^&E3#ozVT5}Kc^10qjaOo#_Jy6TxrCk*}cJ#z|37Vjkw87Bi|uX07h-1 zxNtE0K=-Shl6u^)Y|>jYvNtigRPIA?HNNA?m^952*5IV?>;RRO-}nJ)3Vnp%0lGtf zH=)n3X<1H|J%K4U(1?$OLKLdF6WFAOLHJL)z9u|9a0d& z{%0Z(kO!C&tpAkKsDKjtUVNL8oyravLX*zvlNztk}}tE zi1`bgL4jU2_P&my-;P$161KXJqIPvLb?;EK3Lg$M)3X_r1f9N|O4?LUIK3i4ss z9fIBWFwL;kKc~RpHF{dVdbr+zb0ih0l~PSlBRzA#RcG^wi|7qTPdU zpQ@3SWJIG4k?7;F*qr1oB2oeBe_4w4?k9K(Ar*)R|Kb!@!&A)qO#ko?!muWjDX+Q- zv-T5ikZ?o(M(!PVd_LnVSi6*4&4pK+O}xYYHpL{uPs3N!Fxs3_^3$}^>v9qWU~E7{ z%9h@mOLtH~nBt2EX&anEI_a_lUZ1C3>UXyWhj-9GZvRtT$)taDYOa9~e>(uqA3310 zip|c80s$vke0fOQ<3O+0ckysNn9QY8Do$4d2%TV1|A&NvgWILs6}pDL{yi=y!!7`v zH<7G68|CsuKKU3=M8Eeiq#6xKiDgCgV!nUK^QbbYG5wAWS96FZy-X`evh3dg^jp0A zt->cU8=tdSLqq!4)o4`6`%sAwfPaSZN8Sw9^Q)o)`#n(+}iZQ7Gp)5gGM4J<6 znp{uzX9qrn9uNAxkSfmPcByN_FM5XYeG<#7x6JZ^ybdNXV9WUD5IC?7+I7<2MX&Jt zif)krJ@ao9#q*zkbp6v`ibv4@Ts;Q~LwBBx7`24_J$ZZMsRS^8q>lh3%S{e8)ip5g z1NMIbey{&WgF~`Yu+wbuG<6p6$S5D^5|~8*&(S5vp@R}Y5IjO0Pej@ zKP<|`CWKk9BC!&{z4ON~>Vcv&>oL4}qlbvH217#bqj@Be|CO>6BTDqYUS`O-UY=9; z*f`Q``_WL4lnLlotJy!FbV9Jhb?`yAsqkODBvy74R(@k^#)EyfYK7b;10&4A zv^(5@#gqN{;2S{o1UHxei=y3UNRkHd9QYYPI!a6`TTUSZW?#YL0ZbhBVMskqKk1tq zWg13Zf0IBQ&hT{lcuW25EkZ|H$al*d){&TLz+#=pvKSsK++<-$Nn0~=w~2)?_bpv- zTpPy%HpO~C8cM?vt7pY}1kUPbkJZ<*~CG3MxrsqQr)5%;OOALGaqe)cM9-aV(5kDF0G{tJ`SA zqLN6-m5#?~Y!sub7gF9m(ZHV^owK4K#_(dh55_y`szt?7&@#qxsO>(mcd`4phXvbP`5Mz<0_w_PEdop_OOc z#O;gdQjHv!tn>1n(lv1IU>I1=Zu4r~X*{l^DShV#D|k42UCZqxNJZkF8{bg|_>bAs zPJK55Nzz4b#PIT-%I8QssesO_kT+Lv@A<+#jPVL^Q;3pC5c=z%4vglKuMYZ>l^2_H zw`xUqPB4~A0`iCq()oT-&+fMIwD9SRu0oNofnZ)`_-+A?Hs;bH){Zi_h)aG_N-q5> zN1V^aL4|#R3yXK@u_~o_-fk_Z5Bi~AHF~0exocohj()nYjQ@vu1^-g-2XDQfRVAZ= z)>%roa=JI*D^n8(KV-TQ_dT}V68H8l!p?MB$Dmx*(P+W_paj!l1uC?nr`Od!s?et? zk6qdD?=79{UwJN{BbHXW4o*s^hM0HVHuwFxcBPv2z}2~vMF@d~1aX@QNZlm~&yDAG z=p&li!)_Dhi+J0qXOzfEO!w>8U)XD4gY5=gjUV^0iq7|GrVsyur#R*?sShg8>$9a* zKpTni-R2fQ67(|#6AE08>!qtUSSDpryOwsPJKq)~I+obdd5O}N$*Q6kn1XK4J)pEx z=F>68u^_~;7=8BdZplSVZw?%M~cSGq~LWm}E^s4aM4cI92iGoUwZ@1@#n-y?0Q$j|~Ws2{7 ziQ|JZxa_3xnk6v^b}-DJEK}k7ui`!+_Cs%u&^d7Tm_K2#N}xAoC6=kpDvM_A3&0S+ zCaJz?vV>UTx&Zy0lZ2dX2VVPoZ?2${ZSshU=X^SJI2LH~2rLcmTL+pRw2U3iW_~i1 z{*1{Cg6p`Ebdo2Wyf5v$f=dSHPZTT7>>UCV(qqD;&lpY@?lsiXy_87s!J3Kb*i-Me z)8Yz}27VRr9ZkQGucv{2^|MpQx105p@Y=mX%?heJm?{5)RRIDNtJ%vO%xxt2v6?=H2w zo+&RgvUw@)qaF6qqcUKDq?;8Si0JHzc%< zUjhk0(oBxuz&9KV6nVrUQL`Rc5|}yi1(De6qgV~md+Ds0E#18%@(#GY^xvqtq6c?( z_3}3V<_ib$H|q(3g#*I3IF1D!3nez@V98)0!EE$HuI5i>1xdFtH}&895O%OV0?i6w zx7)$AYZC(~h|lcyzum$Lg(aO=m zu}-vKqPtN-iMSRWI#$|t-BKeQQWwR?c}&b1q8B}naQiQx zSKwN_I{6iC^-=_|g7l8O=>1lk^&~`&{g#V| zHorTs#JdHFzU`MGFxDfZw9l*DWhC}0+aet(bB+(t86c$jHtQiFTcsUM9%{KH<}lh;_0tcP)psbCkeuY*d6%Fp;Ux-p=DpIlHQ9 z_mhT^c?F2ezK8HX(j+H$k=3pb3f({Hx$S$@;l2s9)ZMZ_@aSaeBYa&?OUh3MtVK;JtNqExoc)z6ivJq^lFsHhs9rCjUP7MNde04!TXT9{DYZ`_PsCI zOCBtcHgbspR+o^XGF+At2rV9L2TYX>0PT~%(@Kj?K7As_p+$a zz$++08(`?ev&($@YVl@0|Mb%j-ET{5ldpGx`|o5*O8r;K=@(_`lG1XzK_%&aue7Q0 zm?;gf&KBLSLpv<7*}V;e%O9A|C%r50#XUT7r@LLbBy4Kzbw7Dj(EojlBBZw6l%)24 z$bq{8?a!^e{E^QEVVlRk8N8xZR_lXX_9jm1uF3o42F zi!$2+A2vKHmDZVSMb|wL-!&@Wyqt~R`FmBa5X5-Xl^0Z=_GB7;kpIX7bCq3Y1wMUG{mWha*RRvuS1llnc=Q_|Sq1EB?@G+* zifO$WFZiAEeQIaAVY7&S>pYSUQcEV$inT`pqGvhfcB<;@EG5LXDRIgG6R0b4s@|3) z5P&V8j3xRC8E5H16y7M|JQ^3WE%B@W04oi=d@2Pz<8#z z!$|ozWe%_X5B;@%3nz^FR=Tjqo9?mp#MAS0gO_T$A@Wg=^vD8u$RxC7PG!p93>F(* zHC_obq81I6+&opP@#xGsivk(FqAl|HjBr^zbi`NkS;!D&k70KJSc zD_Hj8qzrGGXQJ^ks4e%a`x4n?ah{}~&6xi{>J}sjoH20!OI||)hNyU`uS=Kl(aG`I z%aaeGw^4u(o3NcZtq2rJ`RE8+)|VDFXBe_BuLW}D$6u=|>W`~cVcZ1g_#i#Yw?Ksnm41i^1tMOi3dYk7r6k_KF|De=>YXn|!o@r8UcGtvB5O(00EXLIL`||J5 zlQ$LHHz1iH-k$PsGKK6b+-$9bak|+SrOXvuiIpqy>7;^hQoz9{=Arge+xY=J9c<=U z<%VD?SQAg{^dSSPLAVT=Dh@I$eC@lgz<3Vt(3~OC2)_ohSC*SaUk07 z!EbKZi4a5-vTr8iSZIsivw-k9gMP&s7H~uOpL7KaleiH;ZVBfAgc%a>3j;L&KY1Z| zhW+#Hytf$PeSl5e1W<|B;rYU%w8T!+gIp_+Y(g@mX-Mu7YZPKG1XMYYS)qTOgblf? zVU}z4tT*(MSG#OZ^B&E4Bgr`X|1b-PwC`c68xX4;v=K)GAY{~W&EGG(YdZPLzlfSm@O`*V z|ByY84r9`}i$XVfGCIt7Fk^vkfDEf=ZbsA9=r**-8{|~~dE)~md(FjRt!t4f;3dJq zy8(eucQlyzHA;p2YusR!-C(E?0zt400UNcFZSI)(x>Wk#KeKpld;`AL`RH=*I);mG z;JuCcq-ap6qiyjN6U-ZPF}IkT`Hcx8@wcu^c1v7eX1Vs_W*+-&;z%@{^ z;}ECb#b#yj^E3TZG+`pJ4Vop8Gl6Eg2QO_!U)vX-E)>HtH*2FGeDKGs`CT=K^vN_J z9ho#C2P5@U-5Iz|EHQbC5}3C5cfDt2OkqS}zk@lxgjyvYIqEuIS+-~?ZP&3>fyQq@ zqvFoM6H)?+vv-@Qx&N6ex>GRKkd0!D*z~`U?EepM0o6zL5sU@c4b0M421a6_S^SS) z`G3BAdID1ha&3qV7RF=kzmxpmTkwBh1*g{#vrIknk+rJNn75xPsL2<}ng#tIZczoa literal 0 HcmV?d00001 diff --git a/book/images/course-schedule-examples.png b/book/images/course-schedule-examples.png index 4dfa688ef35cdde42e0fa73c961fbf579c77166b..348fe3de7a232c03bd2ebc49c263b43e2b5accfb 100644 GIT binary patch literal 22504 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 literal 26285 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 diff --git a/book/images/critical-connections-sol-examples.png b/book/images/critical-connections-sol-examples.png index bbf2c22bdbde6c695962c625508d32420b701b7b..eb3e568f4303b57b49aa362e4ce237f7d4c9066d 100644 GIT binary patch literal 35639 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%0A&dKTN8k>e~c%nTU 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 IhRzZH2Wo5Jk^lez literal 37090 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 E0LA#_YybcN diff --git a/book/images/critical-path-examples.png b/book/images/critical-path-examples.png index 7ba6906978a42758beab4e4f6ab0a05ed013cb92..63b0e330e430fa49e294f765cded36b4cbff8158 100644 GIT binary patch literal 40870 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�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 N@O1TaS?83{1OUm0Kpp@9 literal 42278 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

  • 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 literal 0 HcmV?d00001 diff --git a/book/images/sll-fast-slow-pointers.png b/book/images/sll-fast-slow-pointers.png new file mode 100644 index 0000000000000000000000000000000000000000..235500669911dde9ac834fe5dc30409cc2d7f5b3 GIT binary patch literal 24109 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 literal 0 HcmV?d00001 diff --git a/book/part04-algorithmic-toolbox.asc b/book/part04-algorithmic-toolbox.asc index 6b60c1bf..3508f0cd 100644 --- a/book/part04-algorithmic-toolbox.asc +++ b/book/part04-algorithmic-toolbox.asc @@ -14,7 +14,7 @@ Later, you will learn some algorithmic paradigms that will help you identify com .We are going to discuss the following techniques for solving algorithms problems: - <>: makes greedy choices using heuristics to find the best solution without looking back. -- <>: a technique for speeding up recursive algorithms when there are many _overlapping subproblems_. It uses _memoization_ to avoid duplicating work. +- <>: a technique for speeding up recursive algorithms when there are many _overlapping subproblems_. It uses _memoization_ to avoid duplicating work. - <>: _divide_ problems into smaller pieces, _conquer_ each subproblem, and then _join_ the results. - <>: search _all (or some)_ possible paths. However, it stops and _go back_ as soon as notice the current solution is not working. - _Brute Force_: generate all possible solutions and tries all of them. (Use it as a last resort or as the starting point and to later optimize it). From b3039ab686ba664d44fced91b87c911b331c78d9 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Fri, 30 Oct 2020 16:11:54 +0000 Subject: [PATCH 09/33] :bookmark: chore(release): 2.7.0 # [2.7.0](https://github.com/amejiarosario/dsa.js/compare/2.6.0...2.7.0) (2020-10-30) ### Bug Fixes * **book/set:** split Set chapter into Hash Set and Tree Set for better ([c1cf57a](https://github.com/amejiarosario/dsa.js/commit/c1cf57a31fc7a698665c82c8fbd2fde7fb825078)) ### Features * **book:** show companies asked questions ([b3167f9](https://github.com/amejiarosario/dsa.js/commit/b3167f9c694c5e6719bf1d01804aeec60b41e57f)) * **book/linkedlist:** add applications ([2b96f00](https://github.com/amejiarosario/dsa.js/commit/2b96f0086632d9ddcbb7e8f76a061a46f90a65a0)) --- CHANGELOG.md | 13 +++++++++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b7b8367d..9ad80831 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,16 @@ +# [2.7.0](https://github.com/amejiarosario/dsa.js/compare/2.6.0...2.7.0) (2020-10-30) + + +### Bug Fixes + +* **book/set:** split Set chapter into Hash Set and Tree Set for better ([c1cf57a](https://github.com/amejiarosario/dsa.js/commit/c1cf57a31fc7a698665c82c8fbd2fde7fb825078)) + + +### Features + +* **book:** show companies asked questions ([b3167f9](https://github.com/amejiarosario/dsa.js/commit/b3167f9c694c5e6719bf1d01804aeec60b41e57f)) +* **book/linkedlist:** add applications ([2b96f00](https://github.com/amejiarosario/dsa.js/commit/2b96f0086632d9ddcbb7e8f76a061a46f90a65a0)) + # [2.6.0](https://github.com/amejiarosario/dsa.js/compare/2.5.1...2.6.0) (2020-10-28) diff --git a/package-lock.json b/package-lock.json index 756dd68a..48d4536e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "dsa.js", - "version": "2.6.0", + "version": "2.7.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index d8aee567..b629b146 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dsa.js", - "version": "2.6.0", + "version": "2.7.0", "description": "Data Structures & Algorithms in JS", "author": "Adrian Mejia (https://adrianmejia.com)", "homepage": "https://github.com/amejiarosario/dsa.js", From 38a4178e69e698a1b3c0d4452f0cfd58aed5290d Mon Sep 17 00:00:00 2001 From: Adrian Mejia Date: Tue, 1 Dec 2020 19:43:14 -0500 Subject: [PATCH 10/33] fix(book): update company names --- book/content/part02/array.asc | 2 +- book/content/part02/hash-map.asc | 4 ++-- book/content/part02/linked-list.asc | 2 +- book/content/part02/queue.asc | 2 +- book/content/part03/binary-search-tree-traversal.asc | 2 +- book/content/part03/graph-search.asc | 2 +- lab/exercises/10-mixed/integer-to-words.js | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/book/content/part02/array.asc b/book/content/part02/array.asc index 066cbb58..3bde2929 100644 --- a/book/content/part02/array.asc +++ b/book/content/part02/array.asc @@ -522,7 +522,7 @@ maxSubArray([-3, 4,-1, 2, 1, -5]); // 6 (sum [4,-1, 2, 1]) maxSubArray([-2, 1, -3, 4, -1, 3, 1]); // 7 (sum [4,-1, 3, 1]) ---- -_Common in interviews at: Amazon, Apple, Google, Microsoft, Facebook_ +_Common in interviews at: FAANG, Microsoft_ // end::array-q-max-subarray[] [source, javascript] diff --git a/book/content/part02/hash-map.asc b/book/content/part02/hash-map.asc index ab5ad56f..dcdf6a20 100644 --- a/book/content/part02/hash-map.asc +++ b/book/content/part02/hash-map.asc @@ -627,7 +627,7 @@ Something that might look unnecessary is the `Math.max` when updating the `lo` p // end::hashmap-q-two-sum[] -_Common in interviews at: Amazon, Google, Apple._ +_Common in interviews at: FAANG._ Examples: @@ -656,7 +656,7 @@ _Solution: <>_ // end::hashmap-q-subarray-sum-equals-k[] -_Common in interviews at: Facebook, Google, Amazon_ +_Common in interviews at: FAANG_ Examples: diff --git a/book/content/part02/linked-list.asc b/book/content/part02/linked-list.asc index bf2ed110..234ca937 100644 --- a/book/content/part02/linked-list.asc +++ b/book/content/part02/linked-list.asc @@ -584,7 +584,7 @@ mergeTwoLists(2->3->4, 1->2); // 1->2->2->3->4 mergeTwoLists(2->3->4,null); // 2->3->4 ---- -_Common in interviews at: Amazon, Adobe, Microsoft, Google_ +_Common in interviews at: FAANG, Adobe, Microsoft_ // end::linkedlist-q-merge-lists[] [source, javascript] diff --git a/book/content/part02/queue.asc b/book/content/part02/queue.asc index a9c0de2e..609b720a 100644 --- a/book/content/part02/queue.asc +++ b/book/content/part02/queue.asc @@ -103,7 +103,7 @@ counter.request(3100); // 1 (last requests was 100 ms ago, > 10ms, so doesn't co counter.request(3105); // 2 (last requests was 5 ms ago, <= 10ms, so it counts) ---- -_Common in interviews at: Google, Bloomberg, Yandex_ +_Common in interviews at: FAANG, Bloomberg, Yandex_ // end::queue-q-recent-counter[] diff --git a/book/content/part03/binary-search-tree-traversal.asc b/book/content/part03/binary-search-tree-traversal.asc index 1b6b5b60..512a6cbe 100644 --- a/book/content/part03/binary-search-tree-traversal.asc +++ b/book/content/part03/binary-search-tree-traversal.asc @@ -105,7 +105,7 @@ Post-order traverval will return `3, 4, 5, 15, 40, 30, 10`. // end::binary-tree-q-diameter-of-binary-tree[] -_Common in interviews at: Facebook, Amazon, Google_ +_Common in interviews at: FAANG_ // Example 1: // [graphviz, tree-diameter-example-1, png] diff --git a/book/content/part03/graph-search.asc b/book/content/part03/graph-search.asc index eda1d6af..af7d5969 100644 --- a/book/content/part03/graph-search.asc +++ b/book/content/part03/graph-search.asc @@ -155,7 +155,7 @@ _Solution: <>_ // end::graph-q-critical-connections-in-a-network[] -_Common in interviews at: Amazon, Google._ +_Common in interviews at: FAANG._ Examples: diff --git a/lab/exercises/10-mixed/integer-to-words.js b/lab/exercises/10-mixed/integer-to-words.js index b550539a..76cf8e87 100644 --- a/lab/exercises/10-mixed/integer-to-words.js +++ b/lab/exercises/10-mixed/integer-to-words.js @@ -10,7 +10,7 @@ const HUNDREDS = new Map([ ]); /** - * You are creating a basic number-to-speech algorithms to use at Google. + * You are creating a basic number-to-speech algorithms to use at search engine company. * The first part is to convert a given number into its text representation. * The 2nd part, is to take that text and synthetize the voice. * We are going to focus on the first part for this exercise. From 96cc1cb332fa97bab9fea594ee4405812ebbfb0b Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Wed, 2 Dec 2020 00:47:11 +0000 Subject: [PATCH 11/33] :bookmark: chore(release): 2.7.1 ## [2.7.1](https://github.com/amejiarosario/dsa.js/compare/2.7.0...2.7.1) (2020-12-02) ### Bug Fixes * **book:** update company names ([38a4178](https://github.com/amejiarosario/dsa.js/commit/38a4178e69e698a1b3c0d4452f0cfd58aed5290d)) --- CHANGELOG.md | 7 +++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ad80831..0783431a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [2.7.1](https://github.com/amejiarosario/dsa.js/compare/2.7.0...2.7.1) (2020-12-02) + + +### Bug Fixes + +* **book:** update company names ([38a4178](https://github.com/amejiarosario/dsa.js/commit/38a4178e69e698a1b3c0d4452f0cfd58aed5290d)) + # [2.7.0](https://github.com/amejiarosario/dsa.js/compare/2.6.0...2.7.0) (2020-10-30) diff --git a/package-lock.json b/package-lock.json index 48d4536e..902c1cab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "dsa.js", - "version": "2.7.0", + "version": "2.7.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index b629b146..d12afbd4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dsa.js", - "version": "2.7.0", + "version": "2.7.1", "description": "Data Structures & Algorithms in JS", "author": "Adrian Mejia (https://adrianmejia.com)", "homepage": "https://github.com/amejiarosario/dsa.js", From b2a82c02c877a717adbf83a7c2d3d416ce08ba3f Mon Sep 17 00:00:00 2001 From: knoxknox Date: Wed, 16 Dec 2020 14:55:32 +0200 Subject: [PATCH 12/33] Rename fibonacci-dynamic-programming (fix typo) --- book/content/part04/dynamic-programming.asc | 2 +- deprecated-README.adoc | 2 +- ...-dynamic-programming.js => fibonacci-dynamic-programming.js} | 0 src/algorithms/fibonacci.spec.js | 2 +- 4 files changed, 3 insertions(+), 3 deletions(-) rename src/algorithms/{fibanacci-dynamic-programming.js => fibonacci-dynamic-programming.js} (100%) diff --git a/book/content/part04/dynamic-programming.asc b/book/content/part04/dynamic-programming.asc index 211acb9e..147a92f1 100644 --- a/book/content/part04/dynamic-programming.asc +++ b/book/content/part04/dynamic-programming.asc @@ -40,7 +40,7 @@ When we have recursive functions, doing duplicated work is the perfect place for .Recursive Fibonacci Implemenation using Dynamic Programming [source, javascript] ---- -include::{codedir}/algorithms/fibanacci-dynamic-programming.js[tag=snippet,indent=0] +include::{codedir}/algorithms/fibonacci-dynamic-programming.js[tag=snippet,indent=0] ---- This implementation checks if we already calculated the value, if so it will save it for later use. diff --git a/deprecated-README.adoc b/deprecated-README.adoc index f0ff9d83..27200775 100644 --- a/deprecated-README.adoc +++ b/deprecated-README.adoc @@ -56,7 +56,7 @@ image::https://user-images.githubusercontent.com/418605/46118890-ba721180-c1d6-1 * Divide and Conquer ** Fibonacci Numbers. https://github.com/amejiarosario/dsa.js/blob/master/src/algorithms/fibonacci-recursive.js[Code] * Dynamic Programming - ** Fibonacci with memoization. https://github.com/amejiarosario/dsa.js/blob/master/src/algorithms/fibanacci-dynamic-programming.js[Code] + ** Fibonacci with memoization. https://github.com/amejiarosario/dsa.js/blob/master/src/algorithms/fibonacci-dynamic-programming.js[Code] * Backtracking algorithms ** Word permutations. https://github.com/amejiarosario/dsa.js/blob/master/src/algorithms/permutations-backtracking.js[Code] diff --git a/src/algorithms/fibanacci-dynamic-programming.js b/src/algorithms/fibonacci-dynamic-programming.js similarity index 100% rename from src/algorithms/fibanacci-dynamic-programming.js rename to src/algorithms/fibonacci-dynamic-programming.js diff --git a/src/algorithms/fibonacci.spec.js b/src/algorithms/fibonacci.spec.js index e9cae4cf..8be001f5 100644 --- a/src/algorithms/fibonacci.spec.js +++ b/src/algorithms/fibonacci.spec.js @@ -1,7 +1,7 @@ const implementations = [ 'fibonacci', 'fibonacci-recursive', - 'fibanacci-dynamic-programming', + 'fibonacci-dynamic-programming', ]; implementations.forEach((fileName) => { From ded0a701815ce4647394e2f5e217c0d88142a92c Mon Sep 17 00:00:00 2001 From: knoxknox Date: Wed, 16 Dec 2020 14:55:32 +0200 Subject: [PATCH 13/33] fix(book): Rename fibonacci-dynamic-programming (fix typo) --- book/content/part04/dynamic-programming.asc | 2 +- deprecated-README.adoc | 2 +- ...-dynamic-programming.js => fibonacci-dynamic-programming.js} | 0 src/algorithms/fibonacci.spec.js | 2 +- 4 files changed, 3 insertions(+), 3 deletions(-) rename src/algorithms/{fibanacci-dynamic-programming.js => fibonacci-dynamic-programming.js} (100%) diff --git a/book/content/part04/dynamic-programming.asc b/book/content/part04/dynamic-programming.asc index 211acb9e..147a92f1 100644 --- a/book/content/part04/dynamic-programming.asc +++ b/book/content/part04/dynamic-programming.asc @@ -40,7 +40,7 @@ When we have recursive functions, doing duplicated work is the perfect place for .Recursive Fibonacci Implemenation using Dynamic Programming [source, javascript] ---- -include::{codedir}/algorithms/fibanacci-dynamic-programming.js[tag=snippet,indent=0] +include::{codedir}/algorithms/fibonacci-dynamic-programming.js[tag=snippet,indent=0] ---- This implementation checks if we already calculated the value, if so it will save it for later use. diff --git a/deprecated-README.adoc b/deprecated-README.adoc index f0ff9d83..27200775 100644 --- a/deprecated-README.adoc +++ b/deprecated-README.adoc @@ -56,7 +56,7 @@ image::https://user-images.githubusercontent.com/418605/46118890-ba721180-c1d6-1 * Divide and Conquer ** Fibonacci Numbers. https://github.com/amejiarosario/dsa.js/blob/master/src/algorithms/fibonacci-recursive.js[Code] * Dynamic Programming - ** Fibonacci with memoization. https://github.com/amejiarosario/dsa.js/blob/master/src/algorithms/fibanacci-dynamic-programming.js[Code] + ** Fibonacci with memoization. https://github.com/amejiarosario/dsa.js/blob/master/src/algorithms/fibonacci-dynamic-programming.js[Code] * Backtracking algorithms ** Word permutations. https://github.com/amejiarosario/dsa.js/blob/master/src/algorithms/permutations-backtracking.js[Code] diff --git a/src/algorithms/fibanacci-dynamic-programming.js b/src/algorithms/fibonacci-dynamic-programming.js similarity index 100% rename from src/algorithms/fibanacci-dynamic-programming.js rename to src/algorithms/fibonacci-dynamic-programming.js diff --git a/src/algorithms/fibonacci.spec.js b/src/algorithms/fibonacci.spec.js index e9cae4cf..8be001f5 100644 --- a/src/algorithms/fibonacci.spec.js +++ b/src/algorithms/fibonacci.spec.js @@ -1,7 +1,7 @@ const implementations = [ 'fibonacci', 'fibonacci-recursive', - 'fibanacci-dynamic-programming', + 'fibonacci-dynamic-programming', ]; implementations.forEach((fileName) => { From 65b6edd52a5f54acfb07b12a8165b3bc10baad67 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Thu, 17 Dec 2020 01:58:38 +0000 Subject: [PATCH 14/33] :bookmark: chore(release): 2.7.2 ## [2.7.2](https://github.com/amejiarosario/dsa.js/compare/2.7.1...2.7.2) (2020-12-17) ### Bug Fixes * **book:** Rename fibonacci-dynamic-programming ([ded0a70](https://github.com/amejiarosario/dsa.js/commit/ded0a701815ce4647394e2f5e217c0d88142a92c)) --- CHANGELOG.md | 7 +++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0783431a..baef7fd9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [2.7.2](https://github.com/amejiarosario/dsa.js/compare/2.7.1...2.7.2) (2020-12-17) + + +### Bug Fixes + +* **book:** Rename fibonacci-dynamic-programming ([ded0a70](https://github.com/amejiarosario/dsa.js/commit/ded0a701815ce4647394e2f5e217c0d88142a92c)) + ## [2.7.1](https://github.com/amejiarosario/dsa.js/compare/2.7.0...2.7.1) (2020-12-02) diff --git a/package-lock.json b/package-lock.json index 902c1cab..72aad049 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "dsa.js", - "version": "2.7.1", + "version": "2.7.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index d12afbd4..3fa87ca5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dsa.js", - "version": "2.7.1", + "version": "2.7.2", "description": "Data Structures & Algorithms in JS", "author": "Adrian Mejia (https://adrianmejia.com)", "homepage": "https://github.com/amejiarosario/dsa.js", From c137930a8750c0aac95bbbae931886e068371d92 Mon Sep 17 00:00:00 2001 From: Adrian Mejia Date: Mon, 21 Dec 2020 21:06:25 -0500 Subject: [PATCH 15/33] fix(book/hashmap): exercise example and add tests --- book/content/part02/hash-map.asc | 2 +- .../longest-substring-without-repeating-characters.spec.js | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/book/content/part02/hash-map.asc b/book/content/part02/hash-map.asc index dcdf6a20..8f239cba 100644 --- a/book/content/part02/hash-map.asc +++ b/book/content/part02/hash-map.asc @@ -486,7 +486,7 @@ function longestSubstring(s) { .Examples [source, javascript] ---- -longestSubstring('abcdaefg'); // 4 ('abcd' or 'aefg') +longestSubstring('abcdaefg'); // 7 ('bcdaefg') longestSubstring('abbaa'); // 2 ('ab') longestSubstring('abbadvdf') // 4 ('badv') ---- diff --git a/book/interview-questions/longest-substring-without-repeating-characters.spec.js b/book/interview-questions/longest-substring-without-repeating-characters.spec.js index 7011e0d4..91df0b9a 100644 --- a/book/interview-questions/longest-substring-without-repeating-characters.spec.js +++ b/book/interview-questions/longest-substring-without-repeating-characters.spec.js @@ -20,5 +20,11 @@ const { lenLongestSubstring } = require('./longest-substring-without-repeating-c const expected = 5; expect(fn(actual)).toEqual(expected); }); + + it('should work with example', () => { + const actual = 'abcdaefg'; + const expected = 7; + expect(fn(actual)).toEqual(expected); + }); }); }); From c7c7947da33cb61a794e538dff55951318edc341 Mon Sep 17 00:00:00 2001 From: Adrian Mejia Date: Mon, 21 Dec 2020 21:07:18 -0500 Subject: [PATCH 16/33] fix(book/graph): add comments for runtimes using hashset implementations --- book/content/part03/graph.asc | 2 +- src/data-structures/graphs/graph.js | 18 ++++++++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/book/content/part03/graph.asc b/book/content/part03/graph.asc index cceacd24..95cf3681 100644 --- a/book/content/part03/graph.asc +++ b/book/content/part03/graph.asc @@ -298,7 +298,7 @@ include::{codedir}/data-structures/graphs/node.js[tag=removeAdjacent, indent=0] ^|_Add_ ^|_Remove_ ^|_Add_ ^|_Remove_ | Graph (adj. matrix) ^| O(\|V\|^2^) ^| O(\|V\|^2^) ^|O(1) ^|O(1) ^|O(\|V\|^2^) | Graph (adj. list w/array) ^| O(1) ^| O(\|V\| + \|E\|)) ^|O(1) ^|O(\|V\| + \|E\|) ^|O(\|V\| + \|E\|) -| Graph (adj. list w/HashSet) ^| O(1) ^| O(\|V\|)) ^|O(1) ^|O(\|V\|) ^|O(\|V\| + \|E\|) +| Graph (adj. list w/HashSet) ^| O(1) ^| O(\|V\|)) ^|O(1) ^|O(1) ^|O(\|V\| + \|E\|) |=== // end::table[] diff --git a/src/data-structures/graphs/graph.js b/src/data-structures/graphs/graph.js index 80fea526..1e01f886 100644 --- a/src/data-structures/graphs/graph.js +++ b/src/data-structures/graphs/graph.js @@ -41,7 +41,8 @@ class Graph { * Removes node from graph * It also removes the reference of the deleted node from * anywhere it was adjacent to. - * Runtime: O(|V| + |E|) + * Runtime: O(|V|) because adjacency list is implemented with a HashSet. + * It were implemented with an array then it would be O(|V| + |E|). * @param {any} value node's value */ removeVertex(value) { @@ -55,9 +56,9 @@ class Graph { // tag::addEdge[] /** - * Create a connection between source node and destination node. - * If the graph is undirected it will also create the conneciton from destination to destination. - * If the nodes doesn't exist then it will create them on the fly + * Create a connection between the source node and the destination node. + * If the graph is undirected, it will also create the link from destination to source. + * If the nodes don't exist, then it will make them on the fly. * Runtime: O(1) * @param {any} source * @param {any} destination @@ -79,10 +80,11 @@ class Graph { // tag::removeEdge[] /** - * Remove connection between source node and destination. - * If the graph is undirected it will also remove the conneciton from destination to destination. + * Remove the connection between source node and destination. + * If the graph is undirected, it will also create the link from destination to source. * - * Runtime: O(|E|) + * Runtime: O(1): implemented with HashSet. + * If implemented with array, would be O(|E|). * * @param {any} source * @param {any} destination @@ -105,7 +107,7 @@ class Graph { // tag::areAdjacents[] /** - * True if two nodes are adjacent to each other + * True if two nodes are adjacent. * @param {any} source node's value * @param {any} destination node's value */ From 1d7530199940b926467ad0dcbc3b7dbe76b77820 Mon Sep 17 00:00:00 2001 From: Adrian Mejia Date: Mon, 21 Dec 2020 21:07:39 -0500 Subject: [PATCH 17/33] fix(book/bst): better wording --- book/content/part03/binary-search-tree.asc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/book/content/part03/binary-search-tree.asc b/book/content/part03/binary-search-tree.asc index db6fcfce..2aa7903a 100644 --- a/book/content/part03/binary-search-tree.asc +++ b/book/content/part03/binary-search-tree.asc @@ -53,10 +53,13 @@ With the methods `add` and `remove`, we have to guarantee that our tree always h .For inserting an element in a BST, we have two scenarios: 1. If the tree is empty (root element is null), we add the newly created node as root, and that's it! -2. If the root is not null. Start from it and compare the node’s value against the new element. If the node has higher than a new item, we move to the right child, otherwise to the left. We check each node recursively until we find an empty spot to put the new element and keep the rule `right < parent < left`. -3. If we insert the same value multiple times, we don’t want duplicates. So, we can keep track of multiples using a duplicity counter. +2. If the tree has a root, compare the new value with the root. Then we have three possibilities: +2.1. `root == newValue`: we increase the duplicity counter in that case, and done! +2.2 `root > newValue`, we search on the left side of the root. +2.3 `root < newValue`, we search on the right side of the root. +3. Repeat the comparison between the current node and `newValue`, until we find the value or (null) space. -For instance, let’s say that we want to insert the values 19, 21, 10, 2, 8 in a BST: +For instance, let’s say that we want to insert the values 19, 21, 10, 2, 18 in a BST: .Inserting values on a BST. image::image36.png[image,width=528,height=329] From 436848d3d7045af0a944950473677d594901acce Mon Sep 17 00:00:00 2001 From: Adrian Mejia Date: Mon, 21 Dec 2020 21:32:05 -0500 Subject: [PATCH 18/33] fixes format --- book/content/part03/binary-search-tree.asc | 12 ++++++------ book/content/part03/graph.asc | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/book/content/part03/binary-search-tree.asc b/book/content/part03/binary-search-tree.asc index 2aa7903a..312421fa 100644 --- a/book/content/part03/binary-search-tree.asc +++ b/book/content/part03/binary-search-tree.asc @@ -52,12 +52,12 @@ With the methods `add` and `remove`, we have to guarantee that our tree always h ===== Inserting new elements in a BST .For inserting an element in a BST, we have two scenarios: -1. If the tree is empty (root element is null), we add the newly created node as root, and that's it! -2. If the tree has a root, compare the new value with the root. Then we have three possibilities: -2.1. `root == newValue`: we increase the duplicity counter in that case, and done! -2.2 `root > newValue`, we search on the left side of the root. -2.3 `root < newValue`, we search on the right side of the root. -3. Repeat the comparison between the current node and `newValue`, until we find the value or (null) space. +. If the tree is empty (root element is null), we add the newly created node as root, and that's it! +. If the tree has a root, compare the new value with the root. Then we have three possibilities: +.. `root == newValue`: we increase the duplicity counter in that case, and done! +.. `root > newValue`, we search on the left side of the root. +.. `root < newValue`, we search on the right side of the root. +. Repeat the comparison between the current node and `newValue`, until we find the value or (null) space. For instance, let’s say that we want to insert the values 19, 21, 10, 2, 18 in a BST: diff --git a/book/content/part03/graph.asc b/book/content/part03/graph.asc index 95cf3681..3e2fff43 100644 --- a/book/content/part03/graph.asc +++ b/book/content/part03/graph.asc @@ -297,7 +297,7 @@ include::{codedir}/data-structures/graphs/node.js[tag=removeAdjacent, indent=0] .2+.^s| Data Structure 2+^s| Vertices 2+^s| Edges .2+^.^s| Space Complexity ^|_Add_ ^|_Remove_ ^|_Add_ ^|_Remove_ | Graph (adj. matrix) ^| O(\|V\|^2^) ^| O(\|V\|^2^) ^|O(1) ^|O(1) ^|O(\|V\|^2^) -| Graph (adj. list w/array) ^| O(1) ^| O(\|V\| + \|E\|)) ^|O(1) ^|O(\|V\| + \|E\|) ^|O(\|V\| + \|E\|) +| Graph (adj. list w/array) ^| O(1) ^| O(\|V\| + \|E\|)) ^|O(1) ^|O(\|E\|) ^|O(\|V\| + \|E\|) | Graph (adj. list w/HashSet) ^| O(1) ^| O(\|V\|)) ^|O(1) ^|O(1) ^|O(\|V\| + \|E\|) |=== // end::table[] From 3c32d0efec8f75153a128538d27bb30226afc5be Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Tue, 22 Dec 2020 02:36:35 +0000 Subject: [PATCH 19/33] :bookmark: chore(release): 2.7.3 ## [2.7.3](https://github.com/amejiarosario/dsa.js/compare/2.7.2...2.7.3) (2020-12-22) ### Bug Fixes * **book/bst:** better wording ([1d75301](https://github.com/amejiarosario/dsa.js/commit/1d7530199940b926467ad0dcbc3b7dbe76b77820)) * **book/graph:** add comments for runtimes using hashset implementations ([c7c7947](https://github.com/amejiarosario/dsa.js/commit/c7c7947da33cb61a794e538dff55951318edc341)) * **book/hashmap:** exercise example and add tests ([c137930](https://github.com/amejiarosario/dsa.js/commit/c137930a8750c0aac95bbbae931886e068371d92)) --- CHANGELOG.md | 9 +++++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index baef7fd9..5ff82340 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +## [2.7.3](https://github.com/amejiarosario/dsa.js/compare/2.7.2...2.7.3) (2020-12-22) + + +### Bug Fixes + +* **book/bst:** better wording ([1d75301](https://github.com/amejiarosario/dsa.js/commit/1d7530199940b926467ad0dcbc3b7dbe76b77820)) +* **book/graph:** add comments for runtimes using hashset implementations ([c7c7947](https://github.com/amejiarosario/dsa.js/commit/c7c7947da33cb61a794e538dff55951318edc341)) +* **book/hashmap:** exercise example and add tests ([c137930](https://github.com/amejiarosario/dsa.js/commit/c137930a8750c0aac95bbbae931886e068371d92)) + ## [2.7.2](https://github.com/amejiarosario/dsa.js/compare/2.7.1...2.7.2) (2020-12-17) diff --git a/package-lock.json b/package-lock.json index 72aad049..5ef68ed3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "dsa.js", - "version": "2.7.2", + "version": "2.7.3", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 3fa87ca5..3b7404bf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dsa.js", - "version": "2.7.2", + "version": "2.7.3", "description": "Data Structures & Algorithms in JS", "author": "Adrian Mejia (https://adrianmejia.com)", "homepage": "https://github.com/amejiarosario/dsa.js", From 6b9a4e8c00c2082ed7d083b58f7d462e340725fe Mon Sep 17 00:00:00 2001 From: Adrian Mejia Date: Sat, 9 Jan 2021 09:37:51 -0400 Subject: [PATCH 20/33] fix(bst): some typos on the code --- src/data-structures/trees/binary-search-tree.js | 8 ++++---- src/data-structures/trees/binary-tree-node.js | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/data-structures/trees/binary-search-tree.js b/src/data-structures/trees/binary-search-tree.js index 43900c54..5e9ffb86 100644 --- a/src/data-structures/trees/binary-search-tree.js +++ b/src/data-structures/trees/binary-search-tree.js @@ -249,14 +249,14 @@ class BinarySearchTree { /** * Represent Binary Tree as an array. * - * Leaf nodes will have two `undefined` descendents. + * Leaf nodes will have two `undefined` descendants. * * The array representation of the binary tree is as follows: * * First element (index=0) is the root. - * The following two elements (index=1,2) are descendents of the root: left (a) and right (b). - * The next two elements (index=3,4) are the descendents of a - * The next two elements (index=5,6) are the descendents of b and so on. + * The following two elements (index=1,2) are descendants of the root: left (a) and right (b). + * The next two elements (index=3,4) are the descendants of a + * The next two elements (index=5,6) are the descendants of b and so on. * * 0 1 2 3 4 5 6 n * [root, a=root.left, b=root.right, a.left, a.right, b.left, b.right, ...] diff --git a/src/data-structures/trees/binary-tree-node.js b/src/data-structures/trees/binary-tree-node.js index 69ae1cbf..781b080d 100644 --- a/src/data-structures/trees/binary-tree-node.js +++ b/src/data-structures/trees/binary-tree-node.js @@ -19,7 +19,7 @@ class BinaryTreeNode { // tag::setAndUpdateParent[] /** - * Set a left node descendents. + * Set a left node descendants. * Also, children get associated to parent. */ setLeftAndUpdateParent(node) { @@ -31,7 +31,7 @@ class BinaryTreeNode { } /** - * Set a right node descendents. + * Set a right node descendants. * Also, children get associated to parent. */ setRightAndUpdateParent(node) { @@ -71,7 +71,7 @@ class BinaryTreeNode { } /** - * Node is leaf is it has no descendents + * Node is leaf is it has no descendants */ get isLeaf() { return !this.left && !this.right; From 2090ea28dd1a5666aa2bea696996c75406d8ceea Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 9 Jan 2021 13:40:11 +0000 Subject: [PATCH 21/33] :bookmark: chore(release): 2.7.4 ## [2.7.4](https://github.com/amejiarosario/dsa.js/compare/2.7.3...2.7.4) (2021-01-09) ### Bug Fixes * **bst:** some typos on the code ([6b9a4e8](https://github.com/amejiarosario/dsa.js/commit/6b9a4e8c00c2082ed7d083b58f7d462e340725fe)) --- CHANGELOG.md | 7 +++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ff82340..1261c178 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [2.7.4](https://github.com/amejiarosario/dsa.js/compare/2.7.3...2.7.4) (2021-01-09) + + +### Bug Fixes + +* **bst:** some typos on the code ([6b9a4e8](https://github.com/amejiarosario/dsa.js/commit/6b9a4e8c00c2082ed7d083b58f7d462e340725fe)) + ## [2.7.3](https://github.com/amejiarosario/dsa.js/compare/2.7.2...2.7.3) (2020-12-22) diff --git a/package-lock.json b/package-lock.json index 5ef68ed3..b3c30b3a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "dsa.js", - "version": "2.7.3", + "version": "2.7.4", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 3b7404bf..4c2e8adb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dsa.js", - "version": "2.7.3", + "version": "2.7.4", "description": "Data Structures & Algorithms in JS", "author": "Adrian Mejia (https://adrianmejia.com)", "homepage": "https://github.com/amejiarosario/dsa.js", From 1812da740539888d995060f156922b9050001004 Mon Sep 17 00:00:00 2001 From: Adrian Mejia Date: Thu, 11 Feb 2021 08:16:12 -0500 Subject: [PATCH 22/33] Update README.md --- README.md | 37 +++++++++++++++++-------------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index f6fde2d7..c2e3befa 100644 --- a/README.md +++ b/README.md @@ -61,35 +61,35 @@ and then you can import it into your programs or CLI const { LinkedList, Queue, Stack } = require('dsa.js'); ``` -For a full list of all the exposed data structures and algorithms [see](src/index.js). +For a list of all available data structures and algorithms, [see index.js](src/index.js). ## Features Algorithms are an essential toolbox for every programmer. -You usually need algorithms when you have to sort data, search for a value, transform data, scale your code to many users, to name a few. -Algorithms are just the step you follow to solve a problem while data structures are where you store the data for later manipulation. Both combined create programs. +You will need to mind algorithms runtime when you have to sort data, search for a value in a big dataset, transform data, scale your code to many users, to name a few. +Algorithms are just the step you follow to solve a problem, while data structures are where you store the data for later manipulation. Both combined create programs. > Algorithms + Data Structures = Programs. Most programming languages and libraries indeed provide implementations for basic data structures and algorithms. -However, to make use of data structures properly, you have to know the tradeoffs so you can choose the best tool for the job. +However, to make use of data structures properly, you have to know the tradeoffs to choose the best tool for the job. This material is going to teach you to: - 🛠 Apply strategies to tackle algorithm questions. Never to get stuck again. Ace those interviews! -- ✂️ Construct efficient algorithms. Learn how to break down problems in manageable pieces. -- 🧠 Improve your problem-solving skills and become a stronger developer by understanding fundamental computer science concepts. +- ✂️ Construct efficient algorithms. Learn how to break down problems into manageable pieces. +- 🧠 Improve your problem-solving skills and become a well-rounded developer by understanding fundamental computer science concepts. - 🤓 Cover essential topics, such as big O time, data structures, and must-know algorithms. Implement 10+ data structures from scratch. ## What's Inside All the code and explanations are available on this repo. You can dig through the links and code examples from the ([src folder](src)). However, the inline code examples are not expanded (because of Github's asciidoc limitations), but you can follow the path and see the implementation. -_Note: If you prefer to consume the information more linearly then the [book format](https://books.adrianmejia.com/dsajs-data-structures-algorithms-javascript/) would be more appropriate for you._ +_Note: If you prefer to consume the information more linearly, then the [book format](https://books.adrianmejia.com/dsajs-data-structures-algorithms-javascript/) would be more appropriate for you._ -The topics are divided into four main categories as you can see below: +The topics are divided into four main categories, as you can see below: ### 📈 [Algorithms Analysis](book/part01-algorithms-analysis.asc) @@ -129,8 +129,7 @@ The topics are divided into four main categories as you can see below: #### Comparing algorithms using Big O notation Let's say you want to find the duplicates on an array. -Using Big O notation, we can compare different implementations that do the same but -they take different time to complete. +Using Big O notation, we can compare different solutions that solve the same problem but has a massive difference in how long it takes to do it. - [Optimal solution using a map](book/content/part01/big-o-examples.asc#linear-example) - [Finding duplicates in an array (naïve approach)](book/content/part01/big-o-examples.asc#quadratic-example) @@ -225,7 +224,6 @@ they take different time to complete. Use Arrays when… - You need to access data in random order fast (using an index). - Your data is multi-dimensional (e.g., matrix, tensor). -- when there is a limit on memory as the requirement of memory is less due to actual data being stored within the index in the array. Use Linked Lists when: - You will access your data sequentially. @@ -302,8 +300,7 @@ Know all the graphs properties with many images and illustrations. ![graph example with USA airports](book/images/image46.png) **Graphs**: data **nodes** that can have a connection or **edge** to - zero or more adjacent nodes. Unlike trees, nodes can have multiple - parents, loops. + zero or more adjacent nodes. Unlike trees, nodes can have multiple parents, loops. [Code](src/data-structures/graphs/graph.js) | [Graph Time Complexity](book/content/part03/graph.asc#graph-complexity) @@ -316,7 +313,7 @@ Learn all the different kinds of trees and their properties. - **Trees**: data nodes has zero or more adjacent nodes a.k.a. children. Each node can only have one parent node otherwise is a - graph not a tree. + graph, not a tree. [Code](src/data-structures/trees) | [Docs](book/content/part03/tree-intro.asc) @@ -383,7 +380,7 @@ From unbalanced BST to balanced BST ### ⚒ [Algorithmic Toolbox](book/part04-algorithmic-toolbox.asc) - + @@ -402,9 +399,9 @@ From unbalanced BST to balanced BST 1. Brainstorm solutions (greedy algorithm, Divide and Conquer, Backtracking, brute force) 1. Test your answer on the simple example (mentally) 1. Optimize the solution -1. Write Code, yes, now you can code. +1. Write code. Yes, now you can code. 1. Test your written code -1. Analyse the complexity, both space and time and make sure to optimise further. +1. Analyse the complexity, both space and time, and make sure to optimize further. Full details [here](book/part04-algorithmic-toolbox.asc) @@ -462,8 +459,8 @@ and then discuss efficient sorting algorithms O(n log n) such as: We are going to discuss the following techniques for solving algorithms problems: - [Greedy Algorithms](book/content/part04/greedy-algorithms.asc): makes greedy choices using heuristics to find the best solution without looking back. - [Dynamic Programming](book/content/part04/dynamic-programming.asc): a technique for speeding up recursive algorithms when there are many _overlapping subproblems_. It uses _memoization_ to avoid duplicating work. -- [Divide and Conquer](book/content/part04/divide-and-conquer.asc): _divide_ problems into smaller pieces, _conquer_ each subproblem and then _join_ the results. -- [Backtracking](book/content/part04/backtracking.asc): search _all (or some)_ possible paths. However, it stops and _go back_ as soon as notice the current solution is not working. +- [Divide and Conquer](book/content/part04/divide-and-conquer.asc): _divide_ problems into smaller pieces, _conquer_ each subproblem, and then _join_ the results. +- [Backtracking](book/content/part04/backtracking.asc): search _all (or some)_ possible paths. However, it stops, and _go back_ as soon as notice the current solution is not working. - _Brute Force_: generate all possible solutions and tries all of them. (Use it as a last resort or as the starting point). --- @@ -476,7 +473,7 @@ We are going to discuss the following techniques for solving algorithms problems
    How would I apply these to my day-to-day work? (Click to expand)

    - As a programmer, we have to solve problems every day. If you want to solve problems well, then it's good to know about a broad range of solutions. A lot of times, it's more efficient to learn existing resources than stumble upon the answer yourself. The more tools and practice you have, the better. This book helps you understand the tradeoffs among data structures and reason about algorithms performance. + As a programmer, we have to solve problems every day. If you want to solve problems well, it's good to know about a broad range of solutions. Often, it's more efficient to learn existing resources than stumble upon the answer yourself. The more tools and practice you have, the better. This book helps you understand the tradeoffs among data structures and reason about algorithms performance.

    From cec3b041202372dac71ba385142b743f8adb72a1 Mon Sep 17 00:00:00 2001 From: Adrian Mejia Date: Mon, 17 May 2021 20:24:46 -0400 Subject: [PATCH 23/33] chore(graph): fix typo --- src/data-structures/graphs/graph.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/data-structures/graphs/graph.js b/src/data-structures/graphs/graph.js index 1e01f886..02b8d708 100644 --- a/src/data-structures/graphs/graph.js +++ b/src/data-structures/graphs/graph.js @@ -252,7 +252,7 @@ class Graph { } } -Graph.UNDIRECTED = Symbol('directed graph'); // two-ways edges -Graph.DIRECTED = Symbol('undirected graph'); // one-way edges +Graph.UNDIRECTED = Symbol('undirected graph'); // two-way edges +Graph.DIRECTED = Symbol('directed graph'); // one-way edges module.exports = Graph; From d350da8bd2d7cf5c8f4425e863babf19cbdcbdf4 Mon Sep 17 00:00:00 2001 From: Adrian Mejia Date: Sun, 23 May 2021 20:00:05 -0400 Subject: [PATCH 24/33] fix(bst): on duplicates values the same node is returned Fixes #99 --- src/data-structures/trees/binary-search-tree.js | 11 ++++++----- src/data-structures/trees/binary-search-tree.spec.js | 4 ++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/data-structures/trees/binary-search-tree.js b/src/data-structures/trees/binary-search-tree.js index 5e9ffb86..e7a5cc49 100644 --- a/src/data-structures/trees/binary-search-tree.js +++ b/src/data-structures/trees/binary-search-tree.js @@ -19,23 +19,24 @@ class BinarySearchTree { * @returns {BinaryTreeNode} newly added node */ add(value) { - const newNode = new BinaryTreeNode(value); + let node = new BinaryTreeNode(value); if (this.root) { const { found, parent } = this.findNodeAndParent(value); // <1> if (found) { // duplicated: value already exist on the tree found.meta.multiplicity = (found.meta.multiplicity || 1) + 1; // <2> + node = found; } else if (value < parent.value) { - parent.setLeftAndUpdateParent(newNode); + parent.setLeftAndUpdateParent(node); } else { - parent.setRightAndUpdateParent(newNode); + parent.setRightAndUpdateParent(node); } } else { - this.root = newNode; + this.root = node; } this.size += 1; - return newNode; + return node; } // end::add[] diff --git a/src/data-structures/trees/binary-search-tree.spec.js b/src/data-structures/trees/binary-search-tree.spec.js index 854e31ff..22508eb2 100644 --- a/src/data-structures/trees/binary-search-tree.spec.js +++ b/src/data-structures/trees/binary-search-tree.spec.js @@ -66,7 +66,7 @@ describe('Binary Search Tree', () => { it('should deal with duplicates', () => { const root = bst.add(1); expect(root.meta.multiplicity).toBe(undefined); - bst.add(1); + expect(bst.add(1)).toBe(root); // should return existing expect(bst.size).toBe(2); expect(root.toValues()).toMatchObject({ value: 1, parent: null, left: null, right: null, @@ -262,7 +262,7 @@ describe('Binary Search Tree', () => { }); it('should remove duplicates', () => { - bst.add(40); // add duplicate + expect(bst.add(40)).toBe(n40); // add duplicate expect(n40.meta.multiplicity).toBe(2); expect(bst.remove(40)).toBe(true); From 03bafbb110269511ec357d109177ddb4a158b1d7 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Mon, 24 May 2021 00:05:14 +0000 Subject: [PATCH 25/33] :bookmark: chore(release): 2.7.5 ## [2.7.5](https://github.com/amejiarosario/dsa.js/compare/2.7.4...2.7.5) (2021-05-24) ### Bug Fixes * **bst:** on duplicates values the same node is returned ([d350da8](https://github.com/amejiarosario/dsa.js/commit/d350da8bd2d7cf5c8f4425e863babf19cbdcbdf4)), closes [#99](https://github.com/amejiarosario/dsa.js/issues/99) --- CHANGELOG.md | 7 + package-lock.json | 20541 +++++++++++++++++++++++++++++++++++++++++++- package.json | 2 +- 3 files changed, 20501 insertions(+), 49 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1261c178..f1268e21 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [2.7.5](https://github.com/amejiarosario/dsa.js/compare/2.7.4...2.7.5) (2021-05-24) + + +### Bug Fixes + +* **bst:** on duplicates values the same node is returned ([d350da8](https://github.com/amejiarosario/dsa.js/commit/d350da8bd2d7cf5c8f4425e863babf19cbdcbdf4)), closes [#99](https://github.com/amejiarosario/dsa.js/issues/99) + ## [2.7.4](https://github.com/amejiarosario/dsa.js/compare/2.7.3...2.7.4) (2021-01-09) diff --git a/package-lock.json b/package-lock.json index b3c30b3a..1d1cca05 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,8 +1,20453 @@ { "name": "dsa.js", - "version": "2.7.4", - "lockfileVersion": 1, + "version": "2.7.5", + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "dsa.js", + "version": "2.7.4", + "license": "MIT", + "devDependencies": { + "@semantic-release/changelog": "^5.0.1", + "@semantic-release/git": "^9.0.0", + "benchmark": "2.1.4", + "braces": ">=2.3.1", + "commitizen": "4.1.2", + "conventional-changelog-cli": "2.0.34", + "cz-conventional-changelog": "3.2.0", + "eslint": "7.12.1", + "eslint-config-airbnb-base": "14.1.0", + "eslint-plugin-import": "2.20.2", + "eslint-plugin-jest": "24.1.0", + "handlebars": "4.7.6", + "husky": "4.2.5", + "jest": "26.0.1", + "js-yaml": ">=3.13.1", + "mem": "6.1.0", + "semantic-release": "17.0.7", + "textlint-plugin-asciidoctor": "1.0.3" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.8.3" + } + }, + "node_modules/@babel/core": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.6.tgz", + "integrity": "sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.6", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helpers": "^7.9.6", + "@babel/parser": "^7.9.6", + "@babel/template": "^7.8.6", + "@babel/traverse": "^7.9.6", + "@babel/types": "^7.9.6", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core/node_modules/debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@babel/core/node_modules/json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/core/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.6.tgz", + "integrity": "sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.9.6", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "node_modules/@babel/generator/node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/generator/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", + "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", + "dev": true, + "dependencies": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.9.5" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.8.3" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", + "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.8.3" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", + "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.8.3" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", + "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-simple-access": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/template": "^7.8.6", + "@babel/types": "^7.9.0", + "lodash": "^4.17.13" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", + "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.8.3" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", + "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==", + "dev": true + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.9.6.tgz", + "integrity": "sha512-qX+chbxkbArLyCImk3bWV+jB5gTNU/rsze+JlcF6Nf8tVTigPJSI1o1oBow/9Resa1yehUO9lIipsmu9oG4RzA==", + "dev": true, + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/traverse": "^7.9.6", + "@babel/types": "^7.9.6" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", + "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.8.3" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", + "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==", + "dev": true + }, + "node_modules/@babel/helpers": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.6.tgz", + "integrity": "sha512-tI4bUbldloLcHWoRUMAj4g1bF313M/o6fBKhIsb3QnGVPwRm9JsNf/gqMkQ7zjqReABiffPV6RWj7hEglID5Iw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.9.6", + "@babel/types": "^7.9.6" + } + }, + "node_modules/@babel/highlight": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.9.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/highlight/node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/@babel/parser": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", + "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.8.3.tgz", + "integrity": "sha512-UcAyQWg2bAN647Q+O811tG9MrJ38Z10jjhQdKNAL8fsyPzE3cCN/uT+f55cFVY4aGO4jqJAvmqsuY3GQDwAoXg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.8.3.tgz", + "integrity": "sha512-Zpg2Sgc++37kuFl6ppq2Q7Awc6E6AIW671x5PY8E/f7MCIyPPGK/EoeZXvvY3P42exZ3Q4/t3YOzP/HiN79jDg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz", + "integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.6.tgz", + "integrity": "sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + } + }, + "node_modules/@babel/runtime/node_modules/regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "dev": true + }, + "node_modules/@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "node_modules/@babel/traverse": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.6.tgz", + "integrity": "sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.6", + "@babel/helper-function-name": "^7.9.5", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.9.6", + "@babel/types": "^7.9.6", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "node_modules/@babel/traverse/node_modules/debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", + "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.9.5", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@babel/types/node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@commitlint/execute-rule": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-8.3.4.tgz", + "integrity": "sha512-f4HigYjeIBn9f7OuNv5zh2y5vWaAhNFrfeul8CRJDy82l3Y+09lxOTGxfF3uMXKrZq4LmuK6qvvRCZ8mUrVvzQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@commitlint/load": { + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-8.3.5.tgz", + "integrity": "sha512-poF7R1CtQvIXRmVIe63FjSQmN9KDqjRtU5A6hxqXBga87yB2VUJzic85TV6PcQc+wStk52cjrMI+g0zFx+Zxrw==", + "dev": true, + "optional": true, + "dependencies": { + "@commitlint/execute-rule": "^8.3.4", + "@commitlint/resolve-extends": "^8.3.5", + "babel-runtime": "^6.23.0", + "chalk": "2.4.2", + "cosmiconfig": "^5.2.0", + "lodash": "4.17.15", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@commitlint/resolve-extends": { + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-8.3.5.tgz", + "integrity": "sha512-nHhFAK29qiXNe6oH6uG5wqBnCR+BQnxlBW/q5fjtxIaQALgfoNLHwLS9exzbIRFqwJckpR6yMCfgMbmbAOtklQ==", + "dev": true, + "optional": true, + "dependencies": { + "import-fresh": "^3.0.0", + "lodash": "4.17.15", + "resolve-from": "^5.0.0", + "resolve-global": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.1.tgz", + "integrity": "sha512-XRUeBZ5zBWLYgSANMpThFddrZZkEbGHgUdt5UJjZfnlN9BGCiUBrf+nvbRupSjMvqzwnQN0qwCmOxITt1cfywA==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "node_modules/@eslint/eslintrc/node_modules/lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz", + "integrity": "sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", + "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.0.1.tgz", + "integrity": "sha512-9t1KUe/93coV1rBSxMmBAOIK3/HVpwxArCA1CxskKyRiv6o8J70V8C/V3OJminVCTa2M0hQI9AWRd5wxu2dAHw==", + "dev": true, + "dependencies": { + "@jest/types": "^26.0.1", + "chalk": "^4.0.0", + "jest-message-util": "^26.0.1", + "jest-util": "^26.0.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/console/node_modules/ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@jest/console/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/console/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/console/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console/node_modules/supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.0.1.tgz", + "integrity": "sha512-Xq3eqYnxsG9SjDC+WLeIgf7/8KU6rddBxH+SCt18gEpOhAGYC/Mq+YbtlNcIdwjnnT+wDseXSbU0e5X84Y4jTQ==", + "dev": true, + "dependencies": { + "@jest/console": "^26.0.1", + "@jest/reporters": "^26.0.1", + "@jest/test-result": "^26.0.1", + "@jest/transform": "^26.0.1", + "@jest/types": "^26.0.1", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-changed-files": "^26.0.1", + "jest-config": "^26.0.1", + "jest-haste-map": "^26.0.1", + "jest-message-util": "^26.0.1", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.0.1", + "jest-resolve-dependencies": "^26.0.1", + "jest-runner": "^26.0.1", + "jest-runtime": "^26.0.1", + "jest-snapshot": "^26.0.1", + "jest-util": "^26.0.1", + "jest-validate": "^26.0.1", + "jest-watcher": "^26.0.1", + "micromatch": "^4.0.2", + "p-each-series": "^2.1.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/core/node_modules/ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "dependencies": { + "type-fest": "^0.11.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@jest/core/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/core/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/core/node_modules/graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "node_modules/@jest/core/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/@jest/core/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/environment": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.0.1.tgz", + "integrity": "sha512-xBDxPe8/nx251u0VJ2dFAFz2H23Y98qdIaNwnMK6dFQr05jc+Ne/2np73lOAx+5mSBO/yuQldRrQOf6hP1h92g==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^26.0.1", + "@jest/types": "^26.0.1", + "jest-mock": "^26.0.1" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/fake-timers": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.0.1.tgz", + "integrity": "sha512-Oj/kCBnTKhm7CR+OJSjZty6N1bRDr9pgiYQr4wY221azLz5PHi08x/U+9+QpceAYOWheauLP8MhtSVFrqXQfhg==", + "dev": true, + "dependencies": { + "@jest/types": "^26.0.1", + "@sinonjs/fake-timers": "^6.0.1", + "jest-message-util": "^26.0.1", + "jest-mock": "^26.0.1", + "jest-util": "^26.0.1" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/globals": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.0.1.tgz", + "integrity": "sha512-iuucxOYB7BRCvT+TYBzUqUNuxFX1hqaR6G6IcGgEqkJ5x4htNKo1r7jk1ji9Zj8ZMiMw0oB5NaA7k5Tx6MVssA==", + "dev": true, + "dependencies": { + "@jest/environment": "^26.0.1", + "@jest/types": "^26.0.1", + "expect": "^26.0.1" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/reporters": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.0.1.tgz", + "integrity": "sha512-NWWy9KwRtE1iyG/m7huiFVF9YsYv/e+mbflKRV84WDoJfBqUrNRyDbL/vFxQcYLl8IRqI4P3MgPn386x76Gf2g==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^26.0.1", + "@jest/test-result": "^26.0.1", + "@jest/transform": "^26.0.1", + "@jest/types": "^26.0.1", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^26.0.1", + "jest-resolve": "^26.0.1", + "jest-util": "^26.0.1", + "jest-worker": "^26.0.0", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^4.1.3" + }, + "engines": { + "node": ">= 10.14.2" + }, + "optionalDependencies": { + "node-notifier": "^7.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@jest/reporters/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/reporters/node_modules/debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@jest/reporters/node_modules/graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "node_modules/@jest/reporters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "optional": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/istanbul-lib-source-maps": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/node-notifier": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-7.0.0.tgz", + "integrity": "sha512-y8ThJESxsHcak81PGpzWwQKxzk+5YtP3IxR8AYdpXQ1IB6FmcVzFdZXrkPin49F/DKUCfeeiziB8ptY9npzGuA==", + "dev": true, + "optional": true, + "dependencies": { + "growly": "^1.3.0", + "is-wsl": "^2.1.1", + "semver": "^7.2.1", + "shellwords": "^0.1.1", + "uuid": "^7.0.3", + "which": "^2.0.2" + } + }, + "node_modules/@jest/reporters/node_modules/node-notifier/node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true, + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@jest/reporters/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@jest/reporters/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/string-length": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.1.tgz", + "integrity": "sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@jest/reporters/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/uuid": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", + "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==", + "dev": true, + "optional": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@jest/reporters/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "optional": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@jest/source-map": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.0.0.tgz", + "integrity": "sha512-S2Z+Aj/7KOSU2TfW0dyzBze7xr95bkm5YXNUqqCek+HE0VbNNSNzrRwfIi5lf7wvzDTSS0/ib8XQ1krFNyYgbQ==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/source-map/node_modules/graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "node_modules/@jest/test-result": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.0.1.tgz", + "integrity": "sha512-oKwHvOI73ICSYRPe8WwyYPTtiuOAkLSbY8/MfWF3qDEd/sa8EDyZzin3BaXTqufir/O/Gzea4E8Zl14XU4Mlyg==", + "dev": true, + "dependencies": { + "@jest/console": "^26.0.1", + "@jest/types": "^26.0.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.0.1.tgz", + "integrity": "sha512-ssga8XlwfP8YjbDcmVhwNlrmblddMfgUeAkWIXts1V22equp2GMIHxm7cyeD5Q/B0ZgKPK/tngt45sH99yLLGg==", + "dev": true, + "dependencies": { + "@jest/test-result": "^26.0.1", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.0.1", + "jest-runner": "^26.0.1", + "jest-runtime": "^26.0.1" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/test-sequencer/node_modules/graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "node_modules/@jest/transform": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.0.1.tgz", + "integrity": "sha512-pPRkVkAQ91drKGbzCfDOoHN838+FSbYaEAvBXvKuWeeRRUD8FjwXkqfUNUZL6Ke48aA/1cqq/Ni7kVMCoqagWA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^26.0.1", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.0.1", + "jest-regex-util": "^26.0.0", + "jest-util": "^26.0.1", + "micromatch": "^4.0.2", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/transform/node_modules/ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/babel-plugin-istanbul": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", + "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^4.0.0", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@jest/transform/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/transform/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/transform/node_modules/graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "node_modules/@jest/transform/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@jest/transform/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/@jest/types": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.0.1.tgz", + "integrity": "sha512-IbtjvqI9+eS1qFnOIEL7ggWmT+iK/U+Vde9cGWtYb/b6XgKb3X44ZAe/z9YZzoAAZ/E92m0DqrilF934IGNnQA==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@jest/types/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/types/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", + "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.3", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", + "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.3", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@octokit/auth-token": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.0.tgz", + "integrity": "sha512-eoOVMjILna7FVQf96iWc3+ZtE/ZT6y8ob8ZzcqKY1ibSQCnu4O/B7pJvzMx5cyZ/RjAff6DAdEb0O0Cjcxidkg==", + "dev": true, + "dependencies": { + "@octokit/types": "^2.0.0" + } + }, + "node_modules/@octokit/core": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-2.5.0.tgz", + "integrity": "sha512-uvzmkemQrBgD8xuGbjhxzJN1darJk9L2cS+M99cHrDG2jlSVpxNJVhoV86cXdYBqdHCc9Z995uLCczaaHIYA6Q==", + "dev": true, + "dependencies": { + "@octokit/auth-token": "^2.4.0", + "@octokit/graphql": "^4.3.1", + "@octokit/request": "^5.4.0", + "@octokit/types": "^2.0.0", + "before-after-hook": "^2.1.0", + "universal-user-agent": "^5.0.0" + } + }, + "node_modules/@octokit/endpoint": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.1.tgz", + "integrity": "sha512-pOPHaSz57SFT/m3R5P8MUu4wLPszokn5pXcB/pzavLTQf2jbU+6iayTvzaY6/BiotuRS0qyEUkx3QglT4U958A==", + "dev": true, + "dependencies": { + "@octokit/types": "^2.11.1", + "is-plain-object": "^3.0.0", + "universal-user-agent": "^5.0.0" + } + }, + "node_modules/@octokit/endpoint/node_modules/is-plain-object": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz", + "integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==", + "dev": true, + "dependencies": { + "isobject": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@octokit/endpoint/node_modules/isobject": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", + "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@octokit/graphql": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.4.0.tgz", + "integrity": "sha512-Du3hAaSROQ8EatmYoSAJjzAz3t79t9Opj/WY1zUgxVUGfIKn0AEjg+hlOLscF6fv6i/4y/CeUvsWgIfwMkTccw==", + "dev": true, + "dependencies": { + "@octokit/request": "^5.3.0", + "@octokit/types": "^2.0.0", + "universal-user-agent": "^5.0.0" + } + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.2.0.tgz", + "integrity": "sha512-KoNxC3PLNar8UJwR+1VMQOw2IoOrrFdo5YOiDKnBhpVbKpw+zkBKNMNKwM44UWL25Vkn0Sl3nYIEGKY+gW5ebw==", + "dev": true, + "dependencies": { + "@octokit/types": "^2.12.1" + } + }, + "node_modules/@octokit/plugin-request-log": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.0.tgz", + "integrity": "sha512-ywoxP68aOT3zHCLgWZgwUJatiENeHE7xJzYjfz8WI0goynp96wETBF+d95b8g/uL4QmS6owPVlaxiz3wyMAzcw==", + "dev": true + }, + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-3.11.0.tgz", + "integrity": "sha512-D31cBYhlOt6Om2xNkCNZUjyWdaDKUfa4HwpLwL8Dnu8aDuVuuOPLUhFMUDE0GvfqlNQFrNtU7n5HaZm+KmRdsw==", + "dev": true, + "dependencies": { + "@octokit/types": "^2.16.0", + "deprecation": "^2.3.1" + } + }, + "node_modules/@octokit/request": { + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.4.2.tgz", + "integrity": "sha512-zKdnGuQ2TQ2vFk9VU8awFT4+EYf92Z/v3OlzRaSh4RIP0H6cvW1BFPXq4XYvNez+TPQjqN+0uSkCYnMFFhcFrw==", + "dev": true, + "dependencies": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.0.0", + "@octokit/types": "^2.11.1", + "deprecation": "^2.0.0", + "is-plain-object": "^3.0.0", + "node-fetch": "^2.3.0", + "once": "^1.4.0", + "universal-user-agent": "^5.0.0" + } + }, + "node_modules/@octokit/request-error": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.0.0.tgz", + "integrity": "sha512-rtYicB4Absc60rUv74Rjpzek84UbVHGHJRu4fNVlZ1mCcyUPPuzFfG9Rn6sjHrd95DEsmjSt1Axlc699ZlbDkw==", + "dev": true, + "dependencies": { + "@octokit/types": "^2.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "node_modules/@octokit/request/node_modules/is-plain-object": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz", + "integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==", + "dev": true, + "dependencies": { + "isobject": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@octokit/request/node_modules/isobject": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", + "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@octokit/rest": { + "version": "17.9.0", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-17.9.0.tgz", + "integrity": "sha512-Ff2jwS2OizWVaiCozOJevQ97V+mKjlQAt//lU6a/lhWDfHsZLXm/k1RsyTKVbyuiriDi7pg899wCU59nYfKnmQ==", + "dev": true, + "dependencies": { + "@octokit/core": "^2.4.3", + "@octokit/plugin-paginate-rest": "^2.2.0", + "@octokit/plugin-request-log": "^1.0.0", + "@octokit/plugin-rest-endpoint-methods": "3.11.0" + } + }, + "node_modules/@octokit/types": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", + "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", + "dev": true, + "dependencies": { + "@types/node": ">= 8" + } + }, + "node_modules/@semantic-release/changelog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-5.0.1.tgz", + "integrity": "sha512-unvqHo5jk4dvAf2nZ3aw4imrlwQ2I50eVVvq9D47Qc3R+keNqepx1vDYwkjF8guFXnOYaYcR28yrZWno1hFbiw==", + "dev": true, + "dependencies": { + "@semantic-release/error": "^2.1.0", + "aggregate-error": "^3.0.0", + "fs-extra": "^9.0.0", + "lodash": "^4.17.4" + }, + "engines": { + "node": ">=10.18" + } + }, + "node_modules/@semantic-release/changelog/node_modules/fs-extra": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", + "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@semantic-release/changelog/node_modules/jsonfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", + "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.6", + "universalify": "^1.0.0" + } + }, + "node_modules/@semantic-release/changelog/node_modules/universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@semantic-release/commit-analyzer": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-8.0.1.tgz", + "integrity": "sha512-5bJma/oB7B4MtwUkZC2Bf7O1MHfi4gWe4mA+MIQ3lsEV0b422Bvl1z5HRpplDnMLHH3EXMoRdEng6Ds5wUqA3A==", + "dev": true, + "dependencies": { + "conventional-changelog-angular": "^5.0.0", + "conventional-commits-filter": "^2.0.0", + "conventional-commits-parser": "^3.0.7", + "debug": "^4.0.0", + "import-from": "^3.0.0", + "lodash": "^4.17.4", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=10.18" + } + }, + "node_modules/@semantic-release/commit-analyzer/node_modules/debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@semantic-release/commit-analyzer/node_modules/micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@semantic-release/error": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-2.2.0.tgz", + "integrity": "sha512-9Tj/qn+y2j+sjCI3Jd+qseGtHjOAeg7dU2/lVcqIQ9TV3QDaDXDYXcoOHU+7o2Hwh8L8ymL4gfuO7KxDs3q2zg==", + "dev": true + }, + "node_modules/@semantic-release/git": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/git/-/git-9.0.0.tgz", + "integrity": "sha512-AZ4Zha5NAPAciIJH3ipzw/WU9qLAn8ENaoVAhD6srRPxTpTzuV3NhNh14rcAo8Paj9dO+5u4rTKcpetOBluYVw==", + "dev": true, + "dependencies": { + "@semantic-release/error": "^2.1.0", + "aggregate-error": "^3.0.0", + "debug": "^4.0.0", + "dir-glob": "^3.0.0", + "execa": "^4.0.0", + "lodash": "^4.17.4", + "micromatch": "^4.0.0", + "p-reduce": "^2.0.0" + }, + "engines": { + "node": ">=10.18" + } + }, + "node_modules/@semantic-release/git/node_modules/cross-spawn": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", + "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@semantic-release/git/node_modules/debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@semantic-release/git/node_modules/execa": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.0.0.tgz", + "integrity": "sha512-JbDUxwV3BoT5ZVXQrSVbAiaXhXUkIwvbhPIwZ0N13kX+5yCzOhUNdocxB/UQRuYOHRYYwAxKYwJYc0T4D12pDA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@semantic-release/git/node_modules/get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@semantic-release/git/node_modules/is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@semantic-release/git/node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/@semantic-release/git/node_modules/micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@semantic-release/git/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@semantic-release/git/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@semantic-release/git/node_modules/onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@semantic-release/git/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@semantic-release/git/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@semantic-release/git/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@semantic-release/git/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@semantic-release/github": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-7.0.6.tgz", + "integrity": "sha512-70fUj+t98AWRgeOG0j2kdguvaVyysOZRUmXykZBwkktSDm1UZ6YfelYFPuM9OJbKPuNjKsCsRXl5/wukDUg8PA==", + "dev": true, + "dependencies": { + "@octokit/rest": "^17.0.0", + "@semantic-release/error": "^2.2.0", + "aggregate-error": "^3.0.0", + "bottleneck": "^2.18.1", + "debug": "^4.0.0", + "dir-glob": "^3.0.0", + "fs-extra": "^9.0.0", + "globby": "^11.0.0", + "http-proxy-agent": "^4.0.0", + "https-proxy-agent": "^5.0.0", + "issue-parser": "^6.0.0", + "lodash": "^4.17.4", + "mime": "^2.4.3", + "p-filter": "^2.0.0", + "p-retry": "^4.0.0", + "url-join": "^4.0.0" + }, + "engines": { + "node": ">=10.18" + } + }, + "node_modules/@semantic-release/github/node_modules/debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@semantic-release/github/node_modules/fs-extra": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", + "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@semantic-release/github/node_modules/jsonfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", + "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.6", + "universalify": "^1.0.0" + } + }, + "node_modules/@semantic-release/github/node_modules/universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@semantic-release/npm": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-7.0.5.tgz", + "integrity": "sha512-D+oEmsx9aHE1q806NFQwSC9KdBO8ri/VO99eEz0wWbX2jyLqVyWr7t0IjKC8aSnkkQswg/4KN/ZjfF6iz1XOpw==", + "dev": true, + "dependencies": { + "@semantic-release/error": "^2.2.0", + "aggregate-error": "^3.0.0", + "execa": "^4.0.0", + "fs-extra": "^9.0.0", + "lodash": "^4.17.15", + "nerf-dart": "^1.0.0", + "normalize-url": "^5.0.0", + "npm": "^6.10.3", + "rc": "^1.2.8", + "read-pkg": "^5.0.0", + "registry-auth-token": "^4.0.0", + "semver": "^7.1.2", + "tempy": "^0.5.0" + }, + "engines": { + "node": ">=10.18" + } + }, + "node_modules/@semantic-release/npm/node_modules/cross-spawn": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", + "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@semantic-release/npm/node_modules/execa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.0.1.tgz", + "integrity": "sha512-SCjM/zlBdOK8Q5TIjOn6iEHZaPHFsMoTxXQ2nvUvtPnuohz3H2dIozSg+etNR98dGoYUp2ENSKLL/XaMmbxVgw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@semantic-release/npm/node_modules/fs-extra": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", + "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@semantic-release/npm/node_modules/get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@semantic-release/npm/node_modules/is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@semantic-release/npm/node_modules/jsonfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", + "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.6", + "universalify": "^1.0.0" + } + }, + "node_modules/@semantic-release/npm/node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/@semantic-release/npm/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@semantic-release/npm/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@semantic-release/npm/node_modules/onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@semantic-release/npm/node_modules/parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@semantic-release/npm/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@semantic-release/npm/node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@semantic-release/npm/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@semantic-release/npm/node_modules/universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@semantic-release/npm/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@semantic-release/release-notes-generator": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-9.0.1.tgz", + "integrity": "sha512-bOoTiH6SiiR0x2uywSNR7uZcRDl22IpZhj+Q5Bn0v+98MFtOMhCxFhbrKQjhbYoZw7vps1mvMRmFkp/g6R9cvQ==", + "dev": true, + "dependencies": { + "conventional-changelog-angular": "^5.0.0", + "conventional-changelog-writer": "^4.0.0", + "conventional-commits-filter": "^2.0.0", + "conventional-commits-parser": "^3.0.0", + "debug": "^4.0.0", + "get-stream": "^5.0.0", + "import-from": "^3.0.0", + "into-stream": "^5.0.0", + "lodash": "^4.17.4", + "read-pkg-up": "^7.0.0" + }, + "engines": { + "node": ">=10.18" + } + }, + "node_modules/@semantic-release/release-notes-generator/node_modules/debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@semantic-release/release-notes-generator/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@semantic-release/release-notes-generator/node_modules/get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@semantic-release/release-notes-generator/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@semantic-release/release-notes-generator/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@semantic-release/release-notes-generator/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@semantic-release/release-notes-generator/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@semantic-release/release-notes-generator/node_modules/parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@semantic-release/release-notes-generator/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@semantic-release/release-notes-generator/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@semantic-release/release-notes-generator/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@semantic-release/release-notes-generator/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@semantic-release/release-notes-generator/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sinonjs/commons": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.7.2.tgz", + "integrity": "sha512-+DUO6pnp3udV/v2VfUWgaY5BIE1IfT7lLfeDzPVeMT1XKkaAp9LgSI9x5RtrFQoZ9Oi0PgXQQHPaoKu7dCjVxw==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", + "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@types/babel__core": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.7.tgz", + "integrity": "sha512-RL62NqSFPCDK2FM1pSDH0scHpJvsXtZNiYlMB73DgPBaG1E38ZYVL+ei5EkWRbr+KC4YNiAUNBnRj+bgwpgjMw==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.1.tgz", + "integrity": "sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz", + "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.11.tgz", + "integrity": "sha512-ddHK5icION5U6q11+tV2f9Mo6CZVuT8GJKld2q9LqHSZbvLbH34Kcu2yFGckZut453+eQU6btIA3RihmnRgI+Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.3.0" + } + }, + "node_modules/@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.3.tgz", + "integrity": "sha512-AiHRaEB50LQg0pZmm659vNBb9f4SJ0qrAnteuzhSeAUcJKxoYgEnprg/83kppCnc2zvtCKbdZry1a5pVY3lOTQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.2.tgz", + "integrity": "sha512-rsZg7eL+Xcxsxk2XlBt9KcG8nOp9iYdKCOikY9x2RFJCyOdNj4MKPQty0e8oZr29vVAzKXr1BmR+kZauti3o1w==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", + "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==", + "dev": true + }, + "node_modules/@types/minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=", + "dev": true + }, + "node_modules/@types/node": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.1.tgz", + "integrity": "sha512-FAYBGwC+W6F9+huFIDtn43cpy7+SzG+atzRiTfdp3inUKL2hXnd4rG8hylJLIh4+hqrQy1P17kvJByE/z825hA==", + "dev": true + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "node_modules/@types/prettier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.0.0.tgz", + "integrity": "sha512-/rM+sWiuOZ5dvuVzV37sUuklsbg+JPOP8d+nNFlo2ZtfpzPiPvh1/gc8liWOLBqe+sR+ZM7guPaIcTt6UZTo7Q==", + "dev": true + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "node_modules/@types/stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", + "dev": true + }, + "node_modules/@types/yargs": { + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.5.tgz", + "integrity": "sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", + "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==", + "dev": true + }, + "node_modules/@typescript-eslint/experimental-utils": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.6.0.tgz", + "integrity": "sha512-pnh6Beh2/4xjJVNL+keP49DFHk3orDHHFylSp3WEjtgW3y1U+6l+jNnJrGlbs6qhAz5z96aFmmbUyKhunXKvKw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/scope-manager": "4.6.0", + "@typescript-eslint/types": "4.6.0", + "@typescript-eslint/typescript-estree": "4.6.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.6.0.tgz", + "integrity": "sha512-uZx5KvStXP/lwrMrfQQwDNvh2ppiXzz5TmyTVHb+5TfZ3sUP7U1onlz3pjoWrK9konRyFe1czyxObWTly27Ang==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.6.0", + "@typescript-eslint/visitor-keys": "4.6.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.6.0.tgz", + "integrity": "sha512-5FAgjqH68SfFG4UTtIFv+rqYJg0nLjfkjD0iv+5O27a0xEeNZ5rZNDvFGZDizlCD1Ifj7MAbSW2DPMrf0E9zjA==", + "dev": true, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.6.0.tgz", + "integrity": "sha512-s4Z9qubMrAo/tw0CbN0IN4AtfwuehGXVZM0CHNMdfYMGBDhPdwTEpBrecwhP7dRJu6d9tT9ECYNaWDHvlFSngA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.6.0", + "@typescript-eslint/visitor-keys": "4.6.0", + "debug": "^4.1.1", + "globby": "^11.0.1", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/globby": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", + "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.6.0.tgz", + "integrity": "sha512-38Aa9Ztl0XyFPVzmutHXqDMCu15Xx8yKvUo38Gu3GhsuckCh3StPI5t2WIO9LHEsOH7MLmlGfKUisU8eW1Sjhg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.6.0", + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/abab": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz", + "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==", + "dev": true + }, + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz", + "integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true + }, + "node_modules/acorn-walk": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.1.1.tgz", + "integrity": "sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/add-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", + "integrity": "sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=", + "dev": true + }, + "node_modules/agent-base": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.0.tgz", + "integrity": "sha512-j1Q7cSCqN+AwrmDd+pzgqc0/NpC655x2bUf5ZjRIO77DcNBFmh+OgRNzF6OKdCC9RSCb19fGd99+bhXFdkRNqw==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agent-base/node_modules/debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/aggregate-error": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", + "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/aggregate-error/node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ansi-styles/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/ansicolors": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", + "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=", + "dev": true + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/argv-formatter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz", + "integrity": "sha1-oMoMvCmltz6Dbuvhy/bF4OTrgvk=", + "dev": true + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", + "dev": true + }, + "node_modules/array-includes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-includes/node_modules/es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "dev": true, + "dependencies": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-includes/node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-includes/node_modules/has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-includes/node_modules/is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-includes/node_modules/is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-includes/node_modules/object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "node_modules/array-includes/node_modules/string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-includes/node_modules/string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", + "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array.prototype.flat/node_modules/es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "dev": true, + "dependencies": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array.prototype.flat/node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array.prototype.flat/node_modules/has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array.prototype.flat/node_modules/is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array.prototype.flat/node_modules/is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array.prototype.flat/node_modules/object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "node_modules/array.prototype.flat/node_modules/string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array.prototype.flat/node_modules/string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/asciidoctor.js": { + "version": "1.5.9", + "resolved": "https://registry.npmjs.org/asciidoctor.js/-/asciidoctor.js-1.5.9.tgz", + "integrity": "sha512-k5JgwyV82TsiCpnYbDPReuHhzf/vRUt6NaZ+OGywkDDGeGG/CPfvN2Gd1MJ0iIZKDyuk4iJHOdY/2x1KBrWMzA==", + "dev": true, + "dependencies": { + "opal-runtime": "1.0.11" + }, + "engines": { + "node": ">=8.11", + "npm": ">=5.0.0", + "yarn": ">=1.1.0" + } + }, + "node_modules/asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", + "dev": true + }, + "node_modules/babel-jest": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.0.1.tgz", + "integrity": "sha512-Z4GGmSNQ8pX3WS1O+6v3fo41YItJJZsVxG5gIQ+HuB/iuAQBJxMTHTwz292vuYws1LnHfwSRgoqI+nxdy/pcvw==", + "dev": true, + "dependencies": { + "@jest/transform": "^26.0.1", + "@jest/types": "^26.0.1", + "@types/babel__core": "^7.1.7", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^26.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/babel-plugin-istanbul": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", + "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^4.0.0", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/babel-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/babel-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/babel-jest/node_modules/graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "node_modules/babel-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-jest/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.0.0.tgz", + "integrity": "sha512-+AuoehOrjt9irZL7DOt2+4ZaTM6dlu1s5TTS46JBa0/qem4dy7VNW3tMb96qeEqcIh20LD73TVNtmVEeymTG7w==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.2.tgz", + "integrity": "sha512-u/8cS+dEiK1SFILbOC8/rUI3ml9lboKuuMvZ/4aQnQmhecQAgPw5ew066C1ObnEAUmlx7dv/s2z52psWEtLNiw==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "node_modules/babel-preset-jest": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.0.0.tgz", + "integrity": "sha512-9ce+DatAa31DpR4Uir8g4Ahxs5K4W4L8refzt+qHWQANb6LhGcAEfIFgLUwk67oya2cCUd6t4eUMtO/z64ocNw==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^26.0.0", + "babel-preset-current-node-syntax": "^0.1.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "optional": true, + "dependencies": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/before-after-hook": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.1.0.tgz", + "integrity": "sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A==", + "dev": true + }, + "node_modules/benchmark": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-2.1.4.tgz", + "integrity": "sha1-CfPeMckWQl1JjMLuVloOvzwqVik=", + "dev": true, + "dependencies": { + "lodash": "^4.17.4", + "platform": "^1.3.3" + } + }, + "node_modules/bottleneck": { + "version": "2.19.5", + "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", + "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cache-base/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cachedir": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.2.0.tgz", + "integrity": "sha512-VvxA0xhNqIIfg0V9AmJkDg91DaJwryutH5rVEZAhcNi4iJFj9f+QxmAjgK1LT9I8OgToX27fypX6/MeCXVbBjQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "optional": true, + "dependencies": { + "callsites": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-callsite/node_modules/callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true, + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "optional": true, + "dependencies": { + "caller-callsite": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.0.0.tgz", + "integrity": "sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/camelcase-keys/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cardinal": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", + "integrity": "sha1-fMEFXYItISlU0HsIXeolHMe8VQU=", + "dev": true, + "dependencies": { + "ansicolors": "~0.3.2", + "redeyed": "~2.1.0" + }, + "bin": { + "cdl": "bin/cdl.js" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-table": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", + "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", + "dev": true, + "dependencies": { + "colors": "1.0.3" + }, + "engines": { + "node": ">= 0.2.0" + } + }, + "node_modules/cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "optional": true + }, + "node_modules/commitizen": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/commitizen/-/commitizen-4.1.2.tgz", + "integrity": "sha512-LBxTQKHbVgroMz9ohpm86N+GfJobonGyvDc3zBGdZazbwCLz2tqLa48Rf2TnAdKx7/06W1i1R3SXUt5QW97qVQ==", + "dev": true, + "dependencies": { + "cachedir": "2.2.0", + "cz-conventional-changelog": "3.2.0", + "dedent": "0.7.0", + "detect-indent": "6.0.0", + "find-node-modules": "2.0.0", + "find-root": "1.1.0", + "fs-extra": "8.1.0", + "glob": "7.1.4", + "inquirer": "6.5.0", + "is-utf8": "^0.2.1", + "lodash": "4.17.15", + "minimist": "1.2.5", + "strip-bom": "4.0.0", + "strip-json-comments": "3.0.1" + }, + "bin": { + "commitizen": "bin/commitizen", + "git-cz": "bin/git-cz" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/commitizen/node_modules/detect-indent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz", + "integrity": "sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/commitizen/node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/compare-func": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.4.tgz", + "integrity": "sha512-sq2sWtrqKPkEXAC8tEJA1+BqAH9GbFkGBtUOqrUX57VSfwp8xyktctk+uLoRy5eccTdxzDcVIztlYDpKs3Jv1Q==", + "dev": true, + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^3.0.0" + } + }, + "node_modules/compare-versions": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", + "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", + "dev": true + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/confusing-browser-globals": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz", + "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==", + "dev": true + }, + "node_modules/contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/conventional-changelog": { + "version": "3.1.21", + "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.21.tgz", + "integrity": "sha512-ZGecVZPEo3aC75VVE4nu85589dDhpMyqfqgUM5Myq6wfKWiNqhDJLSDMsc8qKXshZoY7dqs1hR0H/15kI/G2jQ==", + "dev": true, + "dependencies": { + "conventional-changelog-angular": "^5.0.10", + "conventional-changelog-atom": "^2.0.7", + "conventional-changelog-codemirror": "^2.0.7", + "conventional-changelog-conventionalcommits": "^4.3.0", + "conventional-changelog-core": "^4.1.7", + "conventional-changelog-ember": "^2.0.8", + "conventional-changelog-eslint": "^3.0.8", + "conventional-changelog-express": "^2.0.5", + "conventional-changelog-jquery": "^3.0.10", + "conventional-changelog-jshint": "^2.0.7", + "conventional-changelog-preset-loader": "^2.3.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-angular": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.10.tgz", + "integrity": "sha512-k7RPPRs0vp8+BtPsM9uDxRl6KcgqtCJmzRD1wRtgqmhQ96g8ifBGo9O/TZBG23jqlXS/rg8BKRDELxfnQQGiaA==", + "dev": true, + "dependencies": { + "compare-func": "^1.3.1", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-atom": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.7.tgz", + "integrity": "sha512-7dOREZwzB+tCEMjRTDfen0OHwd7vPUdmU0llTy1eloZgtOP4iSLVzYIQqfmdRZEty+3w5Jz+AbhfTJKoKw1JeQ==", + "dev": true, + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-cli": { + "version": "2.0.34", + "resolved": "https://registry.npmjs.org/conventional-changelog-cli/-/conventional-changelog-cli-2.0.34.tgz", + "integrity": "sha512-HDDIhhpsMKiiAfH/mbj7wApgN7uA33Nk4hISY3/7ijlfqXc/bmP3v4o3Yialoxz0iTBibc94xi6kfTH7XIvwDw==", + "dev": true, + "dependencies": { + "add-stream": "^1.0.0", + "conventional-changelog": "^3.1.21", + "lodash": "^4.17.15", + "meow": "^7.0.0", + "tempfile": "^3.0.0" + }, + "bin": { + "conventional-changelog": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-codemirror": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.7.tgz", + "integrity": "sha512-Oralk1kiagn3Gb5cR5BffenWjVu59t/viE6UMD/mQa1hISMPkMYhJIqX+CMeA1zXgVBO+YHQhhokEj99GP5xcg==", + "dev": true, + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-conventionalcommits": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.3.0.tgz", + "integrity": "sha512-oYHydvZKU+bS8LnGqTMlNrrd7769EsuEHKy4fh1oMdvvDi7fem8U+nvfresJ1IDB8K00Mn4LpiA/lR+7Gs6rgg==", + "dev": true, + "dependencies": { + "compare-func": "^1.3.1", + "lodash": "^4.17.15", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-core": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.1.7.tgz", + "integrity": "sha512-UBvSrQR2RdKbSQKh7RhueiiY4ZAIOW3+CSWdtKOwRv+KxIMNFKm1rOcGBFx0eA8AKhGkkmmacoTWJTqyz7Q0VA==", + "dev": true, + "dependencies": { + "add-stream": "^1.0.0", + "conventional-changelog-writer": "^4.0.16", + "conventional-commits-parser": "^3.1.0", + "dateformat": "^3.0.0", + "get-pkg-repo": "^1.0.0", + "git-raw-commits": "2.0.0", + "git-remote-origin-url": "^2.0.0", + "git-semver-tags": "^4.0.0", + "lodash": "^4.17.15", + "normalize-package-data": "^2.3.5", + "q": "^1.5.1", + "read-pkg": "^3.0.0", + "read-pkg-up": "^3.0.0", + "shelljs": "^0.8.3", + "through2": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-core/node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/conventional-changelog-core/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/conventional-changelog-core/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/conventional-changelog-core/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/conventional-changelog-core/node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/conventional-changelog-core/node_modules/read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/conventional-changelog-ember": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.8.tgz", + "integrity": "sha512-JEMEcUAMg4Q9yxD341OgWlESQ4gLqMWMXIWWUqoQU8yvTJlKnrvcui3wk9JvnZQyONwM2g1MKRZuAjKxr8hAXA==", + "dev": true, + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-eslint": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.8.tgz", + "integrity": "sha512-5rTRltgWG7TpU1PqgKHMA/2ivjhrB+E+S7OCTvj0zM/QGg4vmnVH67Vq/EzvSNYtejhWC+OwzvDrLk3tqPry8A==", + "dev": true, + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-express": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-2.0.5.tgz", + "integrity": "sha512-pW2hsjKG+xNx/Qjof8wYlAX/P61hT5gQ/2rZ2NsTpG+PgV7Rc8RCfITvC/zN9K8fj0QmV6dWmUefCteD9baEAw==", + "dev": true, + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-jquery": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.10.tgz", + "integrity": "sha512-QCW6wF8QgPkq2ruPaxc83jZxoWQxLkt/pNxIDn/oYjMiVgrtqNdd7lWe3vsl0hw5ENHNf/ejXuzDHk6suKsRpg==", + "dev": true, + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-jshint": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.7.tgz", + "integrity": "sha512-qHA8rmwUnLiIxANJbz650+NVzqDIwNtc0TcpIa0+uekbmKHttidvQ1dGximU3vEDdoJVKFgR3TXFqYuZmYy9ZQ==", + "dev": true, + "dependencies": { + "compare-func": "^1.3.1", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-preset-loader": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", + "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer": { + "version": "4.0.16", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.0.16.tgz", + "integrity": "sha512-jmU1sDJDZpm/dkuFxBeRXvyNcJQeKhGtVcFFkwTphUAzyYWcwz2j36Wcv+Mv2hU3tpvLMkysOPXJTLO55AUrYQ==", + "dev": true, + "dependencies": { + "compare-func": "^1.3.1", + "conventional-commits-filter": "^2.0.6", + "dateformat": "^3.0.0", + "handlebars": "^4.7.6", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.15", + "meow": "^7.0.0", + "semver": "^6.0.0", + "split": "^1.0.0", + "through2": "^3.0.0" + }, + "bin": { + "conventional-changelog-writer": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/conventional-commit-types": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/conventional-commit-types/-/conventional-commit-types-3.0.0.tgz", + "integrity": "sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg==", + "dev": true + }, + "node_modules/conventional-commits-filter": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.6.tgz", + "integrity": "sha512-4g+sw8+KA50/Qwzfr0hL5k5NWxqtrOVw4DDk3/h6L85a9Gz0/Eqp3oP+CWCNfesBvZZZEFHF7OTEbRe+yYSyKw==", + "dev": true, + "dependencies": { + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-commits-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.1.0.tgz", + "integrity": "sha512-RSo5S0WIwXZiRxUGTPuYFbqvrR4vpJ1BDdTlthFgvHt5kEdnd1+pdvwWphWn57/oIl4V72NMmOocFqqJ8mFFhA==", + "dev": true, + "dependencies": { + "is-text-path": "^1.0.1", + "JSONStream": "^1.0.4", + "lodash": "^4.17.15", + "meow": "^7.0.0", + "split2": "^2.0.0", + "through2": "^3.0.0", + "trim-off-newlines": "^1.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/convert-source-map/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/core-js": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", + "dev": true, + "optional": true + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "node_modules/cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "optional": true, + "dependencies": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cosmiconfig/node_modules/import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "optional": true, + "dependencies": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cosmiconfig/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "optional": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cosmiconfig/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true, + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "dependencies": { + "array-find-index": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cz-conventional-changelog": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-3.2.0.tgz", + "integrity": "sha512-yAYxeGpVi27hqIilG1nh4A9Bnx4J3Ov+eXy4koL3drrR+IO9GaWPsKjik20ht608Asqi8TQPf0mczhEeyAtMzg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "commitizen": "^4.0.3", + "conventional-commit-types": "^3.0.0", + "lodash.map": "^4.5.1", + "longest": "^2.0.1", + "word-wrap": "^1.0.3" + }, + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@commitlint/load": ">6.1.1" + } + }, + "node_modules/dargs": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz", + "integrity": "sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc=", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/data-urls/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/data-urls/node_modules/whatwg-url": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.1.0.tgz", + "integrity": "sha512-vEIkwNi9Hqt4TV9RdnaBPNt+E2Sgmo3gePebCRgZ1R7g6d23+53zCTnuB0amKI4AXq6VM8jj2DUAa0S1vjJxkw==", + "dev": true, + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^2.0.2", + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/debug": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decimal.js": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.0.tgz", + "integrity": "sha512-vDPw+rDgn3bZe1+F/pyEwb1oMG2XTlRVgAa6B4KccTEpYgF8w6eQllVbQcfIJnZyvzFtFpxnpGtx8dd7DJp/Rw==", + "dev": true + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true + }, + "node_modules/detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/diff-sequences": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.0.0.tgz", + "integrity": "sha512-JC/eHYEC3aSS0vZGjuoc4vHA0yAQTzhQQldXMeMF+JlxLGJlCO38Gma82NV9gk1jGFz8mDzUMeaKXvjRRdJ2dg==", + "dev": true, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dir-glob/node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, + "dependencies": { + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/dot-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", + "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", + "dev": true, + "dependencies": { + "is-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/duplexer2/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/duplexer2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/duplexer2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/env-ci": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-5.0.2.tgz", + "integrity": "sha512-Xc41mKvjouTXD3Oy9AqySz1IeyvJvHZ20Twf5ZLYbNpPPIuCnL/qHCmNlD01LoNy0JTunw9HPYVptD19Ac7Mbw==", + "dev": true, + "dependencies": { + "execa": "^4.0.0", + "java-properties": "^1.0.0" + }, + "engines": { + "node": ">=10.13" + } + }, + "node_modules/env-ci/node_modules/cross-spawn": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", + "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/env-ci/node_modules/execa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.0.1.tgz", + "integrity": "sha512-SCjM/zlBdOK8Q5TIjOn6iEHZaPHFsMoTxXQ2nvUvtPnuohz3H2dIozSg+etNR98dGoYUp2ENSKLL/XaMmbxVgw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/env-ci/node_modules/get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/env-ci/node_modules/is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/env-ci/node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/env-ci/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/env-ci/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/env-ci/node_modules/onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/env-ci/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "dev": true, + "dependencies": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-abstract/node_modules/has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz", + "integrity": "sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/escodegen/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.12.1.tgz", + "integrity": "sha512-HlMTEdr/LicJfN08LB3nM1rRYliDXOmfoO4vj39xN6BLpFzF00hbwBoqHk8UcJ2M/3nlARZWy/mslvGEuZFvsg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@eslint/eslintrc": "^0.2.1", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.0", + "esquery": "^1.2.0", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/eslint-config-airbnb-base": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.1.0.tgz", + "integrity": "sha512-+XCcfGyCnbzOnktDVhwsCAx+9DmrzEmuwxyHUJpw+kqBVT744OUBrB09khgFKlK1lshVww6qXGsYPZpavoNjJw==", + "dev": true, + "dependencies": { + "confusing-browser-globals": "^1.0.9", + "object.assign": "^4.1.0", + "object.entries": "^1.1.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz", + "integrity": "sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg==", + "dev": true, + "dependencies": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/eslint-import-resolver-node/node_modules/resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", + "dev": true, + "dependencies": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/eslint-module-utils/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/eslint-plugin-import": { + "version": "2.20.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.2.tgz", + "integrity": "sha512-FObidqpXrR8OnCh4iNsxy+WACztJLXAHBO5hK79T1Hc77PgQZkyDGA5Ag9xAvRpglvLNxhH/zSmZ70/pZ31dHg==", + "dev": true, + "dependencies": { + "array-includes": "^3.0.3", + "array.prototype.flat": "^1.2.1", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.2", + "eslint-module-utils": "^2.4.1", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.0", + "read-pkg-up": "^2.0.0", + "resolve": "^1.12.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "dependencies": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/eslint-plugin-jest": { + "version": "24.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-24.1.0.tgz", + "integrity": "sha512-827YJ+E8B9PvXu/0eiVSNFfxxndbKv+qE/3GSMhdorCaeaOehtqHGX2YDW9B85TEOre9n/zscledkFW/KbnyGg==", + "dev": true, + "dependencies": { + "@typescript-eslint/experimental-utils": "^4.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-scope": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", + "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz", + "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + }, + "node_modules/eslint/node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz", + "integrity": "sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==", + "dev": true, + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "dependencies": { + "estraverse": "^4.1.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/execa/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/execa/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/execa/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expect": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-26.0.1.tgz", + "integrity": "sha512-QcCy4nygHeqmbw564YxNbHTJlXh47dVID2BUP52cZFpLU9zHViMFK6h07cC1wf7GYCTIigTdAXhVua8Yl1FkKg==", + "dev": true, + "dependencies": { + "@jest/types": "^26.0.1", + "ansi-styles": "^4.0.0", + "jest-get-type": "^26.0.0", + "jest-matcher-utils": "^26.0.1", + "jest-message-util": "^26.0.1", + "jest-regex-util": "^26.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/expect/node_modules/ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/expect/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/expect/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/expect/node_modules/jest-get-type": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.0.0.tgz", + "integrity": "sha512-zRc1OAPnnws1EVfykXOj19zo2EMw5Hi6HLbFCSjpuJiXtOWAYIjNsHVSbpQ8bDX7L5BGYGI8m+HmKdjHYFF0kg==", + "dev": true, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extend-shallow/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true, + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.2.tgz", + "integrity": "sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-glob/node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-glob/node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-glob/node_modules/micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/fastq": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz", + "integrity": "sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "dependencies": { + "flat-cache": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-node-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-node-modules/-/find-node-modules-2.0.0.tgz", + "integrity": "sha512-8MWIBRgJi/WpjjfVXumjPKCtmQ10B+fjx6zmSA+770GMJirLhWIzg8l763rhjl9xaeaHbnxPNRQKq2mgMhr+aw==", + "dev": true, + "dependencies": { + "findup-sync": "^3.0.0", + "merge": "^1.2.1" + } + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "dev": true + }, + "node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/find-versions": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.2.0.tgz", + "integrity": "sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==", + "dev": true, + "dependencies": { + "semver-regex": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "dev": true, + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/findup-sync/node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/findup-sync/node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/expand-brackets/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/findup-sync/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "dependencies": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "node_modules/from2/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/from2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/from2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "node_modules/gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-pkg-repo": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz", + "integrity": "sha1-xztInAbYDMVTbCyFP54FIyBWly0=", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "meow": "^3.3.0", + "normalize-package-data": "^2.3.0", + "parse-github-repo-url": "^1.3.0", + "through2": "^2.0.0" + }, + "bin": { + "get-pkg-repo": "cli.js" + } + }, + "node_modules/get-pkg-repo/node_modules/camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-pkg-repo/node_modules/camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "dependencies": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-pkg-repo/node_modules/find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "dependencies": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-pkg-repo/node_modules/indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "dependencies": { + "repeating": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-pkg-repo/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-pkg-repo/node_modules/meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "dependencies": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-pkg-repo/node_modules/path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "dependencies": { + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-pkg-repo/node_modules/read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "dependencies": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-pkg-repo/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/get-pkg-repo/node_modules/redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "dependencies": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-pkg-repo/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/get-pkg-repo/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/get-pkg-repo/node_modules/strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "dependencies": { + "get-stdin": "^4.0.1" + }, + "bin": { + "strip-indent": "cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-pkg-repo/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/get-pkg-repo/node_modules/trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/git-log-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.0.tgz", + "integrity": "sha1-LmpMGxP8AAKCB7p5WnrDFme5/Uo=", + "dev": true, + "dependencies": { + "argv-formatter": "~1.0.0", + "spawn-error-forwarder": "~1.0.0", + "split2": "~1.0.0", + "stream-combiner2": "~1.1.1", + "through2": "~2.0.0", + "traverse": "~0.6.6" + } + }, + "node_modules/git-log-parser/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/git-log-parser/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/git-log-parser/node_modules/split2": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", + "integrity": "sha1-UuLiIdiMdfmnP5BVbiY/+WdysxQ=", + "dev": true, + "dependencies": { + "through2": "~2.0.0" + } + }, + "node_modules/git-log-parser/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/git-log-parser/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/git-raw-commits": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.0.tgz", + "integrity": "sha512-w4jFEJFgKXMQJ0H0ikBk2S+4KP2VEjhCvLCNqbNRQC8BgGWgLKNCO7a9K9LI+TVT7Gfoloje502sEnctibffgg==", + "dev": true, + "dependencies": { + "dargs": "^4.0.1", + "lodash.template": "^4.0.2", + "meow": "^4.0.0", + "split2": "^2.0.0", + "through2": "^2.0.0" + }, + "bin": { + "git-raw-commits": "cli.js" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/git-raw-commits/node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/git-raw-commits/node_modules/camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/git-raw-commits/node_modules/camelcase-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "dev": true, + "dependencies": { + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/git-raw-commits/node_modules/indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/git-raw-commits/node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/git-raw-commits/node_modules/map-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/git-raw-commits/node_modules/meow": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", + "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", + "dev": true, + "dependencies": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist": "^1.1.3", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/git-raw-commits/node_modules/minimist-options": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", + "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "dev": true, + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/git-raw-commits/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/git-raw-commits/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/git-raw-commits/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/git-raw-commits/node_modules/quick-lru": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/git-raw-commits/node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/git-raw-commits/node_modules/read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/git-raw-commits/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/git-raw-commits/node_modules/redent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "dev": true, + "dependencies": { + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/git-raw-commits/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/git-raw-commits/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/git-raw-commits/node_modules/strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/git-raw-commits/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/git-raw-commits/node_modules/trim-newlines": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/git-remote-origin-url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", + "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=", + "dev": true, + "dependencies": { + "gitconfiglocal": "^1.0.0", + "pify": "^2.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/git-semver-tags": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.0.0.tgz", + "integrity": "sha512-LajaAWLYVBff+1NVircURJFL8TQ3EMIcLAfHisWYX/nPoMwnTYfWAznQDmMujlLqoD12VtLmoSrF1sQ5MhimEQ==", + "dev": true, + "dependencies": { + "meow": "^7.0.0", + "semver": "^6.0.0" + }, + "bin": { + "git-semver-tags": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/git-semver-tags/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/gitconfiglocal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", + "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=", + "dev": true, + "dependencies": { + "ini": "^1.3.2" + } + }, + "node_modules/glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "dev": true, + "optional": true, + "dependencies": { + "ini": "^1.3.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "dependencies": { + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/globals/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/globby": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.0.tgz", + "integrity": "sha512-iuehFnR3xu5wBBtm4xi0dMe92Ob87ufyu/dHwpDYfbcpYpIbrO5OnS8M1vWvrBhSGEJ3/Ecj7gnX76P8YxpPEg==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/globby/node_modules/ignore": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", + "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/globby/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true + }, + "node_modules/growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true, + "optional": true + }, + "node_modules/handlebars": { + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", + "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/handlebars/node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "dependencies": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-value/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hook-std": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-2.0.0.tgz", + "integrity": "sha512-zZ6T5WcuBMIUVh49iPQS9t977t7C0l7OtHrpeMb5uk48JdflRX0NSFvCekfYNmGQETnLq9W/isMyHl69kxGi8g==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", + "dev": true + }, + "node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-agent/node_modules/debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true, + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/husky": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/husky/-/husky-4.2.5.tgz", + "integrity": "sha512-SYZ95AjKcX7goYVZtVZF2i6XiZcHknw50iXvY7b0MiGoj5RwdgRQNEHdb+gPDPCXKlzwrybjFjkL6FOj8uRhZQ==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "ci-info": "^2.0.0", + "compare-versions": "^3.6.0", + "cosmiconfig": "^6.0.0", + "find-versions": "^3.2.0", + "opencollective-postinstall": "^2.0.2", + "pkg-dir": "^4.2.0", + "please-upgrade-node": "^3.2.0", + "slash": "^3.0.0", + "which-pm-runs": "^1.0.0" + }, + "bin": { + "husky-run": "bin/run.js", + "husky-upgrade": "lib/upgrader/bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/husky/node_modules/ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/husky/node_modules/chalk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/husky/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/husky/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/husky/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/husky/node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/husky/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/husky/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/husky/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/husky/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/husky/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/husky/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/husky/node_modules/parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/husky/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/husky/node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/husky/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/husky/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/husky/node_modules/supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz", + "integrity": "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/inquirer": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.0.tgz", + "integrity": "sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA==", + "dev": true, + "dependencies": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/inquirer/node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/inquirer/node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/into-stream": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-5.1.1.tgz", + "integrity": "sha512-krrAJ7McQxGGmvaYbB7Q1mcA+cRwg9Ij2RfWIeVesNBgVDZmzY/Fa4IpZUT3bmdRzMzdf/mzltCG2Dq99IZGBA==", + "dev": true, + "dependencies": { + "from2": "^2.3.0", + "p-is-promise": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-docker": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.0.0.tgz", + "integrity": "sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz", + "integrity": "sha1-DFLlS8yjkbssSUsh6GJtczbG45c=", + "dev": true + }, + "node_modules/is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", + "dev": true, + "dependencies": { + "text-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "node_modules/issue-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-6.0.0.tgz", + "integrity": "sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==", + "dev": true, + "dependencies": { + "lodash.capitalize": "^4.2.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.uniqby": "^4.7.0" + }, + "engines": { + "node": ">=10.13" + } + }, + "node_modules/java-properties": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", + "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/jest": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-26.0.1.tgz", + "integrity": "sha512-29Q54kn5Bm7ZGKIuH2JRmnKl85YRigp0o0asTc6Sb6l2ch1DCXIeZTLLFy9ultJvhkTqbswF5DEx4+RlkmCxWg==", + "dev": true, + "dependencies": { + "@jest/core": "^26.0.1", + "import-local": "^3.0.2", + "jest-cli": "^26.0.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-changed-files": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.0.1.tgz", + "integrity": "sha512-q8LP9Sint17HaE2LjxQXL+oYWW/WeeXMPE2+Op9X3mY8IEGFVc14xRxFjUuXUbcPAlDLhtWdIEt59GdQbn76Hw==", + "dev": true, + "dependencies": { + "@jest/types": "^26.0.1", + "execa": "^4.0.0", + "throat": "^5.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-changed-files/node_modules/cross-spawn": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", + "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/jest-changed-files/node_modules/execa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.0.1.tgz", + "integrity": "sha512-SCjM/zlBdOK8Q5TIjOn6iEHZaPHFsMoTxXQ2nvUvtPnuohz3H2dIozSg+etNR98dGoYUp2ENSKLL/XaMmbxVgw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-changed-files/node_modules/get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-changed-files/node_modules/is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-changed-files/node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/jest-changed-files/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-changed-files/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-changed-files/node_modules/onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-changed-files/node_modules/throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "dev": true + }, + "node_modules/jest-changed-files/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/jest-config": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.0.1.tgz", + "integrity": "sha512-9mWKx2L1LFgOXlDsC4YSeavnblN6A4CPfXFiobq+YYLaBMymA/SczN7xYTSmLaEYHZOcB98UdoN4m5uNt6tztg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^26.0.1", + "@jest/types": "^26.0.1", + "babel-jest": "^26.0.1", + "chalk": "^4.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "jest-environment-jsdom": "^26.0.1", + "jest-environment-node": "^26.0.1", + "jest-get-type": "^26.0.0", + "jest-jasmine2": "^26.0.1", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.0.1", + "jest-util": "^26.0.1", + "jest-validate": "^26.0.1", + "micromatch": "^4.0.2", + "pretty-format": "^26.0.1" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/chalk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-config/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-config/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-config/node_modules/graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "node_modules/jest-config/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/jest-get-type": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.0.0.tgz", + "integrity": "sha512-zRc1OAPnnws1EVfykXOj19zo2EMw5Hi6HLbFCSjpuJiXtOWAYIjNsHVSbpQ8bDX7L5BGYGI8m+HmKdjHYFF0kg==", + "dev": true, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-config/node_modules/micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.0.1.tgz", + "integrity": "sha512-odTcHyl5X+U+QsczJmOjWw5tPvww+y9Yim5xzqxVl/R1j4z71+fHW4g8qu1ugMmKdFdxw+AtQgs5mupPnzcIBQ==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^26.0.0", + "jest-get-type": "^26.0.0", + "pretty-format": "^26.0.1" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-diff/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-diff/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/node_modules/jest-get-type": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.0.0.tgz", + "integrity": "sha512-zRc1OAPnnws1EVfykXOj19zo2EMw5Hi6HLbFCSjpuJiXtOWAYIjNsHVSbpQ8bDX7L5BGYGI8m+HmKdjHYFF0kg==", + "dev": true, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-docblock": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", + "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-docblock/node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-each": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.0.1.tgz", + "integrity": "sha512-OTgJlwXCAR8NIWaXFL5DBbeS4QIYPuNASkzSwMCJO+ywo9BEa6TqkaSWsfR7VdbMLdgYJqSfQcIyjJCNwl5n4Q==", + "dev": true, + "dependencies": { + "@jest/types": "^26.0.1", + "chalk": "^4.0.0", + "jest-get-type": "^26.0.0", + "jest-util": "^26.0.1", + "pretty-format": "^26.0.1" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-each/node_modules/chalk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-each/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-each/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-each/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-each/node_modules/jest-get-type": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.0.0.tgz", + "integrity": "sha512-zRc1OAPnnws1EVfykXOj19zo2EMw5Hi6HLbFCSjpuJiXtOWAYIjNsHVSbpQ8bDX7L5BGYGI8m+HmKdjHYFF0kg==", + "dev": true, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-each/node_modules/supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-jsdom": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.0.1.tgz", + "integrity": "sha512-u88NJa3aptz2Xix2pFhihRBAatwZHWwSiRLBDBQE1cdJvDjPvv7ZGA0NQBxWwDDn7D0g1uHqxM8aGgfA9Bx49g==", + "dev": true, + "dependencies": { + "@jest/environment": "^26.0.1", + "@jest/fake-timers": "^26.0.1", + "@jest/types": "^26.0.1", + "jest-mock": "^26.0.1", + "jest-util": "^26.0.1", + "jsdom": "^16.2.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-environment-jsdom/node_modules/acorn": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz", + "integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "node_modules/jest-environment-jsdom/node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-jsdom/node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "node_modules/jest-environment-jsdom/node_modules/jsdom": { + "version": "16.2.2", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.2.2.tgz", + "integrity": "sha512-pDFQbcYtKBHxRaP55zGXCJWgFHkDAYbKcsXEK/3Icu9nKYZkutUXfLBwbD+09XDutkYSHcgfQLZ0qvpAAm9mvg==", + "dev": true, + "dependencies": { + "abab": "^2.0.3", + "acorn": "^7.1.1", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.2.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.0", + "domexception": "^2.0.1", + "escodegen": "^1.14.1", + "html-encoding-sniffer": "^2.0.1", + "is-potential-custom-element-name": "^1.0.0", + "nwsapi": "^2.2.0", + "parse5": "5.1.1", + "request": "^2.88.2", + "request-promise-native": "^1.0.8", + "saxes": "^5.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^3.0.1", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.0.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0", + "ws": "^7.2.3", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-environment-jsdom/node_modules/parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "dev": true + }, + "node_modules/jest-environment-jsdom/node_modules/whatwg-url": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.1.0.tgz", + "integrity": "sha512-vEIkwNi9Hqt4TV9RdnaBPNt+E2Sgmo3gePebCRgZ1R7g6d23+53zCTnuB0amKI4AXq6VM8jj2DUAa0S1vjJxkw==", + "dev": true, + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^2.0.2", + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-environment-jsdom/node_modules/whatwg-url/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-jsdom/node_modules/ws": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.0.tgz", + "integrity": "sha512-iFtXzngZVXPGgpTlP1rBqsUK82p9tKqsWRPg5L56egiljujJT3vGAYnHANvFxBieXrTFavhzhxW52jnaWV+w2w==", + "dev": true, + "engines": { + "node": ">=8.3.0" + } + }, + "node_modules/jest-environment-node": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.0.1.tgz", + "integrity": "sha512-4FRBWcSn5yVo0KtNav7+5NH5Z/tEgDLp7VRQVS5tCouWORxj+nI+1tOLutM07Zb2Qi7ja+HEDoOUkjBSWZg/IQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^26.0.1", + "@jest/fake-timers": "^26.0.1", + "@jest/types": "^26.0.1", + "jest-mock": "^26.0.1", + "jest-util": "^26.0.1" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-haste-map": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.0.1.tgz", + "integrity": "sha512-J9kBl/EdjmDsvyv7CiyKY5+DsTvVOScenprz/fGqfLg/pm1gdjbwwQ98nW0t+OIt+f+5nAVaElvn/6wP5KO7KA==", + "dev": true, + "dependencies": { + "@jest/types": "^26.0.1", + "@types/graceful-fs": "^4.1.2", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-serializer": "^26.0.0", + "jest-util": "^26.0.1", + "jest-worker": "^26.0.0", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7", + "which": "^2.0.2" + }, + "engines": { + "node": ">= 10.14.2" + }, + "optionalDependencies": { + "fsevents": "^2.1.2" + } + }, + "node_modules/jest-haste-map/node_modules/@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "dev": true, + "dependencies": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + }, + "bin": { + "watch": "cli.js" + }, + "engines": { + "node": ">=0.1.95" + } + }, + "node_modules/jest-haste-map/node_modules/anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/jest-haste-map/node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-haste-map/node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-haste-map/node_modules/capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "dev": true, + "dependencies": { + "rsvp": "^4.8.4" + }, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/jest-haste-map/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/jest-haste-map/node_modules/exec-sh": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz", + "integrity": "sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==", + "dev": true + }, + "node_modules/jest-haste-map/node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-haste-map/node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-haste-map/node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-haste-map/node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-haste-map/node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-haste-map/node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-haste-map/node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-haste-map/node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-haste-map/node_modules/expand-brackets/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-haste-map/node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-haste-map/node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-haste-map/node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-haste-map/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-haste-map/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-haste-map/node_modules/fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/jest-haste-map/node_modules/graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "node_modules/jest-haste-map/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-haste-map/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-haste-map/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-haste-map/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-haste-map/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-haste-map/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-haste-map/node_modules/micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-haste-map/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/jest-haste-map/node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-haste-map/node_modules/rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "dev": true, + "engines": { + "node": "6.* || >= 7.*" + } + }, + "node_modules/jest-haste-map/node_modules/sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "dev": true, + "dependencies": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + }, + "bin": { + "sane": "src/cli.js" + }, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/jest-haste-map/node_modules/sane/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/jest-haste-map/node_modules/sane/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-haste-map/node_modules/sane/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-haste-map/node_modules/sane/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-haste-map/node_modules/sane/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-haste-map/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-haste-map/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/jest-jasmine2": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.0.1.tgz", + "integrity": "sha512-ILaRyiWxiXOJ+RWTKupzQWwnPaeXPIoLS5uW41h18varJzd9/7I0QJGqg69fhTT1ev9JpSSo9QtalriUN0oqOg==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^26.0.1", + "@jest/source-map": "^26.0.0", + "@jest/test-result": "^26.0.1", + "@jest/types": "^26.0.1", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^26.0.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^26.0.1", + "jest-matcher-utils": "^26.0.1", + "jest-message-util": "^26.0.1", + "jest-runtime": "^26.0.1", + "jest-snapshot": "^26.0.1", + "jest-util": "^26.0.1", + "pretty-format": "^26.0.1", + "throat": "^5.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-jasmine2/node_modules/ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-jasmine2/node_modules/chalk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-jasmine2/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-jasmine2/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-jasmine2/node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-jasmine2/node_modules/supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-jasmine2/node_modules/throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "dev": true + }, + "node_modules/jest-leak-detector": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.0.1.tgz", + "integrity": "sha512-93FR8tJhaYIWrWsbmVN1pQ9ZNlbgRpfvrnw5LmgLRX0ckOJ8ut/I35CL7awi2ecq6Ca4lL59bEK9hr7nqoHWPA==", + "dev": true, + "dependencies": { + "jest-get-type": "^26.0.0", + "pretty-format": "^26.0.1" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-leak-detector/node_modules/jest-get-type": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.0.0.tgz", + "integrity": "sha512-zRc1OAPnnws1EVfykXOj19zo2EMw5Hi6HLbFCSjpuJiXtOWAYIjNsHVSbpQ8bDX7L5BGYGI8m+HmKdjHYFF0kg==", + "dev": true, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-matcher-utils": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.0.1.tgz", + "integrity": "sha512-PUMlsLth0Azen8Q2WFTwnSkGh2JZ8FYuwijC8NR47vXKpsrKmA1wWvgcj1CquuVfcYiDEdj985u5Wmg7COEARw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^26.0.1", + "jest-get-type": "^26.0.0", + "pretty-format": "^26.0.1" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-matcher-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-matcher-utils/node_modules/jest-get-type": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.0.0.tgz", + "integrity": "sha512-zRc1OAPnnws1EVfykXOj19zo2EMw5Hi6HLbFCSjpuJiXtOWAYIjNsHVSbpQ8bDX7L5BGYGI8m+HmKdjHYFF0kg==", + "dev": true, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.0.1.tgz", + "integrity": "sha512-CbK8uQREZ8umUfo8+zgIfEt+W7HAHjQCoRaNs4WxKGhAYBGwEyvxuK81FXa7VeB9pwDEXeeKOB2qcsNVCAvB7Q==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^26.0.1", + "@types/stack-utils": "^1.0.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-message-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-message-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-message-util/node_modules/graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-mock": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.0.1.tgz", + "integrity": "sha512-MpYTBqycuPYSY6xKJognV7Ja46/TeRbAZept987Zp+tuJvMN0YBWyyhG9mXyYQaU3SBI0TUlSaO5L3p49agw7Q==", + "dev": true, + "dependencies": { + "@jest/types": "^26.0.1" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz", + "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "dev": true, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-resolve": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.0.1.tgz", + "integrity": "sha512-6jWxk0IKZkPIVTvq6s72RH735P8f9eCJW3IM5CX/SJFeKq1p2cZx0U49wf/SdMlhaB/anann5J2nCJj6HrbezQ==", + "dev": true, + "dependencies": { + "@jest/types": "^26.0.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.1", + "jest-util": "^26.0.1", + "read-pkg-up": "^7.0.1", + "resolve": "^1.17.0", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.0.1.tgz", + "integrity": "sha512-9d5/RS/ft0vB/qy7jct/qAhzJsr6fRQJyGAFigK3XD4hf9kIbEH5gks4t4Z7kyMRhowU6HWm/o8ILqhaHdSqLw==", + "dev": true, + "dependencies": { + "@jest/types": "^26.0.1", + "jest-regex-util": "^26.0.0", + "jest-snapshot": "^26.0.1" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-resolve/node_modules/ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-resolve/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-resolve/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-resolve/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "node_modules/jest-resolve/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-resolve/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-resolve/node_modules/parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + } + }, + "node_modules/jest-resolve/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.0.1.tgz", + "integrity": "sha512-CApm0g81b49Znm4cZekYQK67zY7kkB4umOlI2Dx5CwKAzdgw75EN+ozBHRvxBzwo1ZLYZ07TFxkaPm+1t4d8jA==", + "dev": true, + "dependencies": { + "@jest/console": "^26.0.1", + "@jest/environment": "^26.0.1", + "@jest/test-result": "^26.0.1", + "@jest/types": "^26.0.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-config": "^26.0.1", + "jest-docblock": "^26.0.0", + "jest-haste-map": "^26.0.1", + "jest-jasmine2": "^26.0.1", + "jest-leak-detector": "^26.0.1", + "jest-message-util": "^26.0.1", + "jest-resolve": "^26.0.1", + "jest-runtime": "^26.0.1", + "jest-util": "^26.0.1", + "jest-worker": "^26.0.0", + "source-map-support": "^0.5.6", + "throat": "^5.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-runner/node_modules/ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-runner/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runner/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-runner/node_modules/graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "node_modules/jest-runner/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner/node_modules/supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner/node_modules/throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "dev": true + }, + "node_modules/jest-runtime": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.0.1.tgz", + "integrity": "sha512-Ci2QhYFmANg5qaXWf78T2Pfo6GtmIBn2rRaLnklRyEucmPccmCKvS9JPljcmtVamsdMmkyNkVFb9pBTD6si9Lw==", + "dev": true, + "dependencies": { + "@jest/console": "^26.0.1", + "@jest/environment": "^26.0.1", + "@jest/fake-timers": "^26.0.1", + "@jest/globals": "^26.0.1", + "@jest/source-map": "^26.0.0", + "@jest/test-result": "^26.0.1", + "@jest/transform": "^26.0.1", + "@jest/types": "^26.0.1", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-config": "^26.0.1", + "jest-haste-map": "^26.0.1", + "jest-message-util": "^26.0.1", + "jest-mock": "^26.0.1", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.0.1", + "jest-snapshot": "^26.0.1", + "jest-util": "^26.0.1", + "jest-validate": "^26.0.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "jest-runtime": "bin/jest-runtime.js" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-runtime/node_modules/ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-runtime/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runtime/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-runtime/node_modules/graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "node_modules/jest-runtime/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-serializer": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.0.0.tgz", + "integrity": "sha512-sQGXLdEGWFAE4wIJ2ZaIDb+ikETlUirEOBsLXdoBbeLhTHkZUJwgk3+M8eyFizhM6le43PDCCKPA1hzkSDo4cQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-serializer/node_modules/graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "node_modules/jest-snapshot": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.0.1.tgz", + "integrity": "sha512-jxd+cF7+LL+a80qh6TAnTLUZHyQoWwEHSUFJjkw35u3Gx+BZUNuXhYvDqHXr62UQPnWo2P6fvQlLjsU93UKyxA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0", + "@jest/types": "^26.0.1", + "@types/prettier": "^2.0.0", + "chalk": "^4.0.0", + "expect": "^26.0.1", + "graceful-fs": "^4.2.4", + "jest-diff": "^26.0.1", + "jest-get-type": "^26.0.0", + "jest-matcher-utils": "^26.0.1", + "jest-message-util": "^26.0.1", + "jest-resolve": "^26.0.1", + "make-dir": "^3.0.0", + "natural-compare": "^1.4.0", + "pretty-format": "^26.0.1", + "semver": "^7.3.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-snapshot/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-snapshot/node_modules/graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "node_modules/jest-snapshot/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/jest-get-type": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.0.0.tgz", + "integrity": "sha512-zRc1OAPnnws1EVfykXOj19zo2EMw5Hi6HLbFCSjpuJiXtOWAYIjNsHVSbpQ8bDX7L5BGYGI8m+HmKdjHYFF0kg==", + "dev": true, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-snapshot/node_modules/supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.0.1.tgz", + "integrity": "sha512-byQ3n7ad1BO/WyFkYvlWQHTsomB6GIewBh8tlGtusiylAlaxQ1UpS0XYH0ngOyhZuHVLN79Qvl6/pMiDMSSG1g==", + "dev": true, + "dependencies": { + "@jest/types": "^26.0.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "make-dir": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-util/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/jest-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-util/node_modules/graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "node_modules/jest-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.0.1.tgz", + "integrity": "sha512-u0xRc+rbmov/VqXnX3DlkxD74rHI/CfS5xaV2VpeaVySjbb1JioNVOyly5b56q2l9ZKe7bVG5qWmjfctkQb0bA==", + "dev": true, + "dependencies": { + "@jest/types": "^26.0.1", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.0.0", + "leven": "^3.1.0", + "pretty-format": "^26.0.1" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-validate/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-validate/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-validate/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate/node_modules/jest-get-type": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.0.0.tgz", + "integrity": "sha512-zRc1OAPnnws1EVfykXOj19zo2EMw5Hi6HLbFCSjpuJiXtOWAYIjNsHVSbpQ8bDX7L5BGYGI8m+HmKdjHYFF0kg==", + "dev": true, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-validate/node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-validate/node_modules/supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.0.1.tgz", + "integrity": "sha512-pdZPydsS8475f89kGswaNsN3rhP6lnC3/QDCppP7bg1L9JQz7oU9Mb/5xPETk1RHDCWeqmVC47M4K5RR7ejxFw==", + "dev": true, + "dependencies": { + "@jest/test-result": "^26.0.1", + "@jest/types": "^26.0.1", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^26.0.1", + "string-length": "^4.0.1" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-watcher/node_modules/ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "dependencies": { + "type-fest": "^0.11.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher/node_modules/ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-watcher/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-watcher/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-watcher/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher/node_modules/string-length": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.1.tgz", + "integrity": "sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-watcher/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher/node_modules/supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher/node_modules/type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.0.0.tgz", + "integrity": "sha512-pPaYa2+JnwmiZjK9x7p9BoZht+47ecFCDFA/CJxspHzeDvQcfVBLWzCiWyo+EGrSiQMWZtCFo9iSvMZnAAo8vw==", + "dev": true, + "dependencies": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest/node_modules/ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest/node_modules/chalk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest/node_modules/graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "node_modules/jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest/node_modules/import-local": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest/node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/jest/node_modules/jest-cli": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.0.1.tgz", + "integrity": "sha512-pFLfSOBcbG9iOZWaMK4Een+tTxi/Wcm34geqZEqrst9cZDkTQ1LZ2CnBrTlHWuYAiTMFr0EQeK52ScyFU8wK+w==", + "dev": true, + "dependencies": { + "@jest/core": "^26.0.1", + "@jest/test-result": "^26.0.1", + "@jest/types": "^26.0.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "is-ci": "^2.0.0", + "jest-config": "^26.0.1", + "jest-util": "^26.0.1", + "jest-validate": "^26.0.1", + "prompts": "^2.0.1", + "yargs": "^15.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest/node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest/node_modules/supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true, + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "node_modules/load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/load-json-file/node_modules/strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "dependencies": { + "is-utf8": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "node_modules/lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "node_modules/lodash.capitalize": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", + "integrity": "sha1-+CbJtOKoUR2E46yinbBeGk87cqk=", + "dev": true + }, + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=", + "dev": true + }, + "node_modules/lodash.ismatch": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", + "integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=", + "dev": true + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "dev": true + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", + "dev": true + }, + "node_modules/lodash.map": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", + "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=", + "dev": true + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "node_modules/lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "dev": true, + "dependencies": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "node_modules/lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "dev": true, + "dependencies": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "node_modules/lodash.toarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", + "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=", + "dev": true + }, + "node_modules/lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha1-2ZwHpmnp5tJOE2Lf4mbGdhavEwI=", + "dev": true + }, + "node_modules/longest": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-2.0.1.tgz", + "integrity": "sha1-eB4YMpaqlPbU2RbcM10NF676I/g=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "dependencies": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/macos-release": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.3.0.tgz", + "integrity": "sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "dependencies": { + "tmpl": "1.0.x" + } + }, + "node_modules/map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "dependencies": { + "p-defer": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.1.0.tgz", + "integrity": "sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/marked": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-1.0.0.tgz", + "integrity": "sha512-Wo+L1pWTVibfrSr+TTtMuiMfNzmZWiOPeO7rZsQUY5bgsxpHesBEcIWJloWVTFnrMXnf/TL30eTFSGJddmQAng==", + "dev": true, + "bin": { + "marked": "bin/marked" + }, + "engines": { + "node": ">= 8.16.2" + } + }, + "node_modules/marked-terminal": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-4.1.0.tgz", + "integrity": "sha512-5KllfAOW02WS6hLRQ7cNvGOxvKW1BKuXELH4EtbWfyWgxQhROoMxEvuQ/3fTgkNjledR0J48F4HbapvYp1zWkQ==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.3.1", + "cardinal": "^2.1.1", + "chalk": "^4.0.0", + "cli-table": "^0.3.1", + "node-emoji": "^1.10.0", + "supports-hyperlinks": "^2.1.0" + } + }, + "node_modules/marked-terminal/node_modules/ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "dependencies": { + "type-fest": "^0.11.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/marked-terminal/node_modules/ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/marked-terminal/node_modules/chalk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/marked-terminal/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/marked-terminal/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/marked-terminal/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/marked-terminal/node_modules/supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/marked-terminal/node_modules/type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/mem": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-6.1.0.tgz", + "integrity": "sha512-RlbnLQgRHk5lwqTtpEkBTQ2ll/CG/iB+J4Hy2Wh97PjgZgXgWJWrFF+XXujh3UUVLvR4OOTgZzcWMMwnehlEUg==", + "dev": true, + "dependencies": { + "map-age-cleaner": "^0.1.3", + "mimic-fn": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mem/node_modules/mimic-fn": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.0.0.tgz", + "integrity": "sha512-PiVO95TKvhiwgSwg1IdLYlCTdul38yZxZMIcnDSFIBUm4BNZha2qpQ4GpJ++15bHoKDtrW2D69lMfFwdFYtNZQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-7.0.1.tgz", + "integrity": "sha512-tBKIQqVrAHqwit0vfuFPY3LlzJYkEOFyKa3bPgxzNl6q/RtN8KQ+ALYEASYuFayzSAsjlhXj/JZ10rH85Q6TUw==", + "dev": true, + "dependencies": { + "@types/minimist": "^1.2.0", + "arrify": "^2.0.1", + "camelcase": "^6.0.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "^4.0.2", + "normalize-package-data": "^2.5.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.13.1", + "yargs-parser": "^18.1.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/meow/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/meow/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/meow/node_modules/parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/merge": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz", + "integrity": "sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", + "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/mime": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.5.tgz", + "integrity": "sha512-3hQhEUF027BuxZjQA3s7rIv/7VCQPa27hN9u9g87sEkWaKwQPuXOkVKtOeiyUrnWqTDiOs8Ed2rwg733mB0R5w==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "dev": true, + "dependencies": { + "mime-db": "1.44.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/min-indent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.0.tgz", + "integrity": "sha1-z8RcN+nsDY8KDsPdTvf3w6vjklY=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/minimist-options": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.0.2.tgz", + "integrity": "sha512-seq4hpWkYSUh1y7NXxzucwAN9yVlBc3Upgdjz8vLCP97jG8kaOmzYrVH/m7tQ1NYD1wdtZbSLfdy4zFmRWuc/w==", + "dev": true, + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/minimist-options/node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/modify-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", + "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "dev": true + }, + "node_modules/nerf-dart": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", + "integrity": "sha1-5tq3/r9a2Bbqgc9cYpxaDr3nLBo=", + "dev": true + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/node-emoji": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz", + "integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==", + "dev": true, + "dependencies": { + "lodash.toarray": "^4.4.0" + } + }, + "node_modules/node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==", + "dev": true, + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node_modules/node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-5.0.0.tgz", + "integrity": "sha512-bAEm2fx8Dq/a35Z6PIRkkBBJvR56BbEJvhpNtvCZ4W9FyORSna77fn+xtYFjqk5JpBS+fMnAOG/wFgkQBmB7hw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm": { + "version": "6.14.5", + "resolved": "https://registry.npmjs.org/npm/-/npm-6.14.5.tgz", + "integrity": "sha512-CDwa3FJd0XJpKDbWCST484H+mCNjF26dPrU+xnREW+upR0UODjMEfXPl3bxWuAwZIX6c2ASg1plLO7jP8ehWeA==", + "bundleDependencies": [ + "JSONStream", + "abbrev", + "ansicolors", + "ansistyles", + "aproba", + "archy", + "bin-links", + "bluebird", + "byte-size", + "cacache", + "call-limit", + "chownr", + "ci-info", + "cli-columns", + "cli-table3", + "cmd-shim", + "columnify", + "config-chain", + "debuglog", + "detect-indent", + "detect-newline", + "dezalgo", + "editor", + "figgy-pudding", + "find-npm-prefix", + "fs-vacuum", + "fs-write-stream-atomic", + "gentle-fs", + "glob", + "graceful-fs", + "has-unicode", + "hosted-git-info", + "iferr", + "imurmurhash", + "infer-owner", + "inflight", + "inherits", + "ini", + "init-package-json", + "is-cidr", + "json-parse-better-errors", + "lazy-property", + "libcipm", + "libnpm", + "libnpmaccess", + "libnpmhook", + "libnpmorg", + "libnpmsearch", + "libnpmteam", + "libnpx", + "lock-verify", + "lockfile", + "lodash._baseindexof", + "lodash._baseuniq", + "lodash._bindcallback", + "lodash._cacheindexof", + "lodash._createcache", + "lodash._getnative", + "lodash.clonedeep", + "lodash.restparam", + "lodash.union", + "lodash.uniq", + "lodash.without", + "lru-cache", + "meant", + "mississippi", + "mkdirp", + "move-concurrently", + "node-gyp", + "nopt", + "normalize-package-data", + "npm-audit-report", + "npm-cache-filename", + "npm-install-checks", + "npm-lifecycle", + "npm-package-arg", + "npm-packlist", + "npm-pick-manifest", + "npm-profile", + "npm-registry-fetch", + "npm-user-validate", + "npmlog", + "once", + "opener", + "osenv", + "pacote", + "path-is-inside", + "promise-inflight", + "qrcode-terminal", + "query-string", + "qw", + "read", + "read-cmd-shim", + "read-installed", + "read-package-json", + "read-package-tree", + "readable-stream", + "readdir-scoped-modules", + "request", + "retry", + "rimraf", + "safe-buffer", + "semver", + "sha", + "slide", + "sorted-object", + "sorted-union-stream", + "ssri", + "stringify-package", + "tar", + "text-table", + "tiny-relative-date", + "uid-number", + "umask", + "unique-filename", + "unpipe", + "update-notifier", + "uuid", + "validate-npm-package-license", + "validate-npm-package-name", + "which", + "worker-farm", + "write-file-atomic" + ], + "dev": true, + "dependencies": { + "abbrev": "~1.1.1", + "ansicolors": "~0.3.2", + "ansistyles": "~0.1.3", + "aproba": "^2.0.0", + "archy": "~1.0.0", + "bin-links": "^1.1.7", + "bluebird": "^3.5.5", + "byte-size": "^5.0.1", + "cacache": "^12.0.3", + "call-limit": "^1.1.1", + "chownr": "^1.1.4", + "ci-info": "^2.0.0", + "cli-columns": "^3.1.2", + "cli-table3": "^0.5.1", + "cmd-shim": "^3.0.3", + "columnify": "~1.5.4", + "config-chain": "^1.1.12", + "debuglog": "*", + "detect-indent": "~5.0.0", + "detect-newline": "^2.1.0", + "dezalgo": "~1.0.3", + "editor": "~1.0.0", + "figgy-pudding": "^3.5.1", + "find-npm-prefix": "^1.0.2", + "fs-vacuum": "~1.2.10", + "fs-write-stream-atomic": "~1.0.10", + "gentle-fs": "^2.3.0", + "glob": "^7.1.6", + "graceful-fs": "^4.2.4", + "has-unicode": "~2.0.1", + "hosted-git-info": "^2.8.8", + "iferr": "^1.0.2", + "imurmurhash": "*", + "infer-owner": "^1.0.4", + "inflight": "~1.0.6", + "inherits": "^2.0.4", + "ini": "^1.3.5", + "init-package-json": "^1.10.3", + "is-cidr": "^3.0.0", + "json-parse-better-errors": "^1.0.2", + "JSONStream": "^1.3.5", + "lazy-property": "~1.0.0", + "libcipm": "^4.0.7", + "libnpm": "^3.0.1", + "libnpmaccess": "^3.0.2", + "libnpmhook": "^5.0.3", + "libnpmorg": "^1.0.1", + "libnpmsearch": "^2.0.2", + "libnpmteam": "^1.0.2", + "libnpx": "^10.2.2", + "lock-verify": "^2.1.0", + "lockfile": "^1.0.4", + "lodash._baseindexof": "*", + "lodash._baseuniq": "~4.6.0", + "lodash._bindcallback": "*", + "lodash._cacheindexof": "*", + "lodash._createcache": "*", + "lodash._getnative": "*", + "lodash.clonedeep": "~4.5.0", + "lodash.restparam": "*", + "lodash.union": "~4.6.0", + "lodash.uniq": "~4.5.0", + "lodash.without": "~4.4.0", + "lru-cache": "^5.1.1", + "meant": "~1.0.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.5", + "move-concurrently": "^1.0.1", + "node-gyp": "^5.1.0", + "nopt": "^4.0.3", + "normalize-package-data": "^2.5.0", + "npm-audit-report": "^1.3.2", + "npm-cache-filename": "~1.0.2", + "npm-install-checks": "^3.0.2", + "npm-lifecycle": "^3.1.4", + "npm-package-arg": "^6.1.1", + "npm-packlist": "^1.4.8", + "npm-pick-manifest": "^3.0.2", + "npm-profile": "^4.0.4", + "npm-registry-fetch": "^4.0.4", + "npm-user-validate": "~1.0.0", + "npmlog": "~4.1.2", + "once": "~1.4.0", + "opener": "^1.5.1", + "osenv": "^0.1.5", + "pacote": "^9.5.12", + "path-is-inside": "~1.0.2", + "promise-inflight": "~1.0.1", + "qrcode-terminal": "^0.12.0", + "query-string": "^6.8.2", + "qw": "~1.0.1", + "read": "~1.0.7", + "read-cmd-shim": "^1.0.5", + "read-installed": "~4.0.3", + "read-package-json": "^2.1.1", + "read-package-tree": "^5.3.1", + "readable-stream": "^3.6.0", + "readdir-scoped-modules": "^1.1.0", + "request": "^2.88.0", + "retry": "^0.12.0", + "rimraf": "^2.7.1", + "safe-buffer": "^5.1.2", + "semver": "^5.7.1", + "sha": "^3.0.0", + "slide": "~1.1.6", + "sorted-object": "~2.0.1", + "sorted-union-stream": "~2.1.3", + "ssri": "^6.0.1", + "stringify-package": "^1.0.1", + "tar": "^4.4.13", + "text-table": "~0.2.0", + "tiny-relative-date": "^1.3.0", + "uid-number": "0.0.6", + "umask": "~1.1.0", + "unique-filename": "^1.1.1", + "unpipe": "~1.0.0", + "update-notifier": "^2.5.0", + "uuid": "^3.3.3", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "~3.0.0", + "which": "^1.3.1", + "worker-farm": "^1.7.0", + "write-file-atomic": "^2.4.3" + }, + "bin": { + "npm": "bin/npm-cli.js", + "npx": "bin/npx-cli.js" + }, + "engines": { + "node": "6 >=6.2.0 || 8 || >=9.3.0" + } + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/abbrev": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/agent-base": { + "version": "4.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "es6-promisify": "^5.0.0" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/npm/node_modules/agentkeepalive": { + "version": "3.5.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/npm/node_modules/ajv": { + "version": "5.5.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "node_modules/npm/node_modules/ansi-align": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "string-width": "^2.0.0" + } + }, + "node_modules/npm/node_modules/ansi-regex": { + "version": "2.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/ansi-styles": { + "version": "3.2.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/ansicolors": { + "version": "0.3.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/ansistyles": { + "version": "0.1.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/aproba": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/archy": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/are-we-there-yet": { + "version": "1.1.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "node_modules/npm/node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "2.3.6", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/npm/node_modules/are-we-there-yet/node_modules/string_decoder": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/npm/node_modules/asap": { + "version": "2.0.6", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/asn1": { + "version": "0.2.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/npm/node_modules/assert-plus": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/npm/node_modules/asynckit": { + "version": "0.4.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/aws-sign2": { + "version": "0.7.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/aws4": { + "version": "1.8.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/balanced-match": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause", + "optional": true, + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/npm/node_modules/bin-links": { + "version": "1.1.7", + "dev": true, + "inBundle": true, + "license": "Artistic-2.0", + "dependencies": { + "bluebird": "^3.5.3", + "cmd-shim": "^3.0.0", + "gentle-fs": "^2.3.0", + "graceful-fs": "^4.1.15", + "npm-normalize-package-bin": "^1.0.0", + "write-file-atomic": "^2.3.0" + } + }, + "node_modules/npm/node_modules/bluebird": { + "version": "3.5.5", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/boxen": { + "version": "1.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-align": "^2.0.0", + "camelcase": "^4.0.0", + "chalk": "^2.0.1", + "cli-boxes": "^1.0.0", + "string-width": "^2.0.0", + "term-size": "^1.2.0", + "widest-line": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/brace-expansion": { + "version": "1.1.11", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/npm/node_modules/buffer-from": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/builtins": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/byline": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/byte-size": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/npm/node_modules/cacache": { + "version": "12.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "node_modules/npm/node_modules/call-limit": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/camelcase": { + "version": "4.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/capture-stack-trace": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/caseless": { + "version": "0.12.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0" + }, + "node_modules/npm/node_modules/chalk": { + "version": "2.4.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/chownr": { + "version": "1.1.4", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/ci-info": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/cidr-regex": { + "version": "2.0.10", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "ip-regex": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/cli-boxes": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/cli-columns": { + "version": "3.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "string-width": "^2.0.0", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm/node_modules/cli-table3": { + "version": "0.5.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4.1.0", + "string-width": "^2.1.1" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "colors": "^1.1.2" + } + }, + "node_modules/npm/node_modules/cliui": { + "version": "4.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "node_modules/npm/node_modules/cliui/node_modules/ansi-regex": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/cliui/node_modules/strip-ansi": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/clone": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/npm/node_modules/cmd-shim": { + "version": "3.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "graceful-fs": "^4.1.2", + "mkdirp": "~0.5.0" + } + }, + "node_modules/npm/node_modules/co": { + "version": "4.6.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/npm/node_modules/code-point-at": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/color-convert": { + "version": "1.9.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-name": "^1.1.1" + } + }, + "node_modules/npm/node_modules/color-name": { + "version": "1.1.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/colors": { + "version": "1.3.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/npm/node_modules/columnify": { + "version": "1.5.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "strip-ansi": "^3.0.0", + "wcwidth": "^1.0.0" + } + }, + "node_modules/npm/node_modules/combined-stream": { + "version": "1.0.6", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/npm/node_modules/concat-map": { + "version": "0.0.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/concat-stream": { + "version": "1.6.2", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "inBundle": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/npm/node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.6", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/npm/node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/npm/node_modules/config-chain": { + "version": "1.1.12", + "dev": true, + "inBundle": true, + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/npm/node_modules/configstore": { + "version": "3.1.2", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/console-control-strings": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/copy-concurrently": { + "version": "1.0.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "node_modules/npm/node_modules/copy-concurrently/node_modules/aproba": { + "version": "1.2.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/copy-concurrently/node_modules/iferr": { + "version": "0.1.5", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/core-util-is": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/create-error-class": { + "version": "3.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "capture-stack-trace": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/cross-spawn": { + "version": "5.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/npm/node_modules/cross-spawn/node_modules/lru-cache": { + "version": "4.1.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/npm/node_modules/cross-spawn/node_modules/yallist": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/crypto-random-string": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/cyclist": { + "version": "0.2.2", + "dev": true, + "inBundle": true + }, + "node_modules/npm/node_modules/dashdash": { + "version": "1.14.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/npm/node_modules/debug": { + "version": "3.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/npm/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/debuglog": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/decamelize": { + "version": "1.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/decode-uri-component": { + "version": "0.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/npm/node_modules/deep-extend": { + "version": "0.6.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/npm/node_modules/defaults": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + } + }, + "node_modules/npm/node_modules/define-properties": { + "version": "1.1.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/npm/node_modules/delayed-stream": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/npm/node_modules/delegates": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/detect-indent": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/detect-newline": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/dezalgo": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "node_modules/npm/node_modules/dot-prop": { + "version": "4.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "is-obj": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/dotenv": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.6.0" + } + }, + "node_modules/npm/node_modules/duplexer3": { + "version": "0.1.4", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause" + }, + "node_modules/npm/node_modules/duplexify": { + "version": "3.6.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/npm/node_modules/duplexify/node_modules/readable-stream": { + "version": "2.3.6", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/npm/node_modules/duplexify/node_modules/string_decoder": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/npm/node_modules/ecc-jsbn": { + "version": "0.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/npm/node_modules/editor": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/encoding": { + "version": "0.1.12", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "~0.4.13" + } + }, + "node_modules/npm/node_modules/end-of-stream": { + "version": "1.4.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/npm/node_modules/env-paths": { + "version": "2.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/err-code": { + "version": "1.1.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/errno": { + "version": "0.1.7", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/npm/node_modules/es-abstract": { + "version": "1.12.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "es-to-primitive": "^1.1.1", + "function-bind": "^1.1.1", + "has": "^1.0.1", + "is-callable": "^1.1.3", + "is-regex": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/npm/node_modules/es-to-primitive": { + "version": "1.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/npm/node_modules/es6-promise": { + "version": "4.2.8", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/es6-promisify": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "es6-promise": "^4.0.3" + } + }, + "node_modules/npm/node_modules/escape-string-regexp": { + "version": "1.0.5", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/npm/node_modules/execa": { + "version": "0.7.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/execa/node_modules/get-stream": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/extend": { + "version": "3.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/extsprintf": { + "version": "1.3.0", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/fast-deep-equal": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/fast-json-stable-stringify": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/figgy-pudding": { + "version": "3.5.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/find-npm-prefix": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/find-up": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/flush-write-stream": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" + } + }, + "node_modules/npm/node_modules/flush-write-stream/node_modules/readable-stream": { + "version": "2.3.6", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/npm/node_modules/flush-write-stream/node_modules/string_decoder": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/npm/node_modules/forever-agent": { + "version": "0.6.1", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/form-data": { + "version": "2.3.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/npm/node_modules/from2": { + "version": "2.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "node_modules/npm/node_modules/from2/node_modules/readable-stream": { + "version": "2.3.6", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/npm/node_modules/from2/node_modules/string_decoder": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/npm/node_modules/fs-minipass": { + "version": "1.2.7", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^2.6.0" + } + }, + "node_modules/npm/node_modules/fs-minipass/node_modules/minipass": { + "version": "2.9.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "node_modules/npm/node_modules/fs-vacuum": { + "version": "1.2.10", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "graceful-fs": "^4.1.2", + "path-is-inside": "^1.0.1", + "rimraf": "^2.5.2" + } + }, + "node_modules/npm/node_modules/fs-write-stream-atomic": { + "version": "1.0.10", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "node_modules/npm/node_modules/fs-write-stream-atomic/node_modules/iferr": { + "version": "0.1.5", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/fs-write-stream-atomic/node_modules/readable-stream": { + "version": "2.3.6", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/npm/node_modules/fs-write-stream-atomic/node_modules/string_decoder": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/npm/node_modules/fs.realpath": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/function-bind": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/gauge": { + "version": "2.7.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/npm/node_modules/gauge/node_modules/aproba": { + "version": "1.2.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/gauge/node_modules/string-width": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/genfun": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/gentle-fs": { + "version": "2.3.0", + "dev": true, + "inBundle": true, + "license": "Artistic-2.0", + "dependencies": { + "aproba": "^1.1.2", + "chownr": "^1.1.2", + "cmd-shim": "^3.0.3", + "fs-vacuum": "^1.2.10", + "graceful-fs": "^4.1.11", + "iferr": "^0.1.5", + "infer-owner": "^1.0.4", + "mkdirp": "^0.5.1", + "path-is-inside": "^1.0.2", + "read-cmd-shim": "^1.0.1", + "slide": "^1.1.6" + } + }, + "node_modules/npm/node_modules/gentle-fs/node_modules/aproba": { + "version": "1.2.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/gentle-fs/node_modules/iferr": { + "version": "0.1.5", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/get-caller-file": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/get-stream": { + "version": "4.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/getpass": { + "version": "0.1.7", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/npm/node_modules/glob": { + "version": "7.1.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/global-dirs": { + "version": "0.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ini": "^1.3.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/got": { + "version": "6.7.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "create-error-class": "^3.0.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "unzip-response": "^2.0.1", + "url-parse-lax": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/got/node_modules/get-stream": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/graceful-fs": { + "version": "4.2.4", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/har-schema": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/har-validator": { + "version": "5.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "ajv": "^5.3.0", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/has": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/npm/node_modules/has-flag": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/has-symbols": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/npm/node_modules/has-unicode": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/hosted-git-info": { + "version": "2.8.8", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/http-cache-semantics": { + "version": "3.8.1", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause" + }, + "node_modules/npm/node_modules/http-proxy-agent": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "4", + "debug": "3.1.0" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/npm/node_modules/http-signature": { + "version": "1.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/npm/node_modules/https-proxy-agent": { + "version": "2.2.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/npm/node_modules/humanize-ms": { + "version": "1.2.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/npm/node_modules/iconv-lite": { + "version": "0.4.23", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/iferr": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/npm/node_modules/ignore-walk": { + "version": "3.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minimatch": "^3.0.4" + } + }, + "node_modules/npm/node_modules/import-lazy": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/imurmurhash": { + "version": "0.1.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/npm/node_modules/infer-owner": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/inflight": { + "version": "1.0.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/npm/node_modules/inherits": { + "version": "2.0.4", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/ini": { + "version": "1.3.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/init-package-json": { + "version": "1.10.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.1", + "npm-package-arg": "^4.0.0 || ^5.0.0 || ^6.0.0", + "promzard": "^0.3.0", + "read": "~1.0.1", + "read-package-json": "1 || 2", + "semver": "2.x || 3.x || 4 || 5", + "validate-npm-package-license": "^3.0.1", + "validate-npm-package-name": "^3.0.0" + } + }, + "node_modules/npm/node_modules/invert-kv": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/ip": { + "version": "1.1.5", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/ip-regex": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/is-callable": { + "version": "1.1.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/npm/node_modules/is-ci": { + "version": "1.2.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ci-info": "^1.5.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/npm/node_modules/is-ci/node_modules/ci-info": { + "version": "1.6.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/is-cidr": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "cidr-regex": "^2.0.10" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/is-date-object": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/npm/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/is-installed-globally": { + "version": "0.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/is-npm": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/is-obj": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/is-path-inside": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "path-is-inside": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/is-redirect": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/is-regex": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "has": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/npm/node_modules/is-retry-allowed": { + "version": "1.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/is-stream": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/is-symbol": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/npm/node_modules/is-typedarray": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/isarray": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/isexe": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/isstream": { + "version": "0.1.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/jsbn": { + "version": "0.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/npm/node_modules/json-parse-better-errors": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/json-schema": { + "version": "0.2.3", + "dev": true, + "inBundle": true + }, + "node_modules/npm/node_modules/json-schema-traverse": { + "version": "0.3.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/json-stringify-safe": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/jsonparse": { + "version": "1.3.1", + "dev": true, + "engines": [ + "node >= 0.2.0" + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/JSONStream": { + "version": "1.3.5", + "dev": true, + "inBundle": true, + "license": "(MIT OR Apache-2.0)", + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/jsprim": { + "version": "1.4.1", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "inBundle": true, + "license": "MIT", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "node_modules/npm/node_modules/latest-version": { + "version": "3.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "package-json": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/lazy-property": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/lcid": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "invert-kv": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/libcipm": { + "version": "4.0.7", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "bin-links": "^1.1.2", + "bluebird": "^3.5.1", + "figgy-pudding": "^3.5.1", + "find-npm-prefix": "^1.0.2", + "graceful-fs": "^4.1.11", + "ini": "^1.3.5", + "lock-verify": "^2.0.2", + "mkdirp": "^0.5.1", + "npm-lifecycle": "^3.0.0", + "npm-logical-tree": "^1.2.1", + "npm-package-arg": "^6.1.0", + "pacote": "^9.1.0", + "read-package-json": "^2.0.13", + "rimraf": "^2.6.2", + "worker-farm": "^1.6.0" + } + }, + "node_modules/npm/node_modules/libnpm": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "bin-links": "^1.1.2", + "bluebird": "^3.5.3", + "find-npm-prefix": "^1.0.2", + "libnpmaccess": "^3.0.2", + "libnpmconfig": "^1.2.1", + "libnpmhook": "^5.0.3", + "libnpmorg": "^1.0.1", + "libnpmpublish": "^1.1.2", + "libnpmsearch": "^2.0.2", + "libnpmteam": "^1.0.2", + "lock-verify": "^2.0.2", + "npm-lifecycle": "^3.0.0", + "npm-logical-tree": "^1.2.1", + "npm-package-arg": "^6.1.0", + "npm-profile": "^4.0.2", + "npm-registry-fetch": "^4.0.0", + "npmlog": "^4.1.2", + "pacote": "^9.5.3", + "read-package-json": "^2.0.13", + "stringify-package": "^1.0.0" + } + }, + "node_modules/npm/node_modules/libnpmaccess": { + "version": "3.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "get-stream": "^4.0.0", + "npm-package-arg": "^6.1.0", + "npm-registry-fetch": "^4.0.0" + } + }, + "node_modules/npm/node_modules/libnpmconfig": { + "version": "1.2.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "figgy-pudding": "^3.5.1", + "find-up": "^3.0.0", + "ini": "^1.3.5" + } + }, + "node_modules/npm/node_modules/libnpmconfig/node_modules/find-up": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/libnpmconfig/node_modules/locate-path": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/libnpmconfig/node_modules/p-limit": { + "version": "2.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/libnpmconfig/node_modules/p-locate": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/libnpmconfig/node_modules/p-try": { + "version": "2.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/libnpmhook": { + "version": "5.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "figgy-pudding": "^3.4.1", + "get-stream": "^4.0.0", + "npm-registry-fetch": "^4.0.0" + } + }, + "node_modules/npm/node_modules/libnpmorg": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "figgy-pudding": "^3.4.1", + "get-stream": "^4.0.0", + "npm-registry-fetch": "^4.0.0" + } + }, + "node_modules/npm/node_modules/libnpmpublish": { + "version": "1.1.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.0.0", + "lodash.clonedeep": "^4.5.0", + "normalize-package-data": "^2.4.0", + "npm-package-arg": "^6.1.0", + "npm-registry-fetch": "^4.0.0", + "semver": "^5.5.1", + "ssri": "^6.0.1" + } + }, + "node_modules/npm/node_modules/libnpmsearch": { + "version": "2.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "figgy-pudding": "^3.5.1", + "get-stream": "^4.0.0", + "npm-registry-fetch": "^4.0.0" + } + }, + "node_modules/npm/node_modules/libnpmteam": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "figgy-pudding": "^3.4.1", + "get-stream": "^4.0.0", + "npm-registry-fetch": "^4.0.0" + } + }, + "node_modules/npm/node_modules/libnpx": { + "version": "10.2.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "dotenv": "^5.0.1", + "npm-package-arg": "^6.0.0", + "rimraf": "^2.6.2", + "safe-buffer": "^5.1.0", + "update-notifier": "^2.3.0", + "which": "^1.3.0", + "y18n": "^4.0.0", + "yargs": "^11.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/locate-path": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/lock-verify": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-package-arg": "^6.1.0", + "semver": "^5.4.1" + } + }, + "node_modules/npm/node_modules/lockfile": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "signal-exit": "^3.0.2" + } + }, + "node_modules/npm/node_modules/lodash._baseindexof": { + "version": "3.1.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/lodash._baseuniq": { + "version": "4.6.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "lodash._createset": "~4.0.0", + "lodash._root": "~3.0.0" + } + }, + "node_modules/npm/node_modules/lodash._bindcallback": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/lodash._cacheindexof": { + "version": "3.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/lodash._createcache": { + "version": "3.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "lodash._getnative": "^3.0.0" + } + }, + "node_modules/npm/node_modules/lodash._createset": { + "version": "4.0.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/lodash._getnative": { + "version": "3.9.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/lodash._root": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/lodash.clonedeep": { + "version": "4.5.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/lodash.restparam": { + "version": "3.6.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/lodash.union": { + "version": "4.6.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/lodash.uniq": { + "version": "4.5.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/lodash.without": { + "version": "4.4.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/lowercase-keys": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/lru-cache": { + "version": "5.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/npm/node_modules/make-dir": { + "version": "1.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/make-fetch-happen": { + "version": "5.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "agentkeepalive": "^3.4.1", + "cacache": "^12.0.0", + "http-cache-semantics": "^3.8.1", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "node-fetch-npm": "^2.0.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^4.0.0", + "ssri": "^6.0.0" + } + }, + "node_modules/npm/node_modules/map-age-cleaner": { + "version": "0.1.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "p-defer": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/meant": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/mem": { + "version": "4.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/mem/node_modules/mimic-fn": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/mime-db": { + "version": "1.35.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm/node_modules/mime-types": { + "version": "2.1.19", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "mime-db": "~1.35.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm/node_modules/minimatch": { + "version": "3.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/minizlib": { + "version": "1.3.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^2.9.0" + } + }, + "node_modules/npm/node_modules/minizlib/node_modules/minipass": { + "version": "2.9.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "node_modules/npm/node_modules/mississippi": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/npm/node_modules/mkdirp": { + "version": "0.5.5", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/npm/node_modules/mkdirp/node_modules/minimist": { + "version": "1.2.5", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/move-concurrently": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "node_modules/npm/node_modules/move-concurrently/node_modules/aproba": { + "version": "1.2.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/ms": { + "version": "2.1.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/mute-stream": { + "version": "0.0.7", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/nice-try": { + "version": "1.0.5", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/node-fetch-npm": { + "version": "2.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "encoding": "^0.1.11", + "json-parse-better-errors": "^1.0.0", + "safe-buffer": "^5.1.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/node-gyp": { + "version": "5.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "mkdirp": "^0.5.1", + "nopt": "^4.0.1", + "npmlog": "^4.1.2", + "request": "^2.88.0", + "rimraf": "^2.6.3", + "semver": "^5.7.1", + "tar": "^4.4.12", + "which": "^1.3.1" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/npm/node_modules/nopt": { + "version": "4.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "abbrev": "1", + "osenv": "^0.1.4" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/npm/node_modules/normalize-package-data": { + "version": "2.5.0", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/npm/node_modules/normalize-package-data/node_modules/resolve": { + "version": "1.10.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "path-parse": "^1.0.6" + } + }, + "node_modules/npm/node_modules/npm-audit-report": { + "version": "1.3.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "cli-table3": "^0.5.0", + "console-control-strings": "^1.1.0" + } + }, + "node_modules/npm/node_modules/npm-bundled": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/npm/node_modules/npm-cache-filename": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/npm-install-checks": { + "version": "3.0.2", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "semver": "^2.3.0 || 3.x || 4 || 5" + } + }, + "node_modules/npm/node_modules/npm-lifecycle": { + "version": "3.1.4", + "dev": true, + "inBundle": true, + "license": "Artistic-2.0", + "dependencies": { + "byline": "^5.0.0", + "graceful-fs": "^4.1.15", + "node-gyp": "^5.0.2", + "resolve-from": "^4.0.0", + "slide": "^1.1.6", + "uid-number": "0.0.6", + "umask": "^1.1.0", + "which": "^1.3.1" + } + }, + "node_modules/npm/node_modules/npm-logical-tree": { + "version": "1.2.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/npm-package-arg": { + "version": "6.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^2.7.1", + "osenv": "^0.1.5", + "semver": "^5.6.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "node_modules/npm/node_modules/npm-packlist": { + "version": "1.4.8", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/npm/node_modules/npm-pick-manifest": { + "version": "3.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "figgy-pudding": "^3.5.1", + "npm-package-arg": "^6.0.0", + "semver": "^5.4.1" + } + }, + "node_modules/npm/node_modules/npm-profile": { + "version": "4.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.1.2 || 2", + "figgy-pudding": "^3.4.1", + "npm-registry-fetch": "^4.0.0" + } + }, + "node_modules/npm/node_modules/npm-registry-fetch": { + "version": "4.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "bluebird": "^3.5.1", + "figgy-pudding": "^3.4.1", + "JSONStream": "^1.3.4", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^5.0.0", + "npm-package-arg": "^6.1.0", + "safe-buffer": "^5.2.0" + } + }, + "node_modules/npm/node_modules/npm-registry-fetch/node_modules/safe-buffer": { + "version": "5.2.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/npm-run-path": { + "version": "2.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/npm-user-validate": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause" + }, + "node_modules/npm/node_modules/npmlog": { + "version": "4.1.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/npm/node_modules/number-is-nan": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/oauth-sign": { + "version": "0.9.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/object-assign": { + "version": "4.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/object-keys": { + "version": "1.0.12", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/npm/node_modules/object.getownpropertydescriptors": { + "version": "2.0.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/npm/node_modules/once": { + "version": "1.4.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/npm/node_modules/opener": { + "version": "1.5.1", + "dev": true, + "inBundle": true, + "license": "(WTFPL OR MIT)", + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/npm/node_modules/os-homedir": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/os-locale": { + "version": "3.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/os-locale/node_modules/cross-spawn": { + "version": "6.0.5", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/npm/node_modules/os-locale/node_modules/execa": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/os-tmpdir": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/osenv": { + "version": "0.1.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "node_modules/npm/node_modules/p-defer": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/p-finally": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/p-is-promise": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/p-limit": { + "version": "1.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/p-locate": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/p-try": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/package-json": { + "version": "4.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "got": "^6.7.1", + "registry-auth-token": "^3.0.1", + "registry-url": "^3.0.3", + "semver": "^5.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/pacote": { + "version": "9.5.12", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "bluebird": "^3.5.3", + "cacache": "^12.0.2", + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.1.0", + "glob": "^7.1.3", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^5.0.0", + "minimatch": "^3.0.4", + "minipass": "^2.3.5", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "normalize-package-data": "^2.4.0", + "npm-normalize-package-bin": "^1.0.0", + "npm-package-arg": "^6.1.0", + "npm-packlist": "^1.1.12", + "npm-pick-manifest": "^3.0.0", + "npm-registry-fetch": "^4.0.0", + "osenv": "^0.1.5", + "promise-inflight": "^1.0.1", + "promise-retry": "^1.1.1", + "protoduck": "^5.0.1", + "rimraf": "^2.6.2", + "safe-buffer": "^5.1.2", + "semver": "^5.6.0", + "ssri": "^6.0.1", + "tar": "^4.4.10", + "unique-filename": "^1.1.1", + "which": "^1.3.1" + } + }, + "node_modules/npm/node_modules/pacote/node_modules/minipass": { + "version": "2.9.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "node_modules/npm/node_modules/parallel-transform": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "node_modules/npm/node_modules/parallel-transform/node_modules/readable-stream": { + "version": "2.3.6", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/npm/node_modules/parallel-transform/node_modules/string_decoder": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/npm/node_modules/path-exists": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/path-is-absolute": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/path-is-inside": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "(WTFPL OR MIT)" + }, + "node_modules/npm/node_modules/path-key": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/path-parse": { + "version": "1.0.6", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/performance-now": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/pify": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/prepend-http": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/process-nextick-args": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/promise-inflight": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/promise-retry": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "err-code": "^1.0.0", + "retry": "^0.10.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/npm/node_modules/promise-retry/node_modules/retry": { + "version": "0.10.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/promzard": { + "version": "0.3.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "read": "1" + } + }, + "node_modules/npm/node_modules/proto-list": { + "version": "1.2.4", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/protoduck": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "genfun": "^5.0.0" + } + }, + "node_modules/npm/node_modules/prr": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/pseudomap": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/psl": { + "version": "1.1.29", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/pump": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/npm/node_modules/pumpify": { + "version": "1.5.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "node_modules/npm/node_modules/pumpify/node_modules/pump": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/npm/node_modules/punycode": { + "version": "1.4.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/qrcode-terminal": { + "version": "0.12.0", + "dev": true, + "inBundle": true, + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" + } + }, + "node_modules/npm/node_modules/qs": { + "version": "6.5.2", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/npm/node_modules/query-string": { + "version": "6.8.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "decode-uri-component": "^0.2.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/qw": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/rc": { + "version": "1.2.8", + "dev": true, + "inBundle": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/npm/node_modules/rc/node_modules/minimist": { + "version": "1.2.5", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/read": { + "version": "1.0.7", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "mute-stream": "~0.0.4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/npm/node_modules/read-cmd-shim": { + "version": "1.0.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "graceful-fs": "^4.1.2" + } + }, + "node_modules/npm/node_modules/read-installed": { + "version": "4.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "debuglog": "^1.0.1", + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "slide": "~1.1.3", + "util-extend": "^1.0.1" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.2" + } + }, + "node_modules/npm/node_modules/read-package-json": { + "version": "2.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.1", + "json-parse-better-errors": "^1.0.1", + "normalize-package-data": "^2.0.0", + "npm-normalize-package-bin": "^1.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.2" + } + }, + "node_modules/npm/node_modules/read-package-tree": { + "version": "5.3.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0", + "util-promisify": "^2.1.0" + } + }, + "node_modules/npm/node_modules/readable-stream": { + "version": "3.6.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/readdir-scoped-modules": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "node_modules/npm/node_modules/registry-auth-token": { + "version": "3.4.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/npm/node_modules/registry-url": { + "version": "3.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "rc": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/request": { + "version": "2.88.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm/node_modules/require-directory": { + "version": "2.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/require-main-filename": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/resolve-from": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/retry": { + "version": "0.12.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm/node_modules/rimraf": { + "version": "2.7.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/npm/node_modules/run-queue": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.1.1" + } + }, + "node_modules/npm/node_modules/run-queue/node_modules/aproba": { + "version": "1.2.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/safe-buffer": { + "version": "5.1.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/safer-buffer": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/semver": { + "version": "5.7.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/npm/node_modules/semver-diff": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "semver": "^5.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/set-blocking": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/sha": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "(BSD-2-Clause OR MIT)", + "dependencies": { + "graceful-fs": "^4.1.2" + } + }, + "node_modules/npm/node_modules/shebang-command": { + "version": "1.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/shebang-regex": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/signal-exit": { + "version": "3.0.2", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/slide": { + "version": "1.1.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/smart-buffer": { + "version": "4.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks": { + "version": "2.3.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ip": "1.1.5", + "smart-buffer": "^4.1.0" + }, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks-proxy-agent": { + "version": "4.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "~4.2.1", + "socks": "~2.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/socks-proxy-agent/node_modules/agent-base": { + "version": "4.2.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "es6-promisify": "^5.0.0" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/npm/node_modules/sorted-object": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "(WTFPL OR MIT)" + }, + "node_modules/npm/node_modules/sorted-union-stream": { + "version": "2.1.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "from2": "^1.3.0", + "stream-iterate": "^1.1.0" + } + }, + "node_modules/npm/node_modules/sorted-union-stream/node_modules/from2": { + "version": "1.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "inherits": "~2.0.1", + "readable-stream": "~1.1.10" + } + }, + "node_modules/npm/node_modules/sorted-union-stream/node_modules/isarray": { + "version": "0.0.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/sorted-union-stream/node_modules/readable-stream": { + "version": "1.1.14", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/npm/node_modules/sorted-union-stream/node_modules/string_decoder": { + "version": "0.10.31", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/spdx-correct": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-exceptions": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "CC-BY-3.0" + }, + "node_modules/npm/node_modules/spdx-expression-parse": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-license-ids": { + "version": "3.0.3", + "dev": true, + "inBundle": true, + "license": "CC0-1.0" + }, + "node_modules/npm/node_modules/split-on-first": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/sshpk": { + "version": "1.14.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "dashdash": "^1.12.0", + "getpass": "^0.1.1", + "safer-buffer": "^2.0.2" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + }, + "optionalDependencies": { + "bcrypt-pbkdf": "^1.0.0", + "ecc-jsbn": "~0.1.1", + "jsbn": "~0.1.0", + "tweetnacl": "~0.14.0" + } + }, + "node_modules/npm/node_modules/ssri": { + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "figgy-pudding": "^3.5.1" + } + }, + "node_modules/npm/node_modules/stream-each": { + "version": "1.2.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/npm/node_modules/stream-iterate": { + "version": "1.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "readable-stream": "^2.1.5", + "stream-shift": "^1.0.0" + } + }, + "node_modules/npm/node_modules/stream-iterate/node_modules/readable-stream": { + "version": "2.3.6", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/npm/node_modules/stream-iterate/node_modules/string_decoder": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/npm/node_modules/stream-shift": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/strict-uri-encode": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/string_decoder": { + "version": "1.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/npm/node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/string-width": { + "version": "2.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/string-width/node_modules/ansi-regex": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/string-width/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/string-width/node_modules/strip-ansi": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/stringify-package": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/strip-ansi": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/strip-eof": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/strip-json-comments": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/supports-color": { + "version": "5.4.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/tar": { + "version": "4.4.13", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + }, + "engines": { + "node": ">=4.5" + } + }, + "node_modules/npm/node_modules/tar/node_modules/minipass": { + "version": "2.9.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "node_modules/npm/node_modules/term-size": { + "version": "1.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "execa": "^0.7.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/text-table": { + "version": "0.2.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/through": { + "version": "2.3.8", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/through2": { + "version": "2.0.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + } + }, + "node_modules/npm/node_modules/through2/node_modules/readable-stream": { + "version": "2.3.6", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/npm/node_modules/through2/node_modules/string_decoder": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/npm/node_modules/timed-out": { + "version": "4.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/tiny-relative-date": { + "version": "1.3.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/tough-cookie": { + "version": "2.4.3", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/npm/node_modules/tunnel-agent": { + "version": "0.6.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/tweetnacl": { + "version": "0.14.5", + "dev": true, + "inBundle": true, + "license": "Unlicense", + "optional": true + }, + "node_modules/npm/node_modules/typedarray": { + "version": "0.0.6", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/uid-number": { + "version": "0.0.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/umask": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/unique-filename": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/npm/node_modules/unique-slug": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/npm/node_modules/unique-string": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "crypto-random-string": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/unpipe": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/npm/node_modules/unzip-response": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/update-notifier": { + "version": "2.5.0", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "boxen": "^1.2.1", + "chalk": "^2.0.1", + "configstore": "^3.0.0", + "import-lazy": "^2.1.0", + "is-ci": "^1.0.10", + "is-installed-globally": "^0.1.0", + "is-npm": "^1.0.0", + "latest-version": "^3.0.0", + "semver-diff": "^2.0.0", + "xdg-basedir": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/url-parse-lax": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "prepend-http": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/util-deprecate": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/util-extend": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/util-promisify": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "node_modules/npm/node_modules/uuid": { + "version": "3.3.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/npm/node_modules/validate-npm-package-license": { + "version": "3.0.4", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/npm/node_modules/validate-npm-package-name": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "builtins": "^1.0.3" + } + }, + "node_modules/npm/node_modules/verror": { + "version": "1.10.0", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "inBundle": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/npm/node_modules/wcwidth": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/npm/node_modules/which": { + "version": "1.3.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/npm/node_modules/which-module": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/wide-align": { + "version": "1.1.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "string-width": "^1.0.2" + } + }, + "node_modules/npm/node_modules/wide-align/node_modules/string-width": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/widest-line": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "string-width": "^2.1.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/worker-farm": { + "version": "1.7.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "errno": "~0.1.7" + } + }, + "node_modules/npm/node_modules/wrap-ansi": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/wrappy": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/write-file-atomic": { + "version": "2.4.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/npm/node_modules/xdg-basedir": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/xtend": { + "version": "4.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/npm/node_modules/y18n": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/yallist": { + "version": "3.0.3", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/yargs": { + "version": "11.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.1.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" + } + }, + "node_modules/npm/node_modules/yargs-parser": { + "version": "9.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "camelcase": "^4.1.0" + } + }, + "node_modules/npm/node_modules/yargs/node_modules/y18n": { + "version": "3.2.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-visit/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.entries": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.1.tgz", + "integrity": "sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values/node_modules/es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "dev": true, + "dependencies": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values/node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values/node_modules/has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values/node_modules/is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values/node_modules/is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values/node_modules/object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "node_modules/object.values/node_modules/string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values/node_modules/string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/opal-runtime": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/opal-runtime/-/opal-runtime-1.0.11.tgz", + "integrity": "sha512-L+6pnRvXPlDtbamBRnJAnB9mEMXmsIQ/b+0r/2xJ5/n/nxheEkLo+Pm5QNQ08LEbEN9TI6/kedhIspqRRu6tXA==", + "dev": true, + "dependencies": { + "glob": "6.0.4", + "xmlhttprequest": "1.8.0" + }, + "engines": { + "node": ">=8.11" + } + }, + "node_modules/opal-runtime/node_modules/glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "dev": true, + "dependencies": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/opencollective-postinstall": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz", + "integrity": "sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw==", + "dev": true, + "bin": { + "opencollective-postinstall": "index.js" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/os-name": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz", + "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==", + "dev": true, + "dependencies": { + "macos-release": "^2.2.0", + "windows-release": "^3.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-each-series": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.1.0.tgz", + "integrity": "sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-filter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", + "integrity": "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==", + "dev": true, + "dependencies": { + "p-map": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-is-promise": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", + "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-reduce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", + "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-retry": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.2.0.tgz", + "integrity": "sha512-jPH38/MRh263KKcq0wBNOGFJbm+U6784RilTmHjB/HM9kH9V8WlCpVUcdOmip9cjXOh6MxZ5yk1z2SjDUJfWmA==", + "dev": true, + "dependencies": { + "@types/retry": "^0.12.0", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-github-repo-url": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz", + "integrity": "sha1-nn2LslKmy2ukJZUGC3v23z28H1A=", + "dev": true + }, + "node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "node_modules/path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "dependencies": { + "node-modules-regexp": "^1.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-conf": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", + "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=", + "dev": true, + "dependencies": { + "find-up": "^2.0.0", + "load-json-file": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "dependencies": { + "find-up": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/platform": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.5.tgz", + "integrity": "sha512-TuvHS8AOIZNAlE77WUDiR4rySV/VMptyMfcfeoMgs4P8apaZM3JrnbzBiixKUv+XR6i+BXrQh8WAnjaSPFO65Q==", + "dev": true + }, + "node_modules/please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "dev": true, + "dependencies": { + "semver-compare": "^1.0.0" + } + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-format": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.0.1.tgz", + "integrity": "sha512-SWxz6MbupT3ZSlL0Po4WF/KujhQaVehijR2blyRDCzk9e45EaYMVhMBn49fnRuHxtkSpXTes1GxNpVmH86Bxfw==", + "dev": true, + "dependencies": { + "@jest/types": "^26.0.1", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/pretty-format/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pretty-format/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/pretty-format/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/prompts": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.3.2.tgz", + "integrity": "sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true, + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "node_modules/read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "dependencies": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "dependencies": { + "pify": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "dependencies": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/redeyed": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", + "integrity": "sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs=", + "dev": true, + "dependencies": { + "esprima": "~4.0.0" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true, + "optional": true + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/registry-auth-token": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.1.1.tgz", + "integrity": "sha512-9bKS7nTl9+/A1s7tnPeGrUpRcVY+LUh7bfFgzpndALdPfXQBfQV77rQVtqgUV3ti4vc/Ik81Ex8UJDWDQ12zQA==", + "dev": true, + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "node_modules/repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "dependencies": { + "is-finite": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request-promise-core": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz", + "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==", + "dev": true, + "dependencies": { + "lodash": "^4.17.15" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/request-promise-native": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz", + "integrity": "sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==", + "dev": true, + "dependencies": { + "request-promise-core": "1.1.3", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + }, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/request-promise-native/node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/request/node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", + "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + } + }, + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-global": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz", + "integrity": "sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==", + "dev": true, + "optional": true, + "dependencies": { + "global-dirs": "^0.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", + "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", + "dev": true + }, + "node_modules/rxjs": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semantic-release": { + "version": "17.0.7", + "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-17.0.7.tgz", + "integrity": "sha512-F6FzJI1yiGavzCTXir4yPthK/iozZPJ4myUYndiHhSHbmOcCSJ2m7V+P6sFwVpDpQKQp1Q31M68sTJ/Q/27Bow==", + "dev": true, + "dependencies": { + "@semantic-release/commit-analyzer": "^8.0.0", + "@semantic-release/error": "^2.2.0", + "@semantic-release/github": "^7.0.0", + "@semantic-release/npm": "^7.0.0", + "@semantic-release/release-notes-generator": "^9.0.0", + "aggregate-error": "^3.0.0", + "cosmiconfig": "^6.0.0", + "debug": "^4.0.0", + "env-ci": "^5.0.0", + "execa": "^4.0.0", + "figures": "^3.0.0", + "find-versions": "^3.0.0", + "get-stream": "^5.0.0", + "git-log-parser": "^1.2.0", + "hook-std": "^2.0.0", + "hosted-git-info": "^3.0.0", + "lodash": "^4.17.15", + "marked": "^1.0.0", + "marked-terminal": "^4.0.0", + "micromatch": "^4.0.2", + "p-each-series": "^2.1.0", + "p-reduce": "^2.0.0", + "read-pkg-up": "^7.0.0", + "resolve-from": "^5.0.0", + "semver": "^7.3.2", + "semver-diff": "^3.1.1", + "signale": "^1.2.1", + "yargs": "^15.0.1" + }, + "bin": { + "semantic-release": "bin/semantic-release.js" + }, + "engines": { + "node": ">=10.18" + } + }, + "node_modules/semantic-release/node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/cross-spawn": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", + "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/semantic-release/node_modules/debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/semantic-release/node_modules/execa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.0.1.tgz", + "integrity": "sha512-SCjM/zlBdOK8Q5TIjOn6iEHZaPHFsMoTxXQ2nvUvtPnuohz3H2dIozSg+etNR98dGoYUp2ENSKLL/XaMmbxVgw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semantic-release/node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/hosted-git-info": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.4.tgz", + "integrity": "sha512-4oT62d2jwSDBbLLFLZE+1vPuQ1h8p9wjrJ8Mqx5TjsyWmBMV5B13eJqn8pvluqubLf3cJPTfiYCIwNwDNmzScQ==", + "dev": true, + "dependencies": { + "lru-cache": "^5.1.1" + } + }, + "node_modules/semantic-release/node_modules/is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/semantic-release/node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/semantic-release/node_modules/micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/semantic-release/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/semantic-release/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/semantic-release/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/semantic-release/node_modules/parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semantic-release/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/semantic-release/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "dev": true + }, + "node_modules/semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dev": true, + "dependencies": { + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semver-diff/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/semver-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-2.0.0.tgz", + "integrity": "sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shelljs": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", + "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", + "dev": true, + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true, + "optional": true + }, + "node_modules/signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "node_modules/signale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz", + "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==", + "dev": true, + "dependencies": { + "chalk": "^2.3.2", + "figures": "^2.0.0", + "pkg-conf": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/snapdragon/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "node_modules/spawn-error-forwarder": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz", + "integrity": "sha1-Gv2Uc46ZmwNG17n8NzvlXgdXcCk=", + "dev": true + }, + "node_modules/spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "node_modules/split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split2": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", + "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", + "dev": true, + "dependencies": { + "through2": "^2.0.2" + } + }, + "node_modules/split2/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/split2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/split2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/split2/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stack-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.2.tgz", + "integrity": "sha512-0H7QK2ECz3fyZMzQ8rH0j2ykpfbnd20BFtfg/SqVC2+sCTtcw0aDTGB7dk+de4U4uUeuz6nOtJcrkFFLG1B0Rg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", + "dev": true, + "dependencies": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" + } + }, + "node_modules/stream-combiner2/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/stream-combiner2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/stream-combiner2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.0.tgz", + "integrity": "sha512-EEJnGqa/xNfIg05SxiPSqRS7S9qwDhYts1TSLR1BQfYUfPe1stofgGKvwERK9+9yf+PpfBMlpBaCHucXGPQfUA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trimend/node_modules/es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "dev": true, + "dependencies": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.trimend/node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.trimend/node_modules/has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.trimend/node_modules/is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.trimend/node_modules/is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.trimend/node_modules/object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "node_modules/string.prototype.trimend/node_modules/string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.trimend/node_modules/string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.0.tgz", + "integrity": "sha512-iCP8g01NFYiiBOnwG1Xc3WZLyoo+RuBymwIlWncShXDDJYWN6DbnM3odslBJdgCdRlq94B5s63NWAZlcn2CS4w==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trimstart/node_modules/es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "dev": true, + "dependencies": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.trimstart/node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.trimstart/node_modules/has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.trimstart/node_modules/is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.trimstart/node_modules/is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.trimstart/node_modules/object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "node_modules/string.prototype.trimstart/node_modules/string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.trimstart/node_modules/string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", + "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-color/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz", + "integrity": "sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "node_modules/table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "dependencies": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/table/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/table/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tempfile": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-3.0.0.tgz", + "integrity": "sha512-uNFCg478XovRi85iD42egu+eSFUmmka750Jy7L5tfHI5hQKKtbPnxaSaXAbBqCDYrw3wx4tXjKwci4/QmsZJxw==", + "dev": true, + "dependencies": { + "temp-dir": "^2.0.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tempy": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.5.0.tgz", + "integrity": "sha512-VEY96x7gbIRfsxqsafy2l5yVxxp3PhwAGoWMyC2D2Zt5DmEv+2tGiPOrquNRpf21hhGnKLVEsuqleqiZmKG/qw==", + "dev": true, + "dependencies": { + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.12.0", + "unique-string": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tempy/node_modules/is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.12.0.tgz", + "integrity": "sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/terminal-link/node_modules/ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "dependencies": { + "type-fest": "^0.11.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/terminal-link/node_modules/type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "node_modules/textlint-plugin-asciidoctor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/textlint-plugin-asciidoctor/-/textlint-plugin-asciidoctor-1.0.3.tgz", + "integrity": "sha512-T9ZLVLTRMNaAVO5MV9+6IS9q4gYtZTOlaCeCl+VNP55pseTYMmkQwsKd+XnPdu3WLqTSZcqLizG5H5bHysg0dw==", + "dev": true, + "dependencies": { + "asciidoctor.js": "^1.5.9" + }, + "bin": { + "asciidoc-to-textlint-ast": "bin/asciidoc-to-textlint-ast.js" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "node_modules/through2": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", + "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", + "dev": true, + "dependencies": { + "readable-stream": "2 || 3" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tough-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "dev": true, + "dependencies": { + "ip-regex": "^2.1.0", + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz", + "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/traverse": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", + "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=", + "dev": true + }, + "node_modules/trim-newlines": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.0.tgz", + "integrity": "sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/trim-off-newlines": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", + "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", + "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/uglify-js": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.8.1.tgz", + "integrity": "sha512-W7KxyzeaQmZvUFbGj4+YFshhVrMBGSg2IbcYAjGWGvx8DHvJMclbTDMpffdxFUGPBHjIytk7KJUR/KUXstUGDw==", + "dev": true, + "optional": true, + "dependencies": { + "commander": "~2.20.3", + "source-map": "~0.6.1" + }, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universal-user-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-5.0.0.tgz", + "integrity": "sha512-B5TPtzZleXyPrUMKCpEHFmVhMN6EhmJYjG5PQna9s7mXeSqGTLap4OpqLl5FCEFUI3UBmllkETwKf/db66Y54Q==", + "dev": true, + "dependencies": { + "os-name": "^3.1.0" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "node_modules/url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", + "dev": true + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", + "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", + "dev": true + }, + "node_modules/v8-to-istanbul": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-4.1.4.tgz", + "integrity": "sha512-Rw6vJHj1mbdK8edjR7+zuJrpDtKIgNdAvTSAcpYfgMIw+u2dPDntD3dgN4XQFLU2/fvFQdzj+EeSGfd/jnY5fQ==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": "8.x.x || >=10.10.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "dependencies": { + "makeerror": "1.0.x" + } + }, + "node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true, + "engines": { + "node": ">=10.4" + } + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "node_modules/which-pm-runs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", + "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", + "dev": true + }, + "node_modules/windows-release": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.3.0.tgz", + "integrity": "sha512-2HetyTg1Y+R+rUgrKeUEhAG/ZuOmTrI1NBb3ZyAGQMYmOJjBBPe4MTodghRkmLJZHwkuPi02anbeGP+Zf401LQ==", + "dev": true, + "dependencies": { + "execa": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "dependencies": { + "mkdirp": "^0.5.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "node_modules/xmlhttprequest": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", + "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yaml": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.9.2.tgz", + "integrity": "sha512-HPT7cGGI0DuRcsO51qC1j9O16Dh1mZ2bnXwsi0jrSpsLz0WxOLSLXfkABVl6bZO629py3CU+OMJtpNHDLB97kg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.9.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "15.3.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", + "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==", + "dev": true, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs-parser/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/yargs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/yargs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/yargs/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + } + }, "dependencies": { "@babel/code-frame": { "version": "7.8.3", @@ -2357,16 +22802,6 @@ } } }, - "JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dev": true, - "requires": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - } - }, "abab": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz", @@ -3723,8 +24158,8 @@ "integrity": "sha512-RSo5S0WIwXZiRxUGTPuYFbqvrR4vpJ1BDdTlthFgvHt5kEdnd1+pdvwWphWn57/oIl4V72NMmOocFqqJ8mFFhA==", "dev": true, "requires": { - "JSONStream": "^1.0.4", "is-text-path": "^1.0.1", + "JSONStream": "^1.0.4", "lodash": "^4.17.15", "meow": "^7.0.0", "split2": "^2.0.0", @@ -9142,6 +29577,16 @@ "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", "dev": true }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -9841,7 +30286,6 @@ "integrity": "sha512-CDwa3FJd0XJpKDbWCST484H+mCNjF26dPrU+xnREW+upR0UODjMEfXPl3bxWuAwZIX6c2ASg1plLO7jP8ehWeA==", "dev": true, "requires": { - "JSONStream": "^1.3.5", "abbrev": "~1.1.1", "ansicolors": "~0.3.2", "ansistyles": "~0.1.3", @@ -9882,6 +30326,7 @@ "init-package-json": "^1.10.3", "is-cidr": "^3.0.0", "json-parse-better-errors": "^1.0.2", + "JSONStream": "^1.3.5", "lazy-property": "~1.0.0", "libcipm": "^4.0.7", "libnpm": "^3.0.1", @@ -9966,15 +30411,6 @@ "write-file-atomic": "^2.4.3" }, "dependencies": { - "JSONStream": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "requires": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - } - }, "abbrev": { "version": "1.1.1", "bundled": true, @@ -11415,6 +31851,15 @@ "bundled": true, "dev": true }, + "JSONStream": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, "jsprim": { "version": "1.4.1", "bundled": true, @@ -12064,9 +32509,9 @@ "bundled": true, "dev": true, "requires": { - "JSONStream": "^1.3.4", "bluebird": "^3.5.1", "figgy-pudding": "^3.4.1", + "JSONStream": "^1.3.4", "lru-cache": "^5.1.1", "make-fetch-happen": "^5.0.0", "npm-package-arg": "^6.1.0", @@ -12919,6 +33364,21 @@ "bundled": true, "dev": true }, + "string_decoder": { + "version": "1.3.0", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.0", + "bundled": true, + "dev": true + } + } + }, "string-width": { "version": "2.1.1", "bundled": true, @@ -12948,21 +33408,6 @@ } } }, - "string_decoder": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.0", - "bundled": true, - "dev": true - } - } - }, "stringify-package": { "version": "1.0.1", "bundled": true, @@ -15279,6 +35724,15 @@ } } }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -15510,15 +35964,6 @@ } } }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", diff --git a/package.json b/package.json index 4c2e8adb..65e09fd3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dsa.js", - "version": "2.7.4", + "version": "2.7.5", "description": "Data Structures & Algorithms in JS", "author": "Adrian Mejia (https://adrianmejia.com)", "homepage": "https://github.com/amejiarosario/dsa.js", From e03875da21dbc53e4ab69e3d1c05e1a55413d814 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eray=20G=C3=BCndo=C4=9Fmu=C5=9F?= <74984741+eraygundogmus@users.noreply.github.com> Date: Mon, 13 Sep 2021 13:02:22 +0300 Subject: [PATCH 26/33] Update tree-intro.asc --- book/content/part03/tree-intro.asc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book/content/part03/tree-intro.asc b/book/content/part03/tree-intro.asc index 80d65903..94f4b88b 100644 --- a/book/content/part03/tree-intro.asc +++ b/book/content/part03/tree-intro.asc @@ -106,6 +106,6 @@ image::image35.png[image,width=258,height=169] .Heap vs. Binary Search Tree **** -Heap is better at finding max or min values in constant time *O(1)*, while a balanced BST is good a finding any element in *O(log n)*. Heaps are often used to implement priority queues, while BST is used when you need every value sorted. +Heap is better at finding max or min values in constant time *O(1)*, while a balanced BST is good at finding any element in *O(log n)*. Heaps are often used to implement priority queues, while BST is used when you need every value sorted. **** indexterm:[Runtime, Logarithmic] From 5ac3cd9edd4cb18bb4379bfdaaa9c4f770a048b4 Mon Sep 17 00:00:00 2001 From: Ivan J Date: Tue, 9 Nov 2021 11:01:12 -0500 Subject: [PATCH 27/33] Update quick-sort.asc Fixing a minor but important detail --- book/content/part04/quick-sort.asc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book/content/part04/quick-sort.asc b/book/content/part04/quick-sort.asc index 4f1cd5e0..e1a1de65 100644 --- a/book/content/part04/quick-sort.asc +++ b/book/content/part04/quick-sort.asc @@ -13,7 +13,7 @@ Quicksort is an efficient recursive sorting algorithm that uses <>. And, of course, It also outperforms simple sorting algorithms like <>, <> and <>. -Quicksort picks a "pivot" element randomly and moves all the smaller parts than the pivot to the right and the ones that are bigger to the left. It does this recursively until all the array is sorted. +Quicksort picks a "pivot" element randomly and moves all the smaller parts than the pivot to the left and the ones that are bigger to the right. It does this recursively until all the array is sorted. ===== Quicksort Implementation From ccfcfe6f039ce3f6e289d368fbdbf67e227c168c Mon Sep 17 00:00:00 2001 From: Joshua Morris Date: Sat, 27 Nov 2021 01:46:14 -0600 Subject: [PATCH 28/33] fix(graph): minor typo in bfs code documentation "bfs*" inline documentation should read "Breadth-first search" Fixes #110 --- src/data-structures/graphs/graph.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data-structures/graphs/graph.js b/src/data-structures/graphs/graph.js index 02b8d708..5342b6d3 100644 --- a/src/data-structures/graphs/graph.js +++ b/src/data-structures/graphs/graph.js @@ -134,7 +134,7 @@ class Graph { } /** - * Depth-first search + * Breadth-first search * Use a queue to visit nodes (FIFO) * @param {Node} first node to start the dfs */ From ae41553426a8d128db7958769bc8cfaa753acd23 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Tue, 30 Nov 2021 01:32:30 +0000 Subject: [PATCH 29/33] :bookmark: chore(release): 2.7.6 ## [2.7.6](https://github.com/amejiarosario/dsa.js/compare/2.7.5...2.7.6) (2021-11-30) ### Bug Fixes * **graph:** minor typo in bfs code documentation ([ccfcfe6](https://github.com/amejiarosario/dsa.js/commit/ccfcfe6f039ce3f6e289d368fbdbf67e227c168c)), closes [#110](https://github.com/amejiarosario/dsa.js/issues/110) --- CHANGELOG.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f1268e21..4e021d32 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [2.7.6](https://github.com/amejiarosario/dsa.js/compare/2.7.5...2.7.6) (2021-11-30) + + +### Bug Fixes + +* **graph:** minor typo in bfs code documentation ([ccfcfe6](https://github.com/amejiarosario/dsa.js/commit/ccfcfe6f039ce3f6e289d368fbdbf67e227c168c)), closes [#110](https://github.com/amejiarosario/dsa.js/issues/110) + ## [2.7.5](https://github.com/amejiarosario/dsa.js/compare/2.7.4...2.7.5) (2021-05-24) diff --git a/package-lock.json b/package-lock.json index 1d1cca05..961f44f2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "dsa.js", - "version": "2.7.5", + "version": "2.7.6", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "dsa.js", - "version": "2.7.4", + "version": "2.7.5", "license": "MIT", "devDependencies": { "@semantic-release/changelog": "^5.0.1", diff --git a/package.json b/package.json index 65e09fd3..73ef1563 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dsa.js", - "version": "2.7.5", + "version": "2.7.6", "description": "Data Structures & Algorithms in JS", "author": "Adrian Mejia (https://adrianmejia.com)", "homepage": "https://github.com/amejiarosario/dsa.js", From 5b49d8a8a12712328a8de9b94eba949d11553686 Mon Sep 17 00:00:00 2001 From: Gabriela Date: Thu, 19 May 2022 14:53:34 +0200 Subject: [PATCH 30/33] fix(runtimes/02-binary-search):fixes binary search iterative --- src/runtimes/02-binary-search.js | 44 ++++++--------------------- src/runtimes/02-binary-search.spec.js | 42 ++++++++++++++++++++----- 2 files changed, 44 insertions(+), 42 deletions(-) diff --git a/src/runtimes/02-binary-search.js b/src/runtimes/02-binary-search.js index 4e241b85..76203d31 100644 --- a/src/runtimes/02-binary-search.js +++ b/src/runtimes/02-binary-search.js @@ -38,50 +38,24 @@ function binarySearchRecursive(array, search, offset = 0) { * @param {string|number} search value to search for */ function binarySearchIterative(array, search) { - // console.log('binarySearchIterative', {array, search}); let start = 0; - let end = array.length; - const half = () => parseInt((end - start) / 2, 10) + start; + let end = array.length - 1; + const half = () => start + parseInt((end - start) / 2, 10); - while (end - start > 0) { + while (start <= end) { const currentIndex = half(); const current = array[currentIndex]; - if (current === search) { - return currentIndex; - } if (search > current) { - start = currentIndex; + if (current === search) return currentIndex; + + if (search > current) { + start = currentIndex + 1; } else if (search < current) { - end = currentIndex; + end = currentIndex - 1; } } return -1; } -// const binarySearch = binarySearchRecursive; -const binarySearch = binarySearchIterative; - -// function test() { -// const directory = ['Adrian', 'Bella', 'Charlotte', 'Daniel', -// 'Emma', 'Hanna', 'Isabella', 'Jayden', 'Kaylee', 'Luke', 'Mia', -// 'Nora', 'Olivia', 'Paisley', 'Riley', 'Thomas', 'Wyatt', 'Xander', 'Zoe']; -// -// const assert = require('assert'); -// assert.equal(binarySearch([], 'not found'), -1); -// assert.equal(binarySearch([1], 2), -1); -// assert.equal(binarySearch([1], 1), 0); -// assert.equal(binarySearch([1, 2, 3], 1), 0); -// assert.equal(binarySearch([1, 2, 3], 2), 1); -// assert.equal(binarySearch([1, 2, 3], 3), 2); -// assert.equal(binarySearch([1, 2, 3], 31), -1); -// assert.equal(binarySearch(directory, 'Adrian'), 0); -// assert.equal(binarySearch(directory, 'Hanna'), 5); -// assert.equal(binarySearch(directory, 'Zoe'), 18); -// assert.equal(binarySearch(directory, 'not found'), -1); -// } - -// test(); - - -module.exports = { binarySearch, binarySearchIterative, binarySearchRecursive }; +module.exports = { binarySearchIterative, binarySearchRecursive }; diff --git a/src/runtimes/02-binary-search.spec.js b/src/runtimes/02-binary-search.spec.js index 4850cd7c..e6aca91b 100644 --- a/src/runtimes/02-binary-search.spec.js +++ b/src/runtimes/02-binary-search.spec.js @@ -1,6 +1,6 @@ -const binarySearch = require('./02-binary-search').binarySearchRecursive; +const { binarySearchRecursive, binarySearchIterative } = require('./02-binary-search'); -describe('Binary Search', () => { +describe('Binary Search Recursive', () => { let array; beforeEach(() => { @@ -8,22 +8,50 @@ describe('Binary Search', () => { }); it('should find a middle element', () => { - expect(binarySearch(array, 9)).toEqual(1); + expect(binarySearchRecursive(array, 9)).toEqual(1); }); it('should find an first element', () => { - expect(binarySearch(array, 7)).toEqual(0); + expect(binarySearchRecursive(array, 7)).toEqual(0); }); it('should find the last element', () => { - expect(binarySearch(array, 23)).toEqual(3); + expect(binarySearchRecursive(array, 23)).toEqual(3); }); it('should not find an bigger element', () => { - expect(binarySearch(array, 9000)).toEqual(-1); + expect(binarySearchRecursive(array, 9000)).toEqual(-1); }); it('should find a smaller element', () => { - expect(binarySearch(array, -9)).toEqual(-1); + expect(binarySearchRecursive(array, -9)).toEqual(-1); + }); +}); + +describe('Binary Search Iterative', () => { + let array; + + beforeEach(() => { + array = [7, 9, 13, 23]; + }); + + it('should find a middle element', () => { + expect(binarySearchIterative(array, 9)).toEqual(1); + }); + + it('should find an first element', () => { + expect(binarySearchIterative(array, 7)).toEqual(0); + }); + + it('should find the last element', () => { + expect(binarySearchIterative(array, 23)).toEqual(3); + }); + + it('should not find an bigger element', () => { + expect(binarySearchIterative(array, 9000)).toEqual(-1); + }); + + it('should find a smaller element', () => { + expect(binarySearchIterative(array, -9)).toEqual(-1); }); }); From cde6e8a2291bb97e08b28dedf093942e664eaa09 Mon Sep 17 00:00:00 2001 From: Balaji Saravanan Date: Sun, 29 May 2022 12:01:08 +0530 Subject: [PATCH 31/33] Update heap.js Fix proper parent index fetching --- src/data-structures/heaps/heap.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data-structures/heaps/heap.js b/src/data-structures/heaps/heap.js index 54863c39..537894ee 100644 --- a/src/data-structures/heaps/heap.js +++ b/src/data-structures/heaps/heap.js @@ -59,7 +59,7 @@ class Heap { */ bubbleUp() { let index = this.size - 1; - const parent = (i) => Math.ceil(i / 2 - 1); + const parent = (i) => Math.ceil(i / 2) - 1; while (parent(index) >= 0 && this.comparator(parent(index), index) > 0) { this.swap(parent(index), index); index = parent(index); From c9249d38cc3809bc2c0457f35494772cb57b28b9 Mon Sep 17 00:00:00 2001 From: Adrian Mejia Date: Sat, 10 Dec 2022 16:02:51 -0500 Subject: [PATCH 32/33] chore(binary-search): consolidate test for multiple implementations --- src/runtimes/02-binary-search.js | 6 +- src/runtimes/02-binary-search.spec.js | 92 +++++++++++---------------- 2 files changed, 41 insertions(+), 57 deletions(-) diff --git a/src/runtimes/02-binary-search.js b/src/runtimes/02-binary-search.js index 76203d31..c8118160 100644 --- a/src/runtimes/02-binary-search.js +++ b/src/runtimes/02-binary-search.js @@ -18,9 +18,11 @@ function binarySearchRecursive(array, search, offset = 0) { if (current === search) { return offset + half; - } if (array.length === 1) { + } + if (array.length === 1) { return -1; - } if (search > current) { + } + if (search > current) { const right = array.slice(half); return binarySearchRecursive(right, search, offset + half); } diff --git a/src/runtimes/02-binary-search.spec.js b/src/runtimes/02-binary-search.spec.js index e6aca91b..1e8f8f56 100644 --- a/src/runtimes/02-binary-search.spec.js +++ b/src/runtimes/02-binary-search.spec.js @@ -1,57 +1,39 @@ -const { binarySearchRecursive, binarySearchIterative } = require('./02-binary-search'); - -describe('Binary Search Recursive', () => { - let array; - - beforeEach(() => { - array = [7, 9, 13, 23]; - }); - - it('should find a middle element', () => { - expect(binarySearchRecursive(array, 9)).toEqual(1); - }); - - it('should find an first element', () => { - expect(binarySearchRecursive(array, 7)).toEqual(0); - }); - - it('should find the last element', () => { - expect(binarySearchRecursive(array, 23)).toEqual(3); - }); - - it('should not find an bigger element', () => { - expect(binarySearchRecursive(array, 9000)).toEqual(-1); - }); - - it('should find a smaller element', () => { - expect(binarySearchRecursive(array, -9)).toEqual(-1); - }); -}); - -describe('Binary Search Iterative', () => { - let array; - - beforeEach(() => { - array = [7, 9, 13, 23]; - }); - - it('should find a middle element', () => { - expect(binarySearchIterative(array, 9)).toEqual(1); - }); - - it('should find an first element', () => { - expect(binarySearchIterative(array, 7)).toEqual(0); - }); - - it('should find the last element', () => { - expect(binarySearchIterative(array, 23)).toEqual(3); - }); - - it('should not find an bigger element', () => { - expect(binarySearchIterative(array, 9000)).toEqual(-1); - }); - - it('should find a smaller element', () => { - expect(binarySearchIterative(array, -9)).toEqual(-1); +const { + binarySearchRecursive, + binarySearchIterative, +} = require("./02-binary-search"); + +const binarySearchImplementations = [ + binarySearchRecursive, + binarySearchIterative, +]; + +binarySearchImplementations.forEach((binarySearchImpl) => { + describe(binarySearchImpl.name, () => { + let array; + + beforeEach(() => { + array = [7, 9, 13, 23]; + }); + + it("should find a middle element", () => { + expect(binarySearchImpl(array, 9)).toEqual(1); + }); + + it("should find an first element", () => { + expect(binarySearchImpl(array, 7)).toEqual(0); + }); + + it("should find the last element", () => { + expect(binarySearchImpl(array, 23)).toEqual(3); + }); + + it("should not find an bigger element", () => { + expect(binarySearchImpl(array, 9000)).toEqual(-1); + }); + + it("should find a smaller element", () => { + expect(binarySearchImpl(array, -9)).toEqual(-1); + }); }); }); From fefb06a6b51a7699cb3986ed2d20dc0d03511055 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ca=C3=ADque=20de=20Castro=20Soares=20da=20Silva?= Date: Mon, 26 Dec 2022 17:45:05 -0300 Subject: [PATCH 33/33] Fix return of unshift method Fix return of unshift method --- book/content/part02/array.asc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book/content/part02/array.asc b/book/content/part02/array.asc index 3bde2929..25c029ee 100644 --- a/book/content/part02/array.asc +++ b/book/content/part02/array.asc @@ -73,7 +73,7 @@ Here's an example: [source, javascript] ---- const array = [2, 5, 1]; -array.unshift(0); // ↪️ 8 +array.unshift(0); // ↪️ 4 console.log(array); // [ 0, 2, 5, 1 ] array.unshift(-2, -1); // ↪️ 6 console.log(array); // [ -2, -1, 0, 2, 5, 1 ]

    -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 literal 0 HcmV?d00001 diff --git a/book/images/sllx4.png b/book/images/sllx4.png new file mode 100644 index 0000000000000000000000000000000000000000..ffc58cc4ec06d6d8cf7bebca8e72cafcfda16add GIT binary patch literal 5409 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 TJvJzdAOu`Dff`psJRbcAXxs-r literal 0 HcmV?d00001 diff --git a/book/interview-questions/daily-temperatures.spec.js b/book/interview-questions/daily-temperatures.spec.js index 3ff950d7..88e046f7 100644 --- a/book/interview-questions/daily-temperatures.spec.js +++ b/book/interview-questions/daily-temperatures.spec.js @@ -1,3 +1,4 @@ +/* eslint-disable max-len */ const { dailyTemperatures } = require('./daily-temperatures'); describe('Stack: Daily Temperatures', () => { diff --git a/book/interview-questions/linkedlist-find-cycle-start.js b/book/interview-questions/linkedlist-find-cycle-start.js new file mode 100644 index 00000000..56afa687 --- /dev/null +++ b/book/interview-questions/linkedlist-find-cycle-start.js @@ -0,0 +1,39 @@ +// tag::fn[] +/** + * Find where the cycle starts or null if no loop. + * @param {Node} head - The head of the list + * @returns {Node|null} + */ +function findCycleStart(head) { + let slow = head; + let fast = head; + while (fast && fast.next) { + slow = slow.next; // slow moves 1 by 1. + fast = fast.next.next; // slow moves 2 by 2. + if (fast === slow) { // detects loop! + slow = head; // reset pointer to begining. + while (slow !== fast) { // find intersection + slow = slow.next; + fast = fast.next; // move both pointers one by one this time. + } + return slow; // return where the loop starts + } + } + return null; // not found. +} +// end::fn[] + +// tag::brute[] +function findCycleStartBrute(head) { + const visited = new Set(); + let curr = head; + while (curr) { + if (visited.has(curr)) return curr; + visited.add(curr); + curr = curr.next; + } + return null; +} +// end::brute[] + +module.exports = { findCycleStart, findCycleStartBrute }; diff --git a/book/interview-questions/linkedlist-find-cycle-start.spec.js b/book/interview-questions/linkedlist-find-cycle-start.spec.js new file mode 100644 index 00000000..3f1ab06b --- /dev/null +++ b/book/interview-questions/linkedlist-find-cycle-start.spec.js @@ -0,0 +1,25 @@ +const { findCycleStart, findCycleStartBrute } = require('./linkedlist-find-cycle-start'); +const { LinkedList } = require('../../src/index'); + +[findCycleStart, findCycleStartBrute].forEach((fn) => { + describe(`findCycleStart: ${fn.name}`, () => { + it('should work without loop', () => { + const head = new LinkedList([1, 2, 3]).first; + expect(fn(head)).toEqual(null); + }); + + it('should work with loop on first', () => { + const list = new LinkedList([1, 2, 3]); + const n1 = list.first; + list.last.next = n1; + expect(fn(list.first)).toEqual(n1); + }); + + it('should work with loop on second', () => { + const list = new LinkedList([1, 2, 3]); + const n2 = list.first.next; + list.last.next = n2; + expect(fn(list.first)).toEqual(n2); + }); + }); +}); diff --git a/book/interview-questions/linkedlist-flatten-multilevel.js b/book/interview-questions/linkedlist-flatten-multilevel.js new file mode 100644 index 00000000..30f6e07c --- /dev/null +++ b/book/interview-questions/linkedlist-flatten-multilevel.js @@ -0,0 +1,45 @@ +// tag::fn[] +/** + * Flatten a multi-level to a single level + * @param {Node} head + * @return {Node} + */ +function flatten(head) { + for (let curr = head; curr; curr = curr.next) { + if (!curr.child) continue; + + let last = curr.child; + while (last && last.next) last = last.next; // find "child"'s last + if (curr.next) { // move "next" to "child"'s last postion + last.next = curr.next; + curr.next.previous = last; + } + curr.next = curr.child; // override "next" with "child". + curr.child.previous = curr; + curr.child = null; // clean "child" pointer. + } + + return head; +} +// end::fn[] + +// tag::fn2[] +function flattenBrute(head) { + const stack = []; + for (let curr = head; curr; curr = curr.next) { + if (!curr.next && stack.length) { + curr.next = stack.pop(); // merge main thread with saved nodes. + curr.next.previous = curr; + } + if (!curr.child) continue; + if (curr.next) stack.push(curr.next); // save "next" nodes. + curr.next = curr.child; // override next pointer with "child" + curr.child.previous = curr; + curr.child = null; // clear child pointer (was moved to "next"). + } + + return head; +} +// end::fn2[] + +module.exports = { flatten, flattenBrute }; diff --git a/book/interview-questions/linkedlist-flatten-multilevel.spec.js b/book/interview-questions/linkedlist-flatten-multilevel.spec.js new file mode 100644 index 00000000..547067ac --- /dev/null +++ b/book/interview-questions/linkedlist-flatten-multilevel.spec.js @@ -0,0 +1,79 @@ +/* eslint-disable one-var, one-var-declaration-per-line, prefer-destructuring */ +const { flatten, flattenBrute } = require('./linkedlist-flatten-multilevel'); +const { LinkedList } = require('../../src/index'); +const { ListNode } = require('../../src/index'); + +class Node extends ListNode { + constructor(value) { + super(value); + this.child = null; + } +} + +// print linked list node with (previous and child) +const toString = (head) => { + const arr = []; + for (let i = head; i; i = i.next) { + arr.push(`${i.value}(${(i.previous && i.previous.value) || ''},${(i.child && i.child.value) || ''})`); + } + return `{ ${arr.join(' -> ')} }`; +}; + +const ll = (nums) => Array.from(new LinkedList(nums, Node)); + +[flatten, flattenBrute].forEach((fn) => { + describe(`flatten: ${fn.name}`, () => { + let l1, l2, l3, l4; + + beforeEach(() => { + l1 = ll([1, 2, 3]); + l2 = ll([10, 12, 14, 16]); + l3 = ll([21, 23]); + l4 = ll([36, 37]); + }); + + it('works with flat 1 level', () => { + // 1--- 2--- 3 + expect(toString(fn(l1[0]))).toEqual('{ 1(,) -> 2(1,) -> 3(2,) }'); + }); + + it('works with flat 2 levels', () => { + // 21--23 + // | + // 36--37 + l3[1].child = l4[0]; + expect(toString(l3[0])).toEqual('{ 21(,) -> 23(21,36) }'); + expect(toString(fn(l3[0]))).toEqual('{ 21(,) -> 23(21,) -> 36(23,) -> 37(36,) }'); + }); + + fit('works with flat 2 levels and reminder', () => { + // 1--- 2--- 3 + // | + // 36--37 + l1[1].child = l4[0]; + expect(toString(l1[0])).toEqual('{ 1(,) -> 2(1,36) -> 3(2,) }'); + + expect(toString(fn(l1[0]))).toEqual('{ 1(,) -> 2(1,) -> 36(2,) -> 37(36,) -> 3(37,) }'); + }); + + it('should flatten 3 levels', () => { + // 1--- 2--- 3 + // | + // 10---12---14---16 + // | | + // | 36---37 + // | + // 21--23 + l1[1].child = l2[0]; + l2[1].child = l3[0]; + l2[2].child = l4[0]; + + // verify list children are present + expect(toString(l1[0])).toEqual('{ 1(,) -> 2(1,10) -> 3(2,) }'); + expect(toString(l2[0])).toEqual('{ 10(,) -> 12(10,21) -> 14(12,36) -> 16(14,) }'); + + // run + expect(toString(fn(l1[0]))).toEqual('{ 1(,) -> 2(1,) -> 10(2,) -> 12(10,) -> 21(12,) -> 23(21,) -> 14(23,) -> 36(14,) -> 37(36,) -> 16(37,) -> 3(16,) }'); + }); + }); +}); diff --git a/book/interview-questions/linkedlist-is-palindrome.js b/book/interview-questions/linkedlist-is-palindrome.js new file mode 100644 index 00000000..6eb65f3f --- /dev/null +++ b/book/interview-questions/linkedlist-is-palindrome.js @@ -0,0 +1,39 @@ +// tag::fn[] +function isPalindrome(head) { + let slow = head; + let fast = head; + while (fast) { // use slow/fast pointers to find the middle. + slow = slow.next; + fast = fast.next && fast.next.next; + } + + const reverseList = (node) => { // use 3 pointers to reverse a linked list + let prev = null; + let curr = node; + while (curr) { + const { next } = curr; // same as: "const next = curr.next;" + curr.next = prev; + prev = curr; + curr = next; + } + return prev; + }; + + const reversed = reverseList(slow); // head of the reversed half + for (let i = reversed, j = head; i; i = i.next, j = j.next) if (i.value !== j.value) return false; + return true; +} +// end::fn[] + +// tag::fn2[] +function isPalindromeBrute(head) { + const arr = []; + for (let i = head; i; i = i.next) arr.push(i.value); // <1> + let lo = 0; + let hi = arr.length - 1; + while (lo < hi) if (arr[lo++] !== arr[hi--]) return false; // <2> + return true; +} +// end::fn2[] + +module.exports = { isPalindrome, isPalindromeBrute }; diff --git a/book/interview-questions/linkedlist-is-palindrome.spec.js b/book/interview-questions/linkedlist-is-palindrome.spec.js new file mode 100644 index 00000000..c57c300f --- /dev/null +++ b/book/interview-questions/linkedlist-is-palindrome.spec.js @@ -0,0 +1,19 @@ +const { isPalindrome, isPalindromeBrute } = require('./linkedlist-is-palindrome'); +const { LinkedList } = require('../../src'); + +const toList = (arr) => new LinkedList(arr).first; + +[isPalindrome, isPalindromeBrute].forEach((fn) => { + describe(`isPalindrome: ${fn.name}`, () => { + it('should work', () => { + expect(fn()).toEqual(true); + }); + + it('should work different cases', () => { + expect(fn(toList([1, 2, 3]))).toEqual(false); + expect(fn(toList([1, 2, 3, 2, 1]))).toEqual(true); + expect(fn(toList([1, 1, 2, 1]))).toEqual(false); + expect(fn(toList([1, 2, 2, 1]))).toEqual(true); + }); + }); +}); diff --git a/book/interview-questions/max-subarray.data.js b/book/interview-questions/max-subarray.data.js index 3fce5f6a..9222bb6e 100644 --- a/book/interview-questions/max-subarray.data.js +++ b/book/interview-questions/max-subarray.data.js @@ -1 +1,2 @@ -module.exports = [-57,9,-72,-72,-62,45,-97,24,-39,35,-82,-4,-63,1,-93,42,44,1,-75,-25,-87,-16,9,-59,20,5,-95,-41,4,-30,47,46,78,52,74,93,-3,53,17,34,-34,34,-69,-21,-87,-86,-79,56,-9,-55,-69,3,5,16,21,-75,-79,2,-39,25,72,84,-52,27,36,98,20,-90,52,-85,44,94,25,51,-27,37,41,-6,-30,-68,15,-23,11,-79,93,-68,-78,90,11,-41,-8,-17,-56,17,86,56,15,7,66,-56,-2,-13,-62,-77,-62,-12,37,55,81,-93,86,-27,-39,-3,-30,-46,6,-8,-79,-83,50,-10,-24,70,-93,-38,27,-2,45,-7,42,-57,79,56,-57,93,-56,79,48,-98,62,11,-48,-77,84,21,-47,-10,-87,-49,-17,40,40,35,10,23,97,-63,-79,19,6,39,62,-38,-27,81,-68,-7,60,79,-28,-1,-33,23,22,-48,-79,51,18,-66,-98,-98,50,41,13,-63,-59,10,-49,-38,-70,56,77,68,95,-73,26,-73,20,-14,83,91,61,-50,-9,-40,1,11,-88,-80,21,89,97,-29,8,10,-15,48,97,35,86,-96,-9,64,48,-37,90,-26,-10,-13,36,-27,-45,-3,-1,45,34,77,-66,22,73,54,11,70,-97,-81,-43,-13,44,-69,-78,30,-66,-11,-29,58,52,-61,-68,-81,25,44,-32,57,-81,66,2,52,43,35,-26,16,-33,61,-37,-54,80,-3,32,24,27,30,-69,38,-81,2,-4,47,17,5,42,-58,-51,-90,98,-33,76,-22,95,-4,89,-31,-87,-44,-69,-48,1,87,48,-90,-12,-24,39,18,-86,35,96,-14,-41,13,90,-98,32,-83,-89,7,-17,63,84,-21,-40,51,24,-51,83,31,0,-38,-5,-74,-29,59,1,87,-22,-9,-1,-49,76,57,41,44,35,-27,60,23,56,-80,-14,41,-2,22,-31,99,47,-48,7,-75,13,-97,-50,61,61,27,48,-84,94,-76,-56,70,57,84,-9,-7,-66,-49,-84,89,-29,-22,7,45,-99,75,21,24,-95,-71,48,17,-92,74,-22,45,1,-97,61,-5,-74,81,-57,83,42,33,-47,75,61,-55,41,-68,22,-51,53,-1,-99,-25,-76,-95,3,48,-1,-13,23,53,-68,-76,33,92,-4,35,50,38,18,-8,-52,47,-33,-91,91,85,-60,14,-89,93,89,-89,-55,89,92,47,38,-9,-66,-39,-79,-58,-39,53,-65,56,-11,61,-29,83,-46,19,31,-3,27,-1,-18,67,-87,-8,37,79,-20,58,68,-28,-18,-17,39,-8,43,59,33,81,13,44,37,-98,6,85,84,59,4,-8,-44,-69,91,15,74,80,83,-12,59,-37,-54,5,34,27,87,-50,-81,8,-90,52,-11,-1,-4,-97,0,78,87,-39,37,-32,30,70,-1,21,-38,-50,-22,-55,15,-85,8,60,19,-81,-35,-17,-31,-40,90,-45,-88,-44,53,-15,-41,-70,-37,-77,-33,77,-9,96,24,66,-6,85,92,72,-70,7,86,14,-32,-18,33,9,64,78,68,32,-90,57,87,62,-58,-77,68,-19,-54,-65,-42,13,-68,58,-44,25,43,-52,-26,73,55,-63,-13,-77,18,96,31,-40,51,-1,91,60,-44,55,22,-26,78,-10,32,-99,2,66,13,33,25,68,-65,-32,-84,-14,-82,70,22,5,69,-59,-22,-23,0,-70,53,-32,89,85,-77,-11,-40,77,55,68,77,-43,34,-33,66,-41,-88,-98,27,-72,-13,21,74,85,-74,21,-74,-19,97,2,10,50,46,-1,13,69,87,72,23,20,40,1,76,-49,67,43,10,79,21,-86,83,84,34,34,69,37,-45,72,-82,-70,-26,27,56,97,-97,-31,66,67,-82,-11,-13,57,66,-37,85,11,82,-5,-33,3,-15,-50,-13,95,60,-66,9,-84,-94,26,-78,-44,-70,77,-47,-90,-53,95,76,-36,-38,-60,98,-72,-21,83,15,-38,-45,81,41,16,-69,-94,11,91,-84,-79,83,-79,23,-95,-24,30,58,6,39,-95,1,-8,-54,62,31,-56,67,86,-96,-18,-75,-42,-36,66,73,-29,48,-39,-61,63,-42,98,60,81,-97,-64,11,61,18,-73,42,-80,18,87,58,-51,-69,2,-88,-66,84,-63,-32,-75,79,-82,-28,27,-21,11,-33,13,9,-73,-6,-11,-61,81,-73,57,-92,45,53,25,33,11,50,40,90,62,51,74,75,-81,75,54,-86,-53,-42,-8,34,1,-95,-79,27,-24,-14,42,-66,12,-24,-58,-66,-71,43,66,17,-29,-16,7,-90,-65,-42,84,-70,-90,15,-57,-67,49,11,67,-50,-7,64,53,68,-50,-5,78,38,71,96,71,76,40,15,-7,87,98,76,96,-90,-66,57,-61,-57,-51,-41,-47,97,69,-80,-53,-61,83,76,83,-90,-29,62,47,-81,58,18,95,-2,-67,-12,-38,-92,-35,-65,-83,-25,91,-44,-5,-83,-9,47,-86,-40,43,-63,-1,3,-87,-18,12,-39,-79,-41,-21,79,53,-26,-46,63,39,16,70,80,50,87,-45,19,-80,26,35,10,-27,26,46,92,62,-55,-5,52,4,-93,-87,1,-58,-9,-20,95,42,34,58,-19,-73,5,-39,53,-31,-8,-28,-12,95,84,97,-55,10,44,-62,-51,65,32,-99,-54,16,89,47,57,-42,-96,52,99,14,-13,-43,40,69,-6,-6,-62,85,42,26,80,26,0,-74,-87,-79,-60,-38,63,71,-61,85,-13,-71,9,-78,-14,13,50,-38,-73,-85,18,44,83,-88,-85,-79,73,56,23,31,-40,-99,33,-51,97,72,-13,60,20,26,46,84,31,-45,-94,93,67,55,-45,71,69,49,15,52,37,29,50,-13,-38,-50,-82,-2,-73,27,47,-75,-24,-66,84,96,36,7,80,-56,62,62,-63,6,17,-32,-46,-13,93,45,-84,30,-26,42,-82,13,92,-88,-89,-81,16,34,-57,91,45,-95,87,-42,11,44,2,-50,6,15,33,-76,83,86,-13,76,32,-21,-16,82,-78,-22,-28,90,-34,-40,-91,81,93,-71,73,15,-90,37,73,-3,-41,-48,47,64,66,-43,64,49,-57,-72,3,51,7,63,11,28,-82,82,18,-17,-58,3,-58,-87,8,-85,27,17,28,-23,-85,86,28,38,28,-5,94,-31,-79,-86,-3,0,65,80,-60,-24,8,-43,-65,-97,40,-23,-18,81,-11,90,72,92,-16,0,-30,-25,-36,97,-87,68,-31,83,-63,-33,97,10,66,39,-10,-93,91,74,-37,-74,53,79,-21,-64,37,67,-74,9,60,9,86,-70,84,-73,-96,73,94,-50,57,-69,16,31,18,-18,-53,-92,-35,-62,59,5,-60,12,-16,19,47,-78,-14,49,7,-77,-64,-7,-71,96,19,-67,69,-10,-18,3,-2,97,-89,-84,-44,-43,99,-2,-6,58,-97,11,-29,-14,-70,94,-16,-8,44,91,15,79,-39,20,75,57,52,21,-53,-89,-98,44,84,-88,36,-82,-31,36,15,39,-29,17,-50,41,79,-21,13,-36,71,-66,-68,-37,89,-8,82,41,-74,12,-38,-50,-1,-37,70,-39,-48,7,-22,20,-57,69,-41,13,-14,-14,-68,-58,64,21,5,12,54,13,51,43,-94,11,-16,-92,99,22,-43,-2,62,-72,58,-86,11,-87,33,53,81,68,-57,-56,-46,-49,-14,95,71,67,-16,2,-19,-87,-78,-37,0,-18,-30,-1,-95,4,96,66,31,32,79,-81,44,-11,48,3,-66,90,46,-12,-81,-91,-40,66,76,20,-54,-43,9,-33,19,-91,49,88,7,30,-8,-19,-4,99,-87,-48,-82,33,40,65,-64,73,33,59,-62,28,67,-26,-29,43,71,16,99,-20,83,18,-11,9,-16,72,-61,52,-47,34,29,-58,85,23,75,2,-34,87,-48,75,46,-33,3,-9,40,73,-66,-12,-10,-89,68,-50,5,-66,58,88,82,96,18,-64,7,-53,-23,-31,69,-71,47,-88,-83,98,86,39,-35,-34,-70,82,-60,-36,-30,6,-26,-85,55,55,-75,-10,44,84,-37,-38,-80,69,-15,-27,-85,-69,-21,61,-57,-5,59,-71,-66,-98,-5,-59,60,11,4,-93,93,54,98,48,9,99,-85,-70,83,-23,-32,79,-77,52,-47,-63,60,8,97,-97,-97,33,-92,-87,11,-21,-47,-29,66,33,-45,59,-36,-47,-16,50,-48,-2,79,-64,51,-75,-85,73,76,-56,-90,13,51,83,-8,30,17,-23,20,-72,55,49,-24,-1,-17,7,-42,23,59,42,-27,87,-83,-47,99,68,-46,91,18,-93,-88,28,20,40,-12,-88,-30,-95,-12,66,-90,-79,16,-38,19,75,68,76,-2,27,-5,71,-9,12,-99,-32,-43,-46,-41,74,-40,-53,-21,79,86,67,68,-66,48,-67,99,57,-47,15,-81,71,-33,86,25,65,-10,96,36,58,-15,13,-74,41,66,-39,-7,-97,7,71,59,-6,15,27,4,-36,59,3,-79,89,95,-83,37,-38,79,-38,-96,-53,-41,39,-95,43,-71,-93,-38,71,-33,54,74,50,2,10,-79,-82,-86,24,-19,49,-95,1,38,99,-6,-24,-62,-26,14,-58,20,49,57,1,-7,63,-16,31,34,50,-15,-15,-23,86,94,-2,-96,-92,98,-39,34,-97,62,-28,78,-67,24,93,6,-61,-65,-97,87,68,-20,-43,31,63,87,-57,-10,-51,27,67,-87,-1,-35,-84,-17,-60,-23,-83,-57,-84,-34,-79,-52,89,-86,31,-95,-75,10,69,70,90,-97,1,53,67,43,-56,-84,-52,87,-72,46,-71,-79,-71,-32,-26,-77,10,-34,-12,8,-10,-46,-2,-79,-41,0,8,-95,-30,-2,83,47,-72,50,-9,-29,43,15,-65,70,-39,-37,67,-34,31,-59,-12,-82,6,75,25,96,-70,-99,93,-35,0,1,-54,69,75,-71,16,-96,56,83,-49,-1,-2,-14,-31,35,48,-86,-98,-21,-46,-34,-3,37,-58,98,10,-52,98,3,-11,-2,81,11,-33,56,16,60,36,-28,43,87,47,-81,-50,93,53,97,-93,31,-46,-40,97,27,73,-84,25,-17,-60,1,63,5,98,44,-84,-57,-23,8,79,90,57,22,54,4,17,-96,-3,-29,-99,3,78,-69,40,52,57,13,67,-40,73,83,60,36,-12,35,-43,-20,54,10,88,33,0,45,-67,-46,-51,49,-43,23,96,-65,-74,52,-35,42,4,99,-67,-28,-41,-94,-45,-81,18,43,53,74,99,-15,-39,87,-82,61,9,-73,91,58,76,-74,-19,49,-63,-17,1,1,-97,-94,-23,-65,-46,35,-83,8,53,34,-72,-16,-15,-95,68,45,91,62,-17,1,89,-48,-64,42,-46,-7,-9,-10,52,69,67,54,74,-55,65,-72,79,58,12,10,-31,17,70,53,21,38,-24,-11,-23,35,89,-34,86,-98,-92,-60,-6,-24,6,-53,-55,-26,77,-81,18,20,-77,-26,-22,11,60,47,-72,30,-23,25,-55,52,-85,22,-12,80,87,-49,59,72,-32,-47,-52,73,-24,-8,-76,-69,-13,18,50,9,92,-95,96,52,51,-98,-40,-71,26,4,57,17,-74,-78,-25,90,-50,-66,39,17,-37,86,-33,39,-45,-9,69,41,-91,-4,-73,77,0,-77,7,-48,-76,66,-43,50,-30,90,-56,-27,-87,-5,-37,-38,28,-98,55,91,64,-78,7,-81,12,-47,36,-2,48,62,-25,-75,84,81,-47,-91,24,-14,35,94,-23,78,-56,-34,-49,-17,27,78,-16,-18,46,-75,-20,-70,-80,92,-18,55,-10,-93,17,41,-68,1,0,-39,-14,-76,47,-79,94,-76,76,-62,-11,-73,20,92,81,80,-49,28,-95,30,34,-99,22,-83,55,88,99,-28,7,-69,50,-93]; +/* eslint-disable max-len */ +module.exports = [-57, 9, -72, -72, -62, 45, -97, 24, -39, 35, -82, -4, -63, 1, -93, 42, 44, 1, -75, -25, -87, -16, 9, -59, 20, 5, -95, -41, 4, -30, 47, 46, 78, 52, 74, 93, -3, 53, 17, 34, -34, 34, -69, -21, -87, -86, -79, 56, -9, -55, -69, 3, 5, 16, 21, -75, -79, 2, -39, 25, 72, 84, -52, 27, 36, 98, 20, -90, 52, -85, 44, 94, 25, 51, -27, 37, 41, -6, -30, -68, 15, -23, 11, -79, 93, -68, -78, 90, 11, -41, -8, -17, -56, 17, 86, 56, 15, 7, 66, -56, -2, -13, -62, -77, -62, -12, 37, 55, 81, -93, 86, -27, -39, -3, -30, -46, 6, -8, -79, -83, 50, -10, -24, 70, -93, -38, 27, -2, 45, -7, 42, -57, 79, 56, -57, 93, -56, 79, 48, -98, 62, 11, -48, -77, 84, 21, -47, -10, -87, -49, -17, 40, 40, 35, 10, 23, 97, -63, -79, 19, 6, 39, 62, -38, -27, 81, -68, -7, 60, 79, -28, -1, -33, 23, 22, -48, -79, 51, 18, -66, -98, -98, 50, 41, 13, -63, -59, 10, -49, -38, -70, 56, 77, 68, 95, -73, 26, -73, 20, -14, 83, 91, 61, -50, -9, -40, 1, 11, -88, -80, 21, 89, 97, -29, 8, 10, -15, 48, 97, 35, 86, -96, -9, 64, 48, -37, 90, -26, -10, -13, 36, -27, -45, -3, -1, 45, 34, 77, -66, 22, 73, 54, 11, 70, -97, -81, -43, -13, 44, -69, -78, 30, -66, -11, -29, 58, 52, -61, -68, -81, 25, 44, -32, 57, -81, 66, 2, 52, 43, 35, -26, 16, -33, 61, -37, -54, 80, -3, 32, 24, 27, 30, -69, 38, -81, 2, -4, 47, 17, 5, 42, -58, -51, -90, 98, -33, 76, -22, 95, -4, 89, -31, -87, -44, -69, -48, 1, 87, 48, -90, -12, -24, 39, 18, -86, 35, 96, -14, -41, 13, 90, -98, 32, -83, -89, 7, -17, 63, 84, -21, -40, 51, 24, -51, 83, 31, 0, -38, -5, -74, -29, 59, 1, 87, -22, -9, -1, -49, 76, 57, 41, 44, 35, -27, 60, 23, 56, -80, -14, 41, -2, 22, -31, 99, 47, -48, 7, -75, 13, -97, -50, 61, 61, 27, 48, -84, 94, -76, -56, 70, 57, 84, -9, -7, -66, -49, -84, 89, -29, -22, 7, 45, -99, 75, 21, 24, -95, -71, 48, 17, -92, 74, -22, 45, 1, -97, 61, -5, -74, 81, -57, 83, 42, 33, -47, 75, 61, -55, 41, -68, 22, -51, 53, -1, -99, -25, -76, -95, 3, 48, -1, -13, 23, 53, -68, -76, 33, 92, -4, 35, 50, 38, 18, -8, -52, 47, -33, -91, 91, 85, -60, 14, -89, 93, 89, -89, -55, 89, 92, 47, 38, -9, -66, -39, -79, -58, -39, 53, -65, 56, -11, 61, -29, 83, -46, 19, 31, -3, 27, -1, -18, 67, -87, -8, 37, 79, -20, 58, 68, -28, -18, -17, 39, -8, 43, 59, 33, 81, 13, 44, 37, -98, 6, 85, 84, 59, 4, -8, -44, -69, 91, 15, 74, 80, 83, -12, 59, -37, -54, 5, 34, 27, 87, -50, -81, 8, -90, 52, -11, -1, -4, -97, 0, 78, 87, -39, 37, -32, 30, 70, -1, 21, -38, -50, -22, -55, 15, -85, 8, 60, 19, -81, -35, -17, -31, -40, 90, -45, -88, -44, 53, -15, -41, -70, -37, -77, -33, 77, -9, 96, 24, 66, -6, 85, 92, 72, -70, 7, 86, 14, -32, -18, 33, 9, 64, 78, 68, 32, -90, 57, 87, 62, -58, -77, 68, -19, -54, -65, -42, 13, -68, 58, -44, 25, 43, -52, -26, 73, 55, -63, -13, -77, 18, 96, 31, -40, 51, -1, 91, 60, -44, 55, 22, -26, 78, -10, 32, -99, 2, 66, 13, 33, 25, 68, -65, -32, -84, -14, -82, 70, 22, 5, 69, -59, -22, -23, 0, -70, 53, -32, 89, 85, -77, -11, -40, 77, 55, 68, 77, -43, 34, -33, 66, -41, -88, -98, 27, -72, -13, 21, 74, 85, -74, 21, -74, -19, 97, 2, 10, 50, 46, -1, 13, 69, 87, 72, 23, 20, 40, 1, 76, -49, 67, 43, 10, 79, 21, -86, 83, 84, 34, 34, 69, 37, -45, 72, -82, -70, -26, 27, 56, 97, -97, -31, 66, 67, -82, -11, -13, 57, 66, -37, 85, 11, 82, -5, -33, 3, -15, -50, -13, 95, 60, -66, 9, -84, -94, 26, -78, -44, -70, 77, -47, -90, -53, 95, 76, -36, -38, -60, 98, -72, -21, 83, 15, -38, -45, 81, 41, 16, -69, -94, 11, 91, -84, -79, 83, -79, 23, -95, -24, 30, 58, 6, 39, -95, 1, -8, -54, 62, 31, -56, 67, 86, -96, -18, -75, -42, -36, 66, 73, -29, 48, -39, -61, 63, -42, 98, 60, 81, -97, -64, 11, 61, 18, -73, 42, -80, 18, 87, 58, -51, -69, 2, -88, -66, 84, -63, -32, -75, 79, -82, -28, 27, -21, 11, -33, 13, 9, -73, -6, -11, -61, 81, -73, 57, -92, 45, 53, 25, 33, 11, 50, 40, 90, 62, 51, 74, 75, -81, 75, 54, -86, -53, -42, -8, 34, 1, -95, -79, 27, -24, -14, 42, -66, 12, -24, -58, -66, -71, 43, 66, 17, -29, -16, 7, -90, -65, -42, 84, -70, -90, 15, -57, -67, 49, 11, 67, -50, -7, 64, 53, 68, -50, -5, 78, 38, 71, 96, 71, 76, 40, 15, -7, 87, 98, 76, 96, -90, -66, 57, -61, -57, -51, -41, -47, 97, 69, -80, -53, -61, 83, 76, 83, -90, -29, 62, 47, -81, 58, 18, 95, -2, -67, -12, -38, -92, -35, -65, -83, -25, 91, -44, -5, -83, -9, 47, -86, -40, 43, -63, -1, 3, -87, -18, 12, -39, -79, -41, -21, 79, 53, -26, -46, 63, 39, 16, 70, 80, 50, 87, -45, 19, -80, 26, 35, 10, -27, 26, 46, 92, 62, -55, -5, 52, 4, -93, -87, 1, -58, -9, -20, 95, 42, 34, 58, -19, -73, 5, -39, 53, -31, -8, -28, -12, 95, 84, 97, -55, 10, 44, -62, -51, 65, 32, -99, -54, 16, 89, 47, 57, -42, -96, 52, 99, 14, -13, -43, 40, 69, -6, -6, -62, 85, 42, 26, 80, 26, 0, -74, -87, -79, -60, -38, 63, 71, -61, 85, -13, -71, 9, -78, -14, 13, 50, -38, -73, -85, 18, 44, 83, -88, -85, -79, 73, 56, 23, 31, -40, -99, 33, -51, 97, 72, -13, 60, 20, 26, 46, 84, 31, -45, -94, 93, 67, 55, -45, 71, 69, 49, 15, 52, 37, 29, 50, -13, -38, -50, -82, -2, -73, 27, 47, -75, -24, -66, 84, 96, 36, 7, 80, -56, 62, 62, -63, 6, 17, -32, -46, -13, 93, 45, -84, 30, -26, 42, -82, 13, 92, -88, -89, -81, 16, 34, -57, 91, 45, -95, 87, -42, 11, 44, 2, -50, 6, 15, 33, -76, 83, 86, -13, 76, 32, -21, -16, 82, -78, -22, -28, 90, -34, -40, -91, 81, 93, -71, 73, 15, -90, 37, 73, -3, -41, -48, 47, 64, 66, -43, 64, 49, -57, -72, 3, 51, 7, 63, 11, 28, -82, 82, 18, -17, -58, 3, -58, -87, 8, -85, 27, 17, 28, -23, -85, 86, 28, 38, 28, -5, 94, -31, -79, -86, -3, 0, 65, 80, -60, -24, 8, -43, -65, -97, 40, -23, -18, 81, -11, 90, 72, 92, -16, 0, -30, -25, -36, 97, -87, 68, -31, 83, -63, -33, 97, 10, 66, 39, -10, -93, 91, 74, -37, -74, 53, 79, -21, -64, 37, 67, -74, 9, 60, 9, 86, -70, 84, -73, -96, 73, 94, -50, 57, -69, 16, 31, 18, -18, -53, -92, -35, -62, 59, 5, -60, 12, -16, 19, 47, -78, -14, 49, 7, -77, -64, -7, -71, 96, 19, -67, 69, -10, -18, 3, -2, 97, -89, -84, -44, -43, 99, -2, -6, 58, -97, 11, -29, -14, -70, 94, -16, -8, 44, 91, 15, 79, -39, 20, 75, 57, 52, 21, -53, -89, -98, 44, 84, -88, 36, -82, -31, 36, 15, 39, -29, 17, -50, 41, 79, -21, 13, -36, 71, -66, -68, -37, 89, -8, 82, 41, -74, 12, -38, -50, -1, -37, 70, -39, -48, 7, -22, 20, -57, 69, -41, 13, -14, -14, -68, -58, 64, 21, 5, 12, 54, 13, 51, 43, -94, 11, -16, -92, 99, 22, -43, -2, 62, -72, 58, -86, 11, -87, 33, 53, 81, 68, -57, -56, -46, -49, -14, 95, 71, 67, -16, 2, -19, -87, -78, -37, 0, -18, -30, -1, -95, 4, 96, 66, 31, 32, 79, -81, 44, -11, 48, 3, -66, 90, 46, -12, -81, -91, -40, 66, 76, 20, -54, -43, 9, -33, 19, -91, 49, 88, 7, 30, -8, -19, -4, 99, -87, -48, -82, 33, 40, 65, -64, 73, 33, 59, -62, 28, 67, -26, -29, 43, 71, 16, 99, -20, 83, 18, -11, 9, -16, 72, -61, 52, -47, 34, 29, -58, 85, 23, 75, 2, -34, 87, -48, 75, 46, -33, 3, -9, 40, 73, -66, -12, -10, -89, 68, -50, 5, -66, 58, 88, 82, 96, 18, -64, 7, -53, -23, -31, 69, -71, 47, -88, -83, 98, 86, 39, -35, -34, -70, 82, -60, -36, -30, 6, -26, -85, 55, 55, -75, -10, 44, 84, -37, -38, -80, 69, -15, -27, -85, -69, -21, 61, -57, -5, 59, -71, -66, -98, -5, -59, 60, 11, 4, -93, 93, 54, 98, 48, 9, 99, -85, -70, 83, -23, -32, 79, -77, 52, -47, -63, 60, 8, 97, -97, -97, 33, -92, -87, 11, -21, -47, -29, 66, 33, -45, 59, -36, -47, -16, 50, -48, -2, 79, -64, 51, -75, -85, 73, 76, -56, -90, 13, 51, 83, -8, 30, 17, -23, 20, -72, 55, 49, -24, -1, -17, 7, -42, 23, 59, 42, -27, 87, -83, -47, 99, 68, -46, 91, 18, -93, -88, 28, 20, 40, -12, -88, -30, -95, -12, 66, -90, -79, 16, -38, 19, 75, 68, 76, -2, 27, -5, 71, -9, 12, -99, -32, -43, -46, -41, 74, -40, -53, -21, 79, 86, 67, 68, -66, 48, -67, 99, 57, -47, 15, -81, 71, -33, 86, 25, 65, -10, 96, 36, 58, -15, 13, -74, 41, 66, -39, -7, -97, 7, 71, 59, -6, 15, 27, 4, -36, 59, 3, -79, 89, 95, -83, 37, -38, 79, -38, -96, -53, -41, 39, -95, 43, -71, -93, -38, 71, -33, 54, 74, 50, 2, 10, -79, -82, -86, 24, -19, 49, -95, 1, 38, 99, -6, -24, -62, -26, 14, -58, 20, 49, 57, 1, -7, 63, -16, 31, 34, 50, -15, -15, -23, 86, 94, -2, -96, -92, 98, -39, 34, -97, 62, -28, 78, -67, 24, 93, 6, -61, -65, -97, 87, 68, -20, -43, 31, 63, 87, -57, -10, -51, 27, 67, -87, -1, -35, -84, -17, -60, -23, -83, -57, -84, -34, -79, -52, 89, -86, 31, -95, -75, 10, 69, 70, 90, -97, 1, 53, 67, 43, -56, -84, -52, 87, -72, 46, -71, -79, -71, -32, -26, -77, 10, -34, -12, 8, -10, -46, -2, -79, -41, 0, 8, -95, -30, -2, 83, 47, -72, 50, -9, -29, 43, 15, -65, 70, -39, -37, 67, -34, 31, -59, -12, -82, 6, 75, 25, 96, -70, -99, 93, -35, 0, 1, -54, 69, 75, -71, 16, -96, 56, 83, -49, -1, -2, -14, -31, 35, 48, -86, -98, -21, -46, -34, -3, 37, -58, 98, 10, -52, 98, 3, -11, -2, 81, 11, -33, 56, 16, 60, 36, -28, 43, 87, 47, -81, -50, 93, 53, 97, -93, 31, -46, -40, 97, 27, 73, -84, 25, -17, -60, 1, 63, 5, 98, 44, -84, -57, -23, 8, 79, 90, 57, 22, 54, 4, 17, -96, -3, -29, -99, 3, 78, -69, 40, 52, 57, 13, 67, -40, 73, 83, 60, 36, -12, 35, -43, -20, 54, 10, 88, 33, 0, 45, -67, -46, -51, 49, -43, 23, 96, -65, -74, 52, -35, 42, 4, 99, -67, -28, -41, -94, -45, -81, 18, 43, 53, 74, 99, -15, -39, 87, -82, 61, 9, -73, 91, 58, 76, -74, -19, 49, -63, -17, 1, 1, -97, -94, -23, -65, -46, 35, -83, 8, 53, 34, -72, -16, -15, -95, 68, 45, 91, 62, -17, 1, 89, -48, -64, 42, -46, -7, -9, -10, 52, 69, 67, 54, 74, -55, 65, -72, 79, 58, 12, 10, -31, 17, 70, 53, 21, 38, -24, -11, -23, 35, 89, -34, 86, -98, -92, -60, -6, -24, 6, -53, -55, -26, 77, -81, 18, 20, -77, -26, -22, 11, 60, 47, -72, 30, -23, 25, -55, 52, -85, 22, -12, 80, 87, -49, 59, 72, -32, -47, -52, 73, -24, -8, -76, -69, -13, 18, 50, 9, 92, -95, 96, 52, 51, -98, -40, -71, 26, 4, 57, 17, -74, -78, -25, 90, -50, -66, 39, 17, -37, 86, -33, 39, -45, -9, 69, 41, -91, -4, -73, 77, 0, -77, 7, -48, -76, 66, -43, 50, -30, 90, -56, -27, -87, -5, -37, -38, 28, -98, 55, 91, 64, -78, 7, -81, 12, -47, 36, -2, 48, 62, -25, -75, 84, 81, -47, -91, 24, -14, 35, 94, -23, 78, -56, -34, -49, -17, 27, 78, -16, -18, 46, -75, -20, -70, -80, 92, -18, 55, -10, -93, 17, 41, -68, 1, 0, -39, -14, -76, 47, -79, 94, -76, 76, -62, -11, -73, 20, 92, 81, 80, -49, 28, -95, 30, 34, -99, 22, -83, 55, 88, 99, -28, 7, -69, 50, -93]; diff --git a/book/interview-questions/network-delay-time.spec.js b/book/interview-questions/network-delay-time.spec.js index 24563b4e..445f7490 100644 --- a/book/interview-questions/network-delay-time.spec.js +++ b/book/interview-questions/network-delay-time.spec.js @@ -1,3 +1,4 @@ +/* eslint-disable max-len */ const { networkDelayTime, networkDelayTimeQueue } = require('./network-delay-time'); [networkDelayTime, networkDelayTimeQueue].forEach((fn) => { @@ -9,14 +10,14 @@ const { networkDelayTime, networkDelayTimeQueue } = require('./network-delay-tim expect(fn(times, n, k)).toEqual(2); }); - fit('should work with loops', () => { + it('should work with loops', () => { const times = [[1, 2, 0], [1, 5, 10], [1, 4, 1], [2, 3, 100], [4, 5, 1], [5, 6, 1], [6, 7, 1], [7, 3, 1], [7, 5, 1]]; const n = 7; const k = 1; expect(fn(times, n, k)).toEqual(5); }); - fit('should work with loops and dead starts', () => { + it('should work with loops and dead starts', () => { const times = [[1, 2, 0], [1, 5, 10], [1, 4, 1], [2, 3, 100], [4, 5, 1], [5, 6, 1], [6, 7, 1], [7, 3, 1], [7, 5, 1]]; const n = 7; const k = 3; @@ -45,4 +46,3 @@ const { networkDelayTime, networkDelayTimeQueue } = require('./network-delay-tim }); }); }); - diff --git a/book/interview-questions/recent-counter.js b/book/interview-questions/recent-counter.js index 79eada7c..c30b4948 100644 --- a/book/interview-questions/recent-counter.js +++ b/book/interview-questions/recent-counter.js @@ -20,7 +20,6 @@ const { Queue } = require('../../src/index'); class RecentCounter { // end::description[] // tag::solution[] - queue = new Queue(); // end::solution[] // tag::description[] /** @@ -31,6 +30,7 @@ class RecentCounter { // end::description[] // tag::solution[] this.window = maxWindow; + this.queue = new Queue(); // end::solution[] // tag::description[] } @@ -44,8 +44,7 @@ class RecentCounter { // end::description[] // tag::solution[] this.queue.enqueue(timestamp); - while (timestamp - this.queue.peek() > this.window) - this.queue.dequeue(); + while (timestamp - this.queue.peek() > this.window) this.queue.dequeue(); return this.queue.size; // end::solution[] diff --git a/book/interview-questions/sort-colors.js b/book/interview-questions/sort-colors.js index daee44cb..d4f331ae 100644 --- a/book/interview-questions/sort-colors.js +++ b/book/interview-questions/sort-colors.js @@ -1,3 +1,4 @@ +/* eslint-disable no-return-assign */ // const { } = require('../../src/index'); // tag::description[] @@ -35,7 +36,8 @@ function sortColors(nums) { // tag::compact[] function sortColorsCompact(nums) { - let i = 0, lo = 0, hi = nums.length - 1; + let i = 0; let lo = 0; let + hi = nums.length - 1; const swap = (k, j) => [nums[k], nums[j]] = [nums[j], nums[k]]; while (i <= hi) { diff --git a/package-lock.json b/package-lock.json index 210a076a..dc3a55dd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -443,6 +443,50 @@ "resolve-global": "^1.0.0" } }, + "@eslint/eslintrc": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.1.tgz", + "integrity": "sha512-XRUeBZ5zBWLYgSANMpThFddrZZkEbGHgUdt5UJjZfnlN9BGCiUBrf+nvbRupSjMvqzwnQN0qwCmOxITt1cfywA==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + } + } + }, "@istanbuljs/load-nyc-config": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz", @@ -2159,9 +2203,9 @@ } }, "@types/json-schema": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz", - "integrity": "sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", + "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==", "dev": true }, "@types/minimist": { @@ -2222,70 +2266,71 @@ "dev": true }, "@typescript-eslint/experimental-utils": { - "version": "2.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.33.0.tgz", - "integrity": "sha512-qzPM2AuxtMrRq78LwyZa8Qn6gcY8obkIrBs1ehqmQADwkYzTE1Pb4y2W+U3rE/iFkSWcWHG2LS6MJfj6SmHApg==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.6.0.tgz", + "integrity": "sha512-pnh6Beh2/4xjJVNL+keP49DFHk3orDHHFylSp3WEjtgW3y1U+6l+jNnJrGlbs6qhAz5z96aFmmbUyKhunXKvKw==", "dev": true, "requires": { "@types/json-schema": "^7.0.3", - "@typescript-eslint/typescript-estree": "2.33.0", + "@typescript-eslint/scope-manager": "4.6.0", + "@typescript-eslint/types": "4.6.0", + "@typescript-eslint/typescript-estree": "4.6.0", "eslint-scope": "^5.0.0", "eslint-utils": "^2.0.0" } }, + "@typescript-eslint/scope-manager": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.6.0.tgz", + "integrity": "sha512-uZx5KvStXP/lwrMrfQQwDNvh2ppiXzz5TmyTVHb+5TfZ3sUP7U1onlz3pjoWrK9konRyFe1czyxObWTly27Ang==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.6.0", + "@typescript-eslint/visitor-keys": "4.6.0" + } + }, + "@typescript-eslint/types": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.6.0.tgz", + "integrity": "sha512-5FAgjqH68SfFG4UTtIFv+rqYJg0nLjfkjD0iv+5O27a0xEeNZ5rZNDvFGZDizlCD1Ifj7MAbSW2DPMrf0E9zjA==", + "dev": true + }, "@typescript-eslint/typescript-estree": { - "version": "2.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.33.0.tgz", - "integrity": "sha512-d8rY6/yUxb0+mEwTShCQF2zYQdLlqihukNfG9IUlLYz5y1CH6G/9XYbrxQLq3Z14RNvkCC6oe+OcFlyUpwUbkg==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.6.0.tgz", + "integrity": "sha512-s4Z9qubMrAo/tw0CbN0IN4AtfwuehGXVZM0CHNMdfYMGBDhPdwTEpBrecwhP7dRJu6d9tT9ECYNaWDHvlFSngA==", "dev": true, "requires": { + "@typescript-eslint/types": "4.6.0", + "@typescript-eslint/visitor-keys": "4.6.0", "debug": "^4.1.1", - "eslint-visitor-keys": "^1.1.0", - "glob": "^7.1.6", + "globby": "^11.0.1", "is-glob": "^4.0.1", "lodash": "^4.17.15", "semver": "^7.3.2", "tsutils": "^3.17.1" }, "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "globby": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", + "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" } }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", "dev": true }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, "semver": { "version": "7.3.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", @@ -2294,6 +2339,24 @@ } } }, + "@typescript-eslint/visitor-keys": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.6.0.tgz", + "integrity": "sha512-38Aa9Ztl0XyFPVzmutHXqDMCu15Xx8yKvUo38Gu3GhsuckCh3StPI5t2WIO9LHEsOH7MLmlGfKUisU8eW1Sjhg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.6.0", + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "dev": true + } + } + }, "JSONStream": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", @@ -2310,6 +2373,12 @@ "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==", "dev": true }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, "acorn-globals": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", @@ -2329,9 +2398,9 @@ } }, "acorn-jsx": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", - "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", "dev": true }, "acorn-walk": { @@ -2396,12 +2465,50 @@ "uri-js": "^4.2.2" } }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, "ansi-escapes": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", "dev": true }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + }, + "dependencies": { + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, "ansicolors": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", @@ -3705,6 +3812,28 @@ } } }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "crypto-random-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", @@ -3789,6 +3918,15 @@ "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", "dev": true }, + "debug": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", @@ -4047,6 +4185,15 @@ "once": "^1.4.0" } }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, "env-ci": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-5.0.2.tgz", @@ -4249,21 +4396,23 @@ } }, "eslint": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.0.0.tgz", - "integrity": "sha512-qY1cwdOxMONHJfGqw52UOpZDeqXy8xmD0u8CT6jIstil72jkhURC704W8CFyTPDPllz4z4lu0Ql1+07PG/XdIg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.12.1.tgz", + "integrity": "sha512-HlMTEdr/LicJfN08LB3nM1rRYliDXOmfoO4vj39xN6BLpFzF00hbwBoqHk8UcJ2M/3nlARZWy/mslvGEuZFvsg==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", + "@eslint/eslintrc": "^0.2.1", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.0.1", "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0", - "eslint-visitor-keys": "^1.1.0", - "espree": "^7.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.0", "esquery": "^1.2.0", "esutils": "^2.0.2", "file-entry-cache": "^5.0.1", @@ -4273,12 +4422,11 @@ "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", "is-glob": "^4.0.0", "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.14", + "lodash": "^4.17.19", "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", @@ -4292,228 +4440,78 @@ "v8-compile-cache": "^2.0.3" }, "dependencies": { - "ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", - "dev": true, - "requires": { - "type-fest": "^0.11.0" - } - }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, "chalk": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", - "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "cross-spawn": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", - "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "requires": { - "escape-string-regexp": "^1.0.5" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" } }, - "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, "requires": { - "is-glob": "^4.0.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "inquirer": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", - "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^3.0.0", - "cli-cursor": "^3.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.15", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.5.3", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" + "eslint-visitor-keys": "^1.1.0" }, "dependencies": { - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true } } }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "eslint-visitor-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", "dev": true }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "requires": { - "is-extglob": "^2.1.1" + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } } }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", "dev": true }, - "onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, "semver": { "version": "7.3.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, "strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", @@ -4524,34 +4522,10 @@ } }, "strip-json-comments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz", - "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==", - "dev": true - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } } } }, @@ -4677,12 +4651,12 @@ } }, "eslint-plugin-jest": { - "version": "23.11.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-23.11.0.tgz", - "integrity": "sha512-qedvh6mcMgoLFHjITtG40yKOCu5Fa1GMYesDOclU30ZvtVkf+DaH0fnCn1ysOX/QMdk2SGhQvxvYLowcLaM0GA==", + "version": "24.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-24.1.0.tgz", + "integrity": "sha512-827YJ+E8B9PvXu/0eiVSNFfxxndbKv+qE/3GSMhdorCaeaOehtqHGX2YDW9B85TEOre9n/zscledkFW/KbnyGg==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "^2.5.0" + "@typescript-eslint/experimental-utils": "^4.0.1" } }, "eslint-scope": { @@ -4711,20 +4685,20 @@ "dev": true }, "espree": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.0.0.tgz", - "integrity": "sha512-/r2XEx5Mw4pgKdyb7GNLQNsu++asx/dltf/CI8RFi9oGHxmQFgvLbc5Op4U6i8Oaj+kdslhJtVlEZeAqH5qOTw==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz", + "integrity": "sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==", "dev": true, "requires": { - "acorn": "^7.1.1", + "acorn": "^7.4.0", "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" + "eslint-visitor-keys": "^1.3.0" }, "dependencies": { - "acorn": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz", - "integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==", + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true } } @@ -4745,9 +4719,9 @@ }, "dependencies": { "estraverse": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", - "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", "dev": true } } @@ -6021,6 +5995,15 @@ "path-is-absolute": "^1.0.0" } }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, "global-dirs": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", @@ -6745,6 +6728,12 @@ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", "dev": true }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, "is-finite": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", @@ -6757,6 +6746,15 @@ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -14868,6 +14866,34 @@ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "dev": true }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + } + } + }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -15543,6 +15569,23 @@ "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", "dev": true }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + } + } + }, "supports-hyperlinks": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz", @@ -15588,32 +15631,12 @@ "string-width": "^3.0.0" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, - "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - } - }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -16019,9 +16042,9 @@ "dev": true }, "v8-compile-cache": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", - "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", + "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", "dev": true }, "v8-to-istanbul": { diff --git a/package.json b/package.json index 4384319f..db006d2b 100644 --- a/package.json +++ b/package.json @@ -15,10 +15,11 @@ "scripts": { "test": "jest --verbose", "watch": "jest --watch --coverage", - "ci": "npx eslint src/ && jest --coverage", + "lint:base": "npx eslint --fix '{src,book/interview-questions}/**/*.js'", + "lint": "npm run lint:base -- --format codeframe", + "ci": "npm run lint:base && jest --coverage", "coverage": "jest --coverage && open coverage/lcov-report/index.html", "coverage:win": "jest --coverage && cmd.exe /C start coverage/lcov-report/index.html", - "lint": "npx eslint --fix --format codeframe src/", "semantic-release": "semantic-release", "release:check": "semantic-release --dry-run" }, @@ -40,10 +41,10 @@ "commitizen": "4.1.2", "conventional-changelog-cli": "2.0.34", "cz-conventional-changelog": "3.2.0", - "eslint": "7.0.0", + "eslint": "7.12.1", "eslint-config-airbnb-base": "14.1.0", "eslint-plugin-import": "2.20.2", - "eslint-plugin-jest": "23.11.0", + "eslint-plugin-jest": "24.1.0", "handlebars": "4.7.6", "husky": "4.2.5", "jest": "26.0.1", diff --git a/src/data-structures/linked-lists/linked-list.js b/src/data-structures/linked-lists/linked-list.js index 3b0ed6fc..987069ca 100644 --- a/src/data-structures/linked-lists/linked-list.js +++ b/src/data-structures/linked-lists/linked-list.js @@ -1,5 +1,5 @@ const util = require('util'); -const Node = require('./node'); +const Node = require('./node'); // Doubly // tag::constructor[] /** @@ -7,10 +7,18 @@ const Node = require('./node'); * the last and first element */ class LinkedList { - constructor(iterable = []) { + constructor( + iterable = [], + // end::constructor[] + ListNode = Node, // Node class (e.g. singly, doubly, multilevel) + // tag::constructor[] + ) { this.first = null; // head/root element this.last = null; // last element of the list this.size = 0; // total number of elements in the list + // end::constructor[] + this.ListNode = ListNode; // ListNode class + // tag::constructor[] Array.from(iterable, (i) => this.addLast(i)); } @@ -20,10 +28,10 @@ class LinkedList { /** * Adds element to the begining of the list. Similar to Array.unshift * Runtime: O(1) - * @param {any} value + * @param {Node} value */ addFirst(value) { - const newNode = new Node(value); + const newNode = new this.ListNode(value); newNode.next = this.first; @@ -246,16 +254,14 @@ class LinkedList { * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators#User-defined_iterables */ * [Symbol.iterator]() { - for (let node = this.first, position = 0; - node; - position += 1, node = node.next) { - yield { node, position }; + for (let node = this.first; node; node = node.next) { + yield node; } } toString() { const parts = [...this]; // see [Symbol.iterator]() - return parts.map((n) => util.inspect(n.node.value)).join(' -> '); + return parts.map((n) => util.inspect(n.value)).join(' -> '); } /** diff --git a/src/data-structures/linked-lists/linked-list.spec.js b/src/data-structures/linked-lists/linked-list.spec.js index 4bc30182..504a3431 100644 --- a/src/data-structures/linked-lists/linked-list.spec.js +++ b/src/data-structures/linked-lists/linked-list.spec.js @@ -429,5 +429,24 @@ describe('LinkedList Test', () => { expect(linkedList.toString()).toBe("'a' -> 2 -> 'c' -> { k: 4, v: 'd' }"); }); }); + + + describe('iterator', () => { + let a; + let b; + let c; + let d; + beforeEach(() => { + a = linkedList.addLast('a'); + b = linkedList.addLast('b'); + c = linkedList.addLast('c'); + d = linkedList.addLast('d'); + }); + + it('should convert to array of nodes', () => { + expect([...linkedList]).toEqual([a, b, c, d]); + expect(Array.from(linkedList)).toEqual([a, b, c, d]); + }); + }); }); }); diff --git a/src/data-structures/linked-lists/node.js b/src/data-structures/linked-lists/node.js index ea09b473..0d3147f5 100644 --- a/src/data-structures/linked-lists/node.js +++ b/src/data-structures/linked-lists/node.js @@ -1,14 +1,18 @@ // tag::snippet[] /** - * Node with reference to next and previous element + * Linked List Node */ +// tag::singly[] class Node { constructor(value = null) { this.value = value; this.next = null; - this.previous = null; // for doubly linked list + // end::singly[] + this.previous = null; // if doubly linked list + // tag::singly[] } } +// end::singly[] // end::snippet[] module.exports = Node; diff --git a/src/index.js b/src/index.js index 9d8e8a4a..449b034f 100644 --- a/src/index.js +++ b/src/index.js @@ -1,5 +1,6 @@ // data structures const LinkedList = require('./data-structures/linked-lists/linked-list'); +const ListNode = require('./data-structures/linked-lists/node'); const Queue = require('./data-structures/queues/queue'); const Stack = require('./data-structures/stacks/stack'); const Graph = require('./data-structures/graphs/graph'); @@ -29,6 +30,7 @@ const mergeSort = require('./algorithms/sorting/merge-sort'); module.exports = { LinkedList, + ListNode, Queue, Stack, Graph, From 571834a848d3b4c7d0dd8a94957b73724f3756ac Mon Sep 17 00:00:00 2001 From: Adrian Mejia Date: Wed, 28 Oct 2020 16:38:12 -0400 Subject: [PATCH 03/33] fix(test): refactor tests --- book/interview-questions/daily-temperatures.spec.js | 4 ++-- .../linkedlist-flatten-multilevel.spec.js | 2 +- book/interview-questions/linkedlist-same-data.spec.js | 2 +- book/interview-questions/max-subarray.spec.js | 4 ++-- book/interview-questions/merge-intervals.spec.js | 2 +- book/interview-questions/merge-lists.spec.js | 2 +- book/interview-questions/most-common-words-ii.spec.js | 4 ++-- book/interview-questions/network-delay-time.spec.js | 2 +- book/interview-questions/sort-colors.spec.js | 6 +++--- src/data-structures/custom/lru-cache.spec.js | 2 +- src/data-structures/graphs/graph.spec.js | 4 ++-- src/data-structures/graphs/node.spec.js | 2 +- src/data-structures/heaps/median-heap.spec.js | 6 +++--- src/data-structures/linked-lists/linked-list.spec.js | 6 +++--- src/data-structures/trees/binary-search-tree.spec.js | 2 +- src/data-structures/trees/binary-tree-node.spec.js | 4 ++-- 16 files changed, 27 insertions(+), 27 deletions(-) diff --git a/book/interview-questions/daily-temperatures.spec.js b/book/interview-questions/daily-temperatures.spec.js index 88e046f7..7d5de523 100644 --- a/book/interview-questions/daily-temperatures.spec.js +++ b/book/interview-questions/daily-temperatures.spec.js @@ -6,11 +6,11 @@ describe('Stack: Daily Temperatures', () => { expect(dailyTemperatures([30, 28, 50, 40, 30])).toEqual([2, 1, 0, 0, 0]); }); - it('should work', () => { + it('should work 2', () => { expect(dailyTemperatures([73, 74, 75, 71, 69, 72, 76, 73])).toEqual([1, 1, 4, 2, 1, 1, 0, 0]); }); - it('should work', () => { + it('should work 3', () => { expect(dailyTemperatures([89, 62, 70, 58, 47, 47, 46, 76, 100, 70])).toEqual([8, 1, 5, 4, 3, 2, 1, 1, 0, 0]); }); diff --git a/book/interview-questions/linkedlist-flatten-multilevel.spec.js b/book/interview-questions/linkedlist-flatten-multilevel.spec.js index 547067ac..8115f035 100644 --- a/book/interview-questions/linkedlist-flatten-multilevel.spec.js +++ b/book/interview-questions/linkedlist-flatten-multilevel.spec.js @@ -46,7 +46,7 @@ const ll = (nums) => Array.from(new LinkedList(nums, Node)); expect(toString(fn(l3[0]))).toEqual('{ 21(,) -> 23(21,) -> 36(23,) -> 37(36,) }'); }); - fit('works with flat 2 levels and reminder', () => { + it('works with flat 2 levels and reminder', () => { // 1--- 2--- 3 // | // 36--37 diff --git a/book/interview-questions/linkedlist-same-data.spec.js b/book/interview-questions/linkedlist-same-data.spec.js index c0d26830..a9933aaa 100644 --- a/book/interview-questions/linkedlist-same-data.spec.js +++ b/book/interview-questions/linkedlist-same-data.spec.js @@ -20,7 +20,7 @@ describe('Linked List: has same data', () => { expect(hasSameData(l1, l2)).toEqual(true); }); - it('should work with different data', () => { + it('should work with different data separated', () => { const l1 = new LinkedList(['he', 'll', 'o']).first; const l2 = new LinkedList(['ho', 'la']).first; expect(hasSameData(l1, l2)).toEqual(false); diff --git a/book/interview-questions/max-subarray.spec.js b/book/interview-questions/max-subarray.spec.js index 2d6a8e23..6abfb033 100644 --- a/book/interview-questions/max-subarray.spec.js +++ b/book/interview-questions/max-subarray.spec.js @@ -4,7 +4,7 @@ const largeArray = require('./max-subarray.data'); describe('Max Subarray Sum', () => { [maxSubArray, maxSubArrayBrute1, maxSubArrayBrute2].forEach((fn) => { describe(`with ${fn.name}`, () => { - it('should work with small arrays', () => { + it('should work with large arrays', () => { expect(fn([-2, 1, -3, 4, -1, 2, 1, -5, 4])).toEqual(6); }); @@ -12,7 +12,7 @@ describe('Max Subarray Sum', () => { expect(fn([1, -3, 10, -5])).toEqual(10); }); - it('should work with large arrays', () => { + it('should work with humongous arrays', () => { expect(fn(largeArray)).toEqual(4853); }); }); diff --git a/book/interview-questions/merge-intervals.spec.js b/book/interview-questions/merge-intervals.spec.js index da875e4d..efae90e9 100644 --- a/book/interview-questions/merge-intervals.spec.js +++ b/book/interview-questions/merge-intervals.spec.js @@ -21,7 +21,7 @@ const { merge } = require('./merge-intervals'); expect(actual).toEqual(expected); }); - it('should work with other case', () => { + it('should work with other case with large numbers', () => { const actual = fn([[10, 99], [20, 50], [9, 11], [98, 100]]); const expected = [[9, 100]]; expect(actual).toEqual(expected); diff --git a/book/interview-questions/merge-lists.spec.js b/book/interview-questions/merge-lists.spec.js index 4b06e8ee..650aaea0 100644 --- a/book/interview-questions/merge-lists.spec.js +++ b/book/interview-questions/merge-lists.spec.js @@ -26,7 +26,7 @@ describe('Linked List: Merge Lists', () => { expect(asString(actual)).toEqual(expected); }); - it('should handle empty list 1', () => { + it('should handle empty list 2', () => { const l1 = new LinkedList([2, 3, 4]).first; const l2 = new LinkedList().first; const actual = mergeTwoLists(l1, l2); diff --git a/book/interview-questions/most-common-words-ii.spec.js b/book/interview-questions/most-common-words-ii.spec.js index cc0499e0..6c443366 100644 --- a/book/interview-questions/most-common-words-ii.spec.js +++ b/book/interview-questions/most-common-words-ii.spec.js @@ -9,14 +9,14 @@ const { mostCommonWords, mostCommonWordsBrute } = require('./most-common-words-i )).toEqual(['keys']); }); - it('should work', () => { + it('should work 2', () => { expect(fn( 'Look at it! What is it? It does look like my code from 1 year ago', 2, )).toEqual(['it', 'look']); }); - it('should work', () => { + it('should work all puntuations', () => { expect(fn( 'a; a,b, a\'s c a!; b,b, c.', 4, diff --git a/book/interview-questions/network-delay-time.spec.js b/book/interview-questions/network-delay-time.spec.js index 445f7490..bb3440e7 100644 --- a/book/interview-questions/network-delay-time.spec.js +++ b/book/interview-questions/network-delay-time.spec.js @@ -38,7 +38,7 @@ const { networkDelayTime, networkDelayTimeQueue } = require('./network-delay-tim expect(fn(times, n, k)).toEqual(38); }); - it('should work with highly connected networks', () => { + it('should work with large highly connected networks', () => { const times = [[15, 8, 1], [7, 10, 41], [7, 9, 34], [9, 4, 31], [12, 13, 50], [14, 3, 52], [4, 11, 99], [4, 7, 86], [10, 13, 57], [9, 6, 10], [1, 7, 51], [7, 15, 38], [1, 9, 11], [12, 7, 94], [9, 13, 34], [11, 7, 79], [7, 6, 28], [5, 3, 34], [2, 6, 97], [14, 1, 97], [6, 10, 90], [12, 10, 37], [13, 3, 73], [11, 14, 7], [15, 1, 39], [6, 5, 90], [13, 6, 43], [6, 9, 32], [4, 6, 45], [11, 10, 2], [2, 13, 4], [14, 15, 29], [1, 14, 88], [14, 6, 19], [6, 2, 29], [3, 14, 72], [1, 15, 4], [11, 5, 2], [6, 7, 56], [8, 7, 88], [13, 14, 70], [14, 12, 58], [14, 2, 86], [11, 3, 57], [5, 2, 56], [3, 10, 26], [2, 11, 21], [14, 5, 54], [5, 12, 40], [14, 4, 81], [15, 2, 99], [5, 7, 57], [13, 12, 5], [4, 9, 60], [12, 15, 48], [6, 14, 1], [9, 7, 44], [13, 7, 69], [5, 13, 42], [4, 1, 7], [11, 9, 76], [8, 1, 76], [5, 14, 29], [2, 3, 69], [7, 3, 23], [12, 14, 28], [11, 4, 85], [10, 1, 10], [15, 12, 36], [1, 11, 69], [15, 10, 96], [11, 13, 69], [7, 12, 49], [1, 2, 95], [6, 4, 46], [8, 12, 94], [12, 4, 93], [13, 5, 31], [12, 2, 60], [6, 1, 87], [4, 14, 20], [5, 11, 89], [4, 15, 88], [4, 10, 21], [1, 6, 5], [10, 8, 26], [8, 2, 51], [3, 15, 23], [7, 2, 12], [11, 1, 47], [2, 1, 75], [3, 8, 63], [8, 10, 19], [6, 8, 18], [4, 2, 55], [14, 11, 80], [10, 3, 73], [3, 5, 22], [12, 3, 61], [1, 13, 33], [9, 3, 98], [9, 12, 69], [15, 9, 6], [7, 13, 76], [11, 12, 22], [11, 15, 51], [13, 15, 46], [5, 10, 58], [1, 10, 26], [13, 4, 85], [7, 14, 58], [5, 8, 46], [11, 6, 32], [10, 9, 41], [9, 14, 35], [14, 13, 60], [3, 9, 97], [2, 5, 39], [7, 11, 19], [1, 12, 27], [7, 5, 13], [8, 4, 34], [9, 15, 25], [5, 1, 93], [15, 13, 97], [14, 9, 35], [8, 6, 67], [9, 5, 39], [13, 11, 35], [7, 4, 21], [12, 9, 64], [14, 8, 8], [10, 12, 94], [8, 9, 76], [8, 5, 71], [2, 9, 64], [10, 14, 59], [1, 4, 74], [7, 1, 69], [15, 5, 55], [6, 15, 80], [13, 8, 84], [8, 13, 63], [8, 3, 91], [10, 4, 87], [1, 5, 39], [8, 11, 0], [1, 3, 79], [4, 5, 82], [4, 12, 87], [3, 11, 29], [7, 8, 92], [10, 7, 77], [6, 12, 42], [13, 2, 40], [9, 10, 13], [4, 13, 65], [2, 4, 34], [3, 13, 44], [2, 14, 69], [3, 4, 42], [5, 15, 98], [14, 7, 6], [15, 3, 94], [10, 2, 37], [15, 11, 7], [9, 2, 15], [13, 9, 66], [4, 8, 83], [8, 15, 23], [13, 1, 50], [6, 13, 57], [2, 10, 37], [10, 6, 38], [2, 7, 45], [9, 8, 8], [3, 12, 28], [3, 2, 83], [2, 12, 75], [1, 8, 91], [4, 3, 70], [12, 6, 48], [3, 1, 13], [5, 6, 42], [6, 11, 96], [3, 6, 22], [15, 6, 34], [11, 8, 43], [15, 7, 40], [9, 11, 57], [11, 2, 11], [2, 8, 22], [9, 1, 73], [2, 15, 40], [12, 11, 10], [15, 4, 78], [12, 8, 75], [10, 15, 37], [13, 10, 44], [8, 14, 33], [3, 7, 82], [5, 4, 46], [12, 5, 79], [15, 14, 43], [10, 5, 65], [5, 9, 34], [12, 1, 54], [6, 3, 16], [14, 10, 83], [10, 11, 67]]; const n = 15; const k = 8; diff --git a/book/interview-questions/sort-colors.spec.js b/book/interview-questions/sort-colors.spec.js index da394c2a..9e0fdc47 100644 --- a/book/interview-questions/sort-colors.spec.js +++ b/book/interview-questions/sort-colors.spec.js @@ -17,21 +17,21 @@ const { sortColors, sortColorsCompact } = require('./sort-colors'); expect(actual).toEqual(expected); }); - it('should work with small case', () => { + it('should work with small case1', () => { const actual = [2, 1, 2]; fn(actual); const expected = [1, 2, 2]; expect(actual).toEqual(expected); }); - it('should work with small case', () => { + it('should work with small case2', () => { const actual = [1, 0, 2]; fn(actual); const expected = [0, 1, 2]; expect(actual).toEqual(expected); }); - it('should work with small case', () => { + it('should work with small case3', () => { const actual = [2, 0, 1]; fn(actual); const expected = [0, 1, 2]; diff --git a/src/data-structures/custom/lru-cache.spec.js b/src/data-structures/custom/lru-cache.spec.js index 68b846ca..6a00202f 100644 --- a/src/data-structures/custom/lru-cache.spec.js +++ b/src/data-structures/custom/lru-cache.spec.js @@ -9,7 +9,7 @@ describe('LRU Cache', () => { expect(c).toBeDefined(); }); - it('should initialize', () => { + it('should initialize with capacity', () => { c = new LRUCache(7); expect(c.capacity).toEqual(7); }); diff --git a/src/data-structures/graphs/graph.spec.js b/src/data-structures/graphs/graph.spec.js index a4fbba7e..4ff1fb3b 100644 --- a/src/data-structures/graphs/graph.spec.js +++ b/src/data-structures/graphs/graph.spec.js @@ -252,11 +252,11 @@ describe('Graph', () => { expect(graph.areConnected('you', 'barbara')).toBe(true); }); - it('should return true if two nodes are connected', () => { + it('should return true if two nodes are connected to itself', () => { expect(graph.areConnected('you', 'you')).toBe(true); }); - it('should return true if two nodes are connected', () => { + it('should return true if two nodes are connected to other', () => { expect(graph.areConnected('you', 'John')).toBe(false); }); }); diff --git a/src/data-structures/graphs/node.spec.js b/src/data-structures/graphs/node.spec.js index 97e76b02..360480be 100644 --- a/src/data-structures/graphs/node.spec.js +++ b/src/data-structures/graphs/node.spec.js @@ -62,7 +62,7 @@ describe('Node (Graph)', () => { expect(node.isAdjacent(b)).toBe(true); }); - it('should return true if they are adjacent', () => { + it('should return true if they are adjacent on c', () => { const c = new Node('c'); expect(node.isAdjacent(c)).toBe(false); }); diff --git a/src/data-structures/heaps/median-heap.spec.js b/src/data-structures/heaps/median-heap.spec.js index 5f6de956..4f7a8a6b 100644 --- a/src/data-structures/heaps/median-heap.spec.js +++ b/src/data-structures/heaps/median-heap.spec.js @@ -13,7 +13,7 @@ describe('Median Heap', () => { expect(medianHeap.size).toEqual(1); }); - it('should work', () => { + it('should work with 2 additions', () => { expect(medianHeap.add(1)).toEqual(undefined); expect(medianHeap.add(1)).toEqual(undefined); expect(medianHeap.size).toEqual(2); @@ -30,7 +30,7 @@ describe('Median Heap', () => { expect(medianHeap.findMedian()).toEqual(10); }); - it('should work', () => { + it('should work with even numbers', () => { const values = [5, 15, 1, 3]; const medians = values.map((v) => { medianHeap.add(v); @@ -39,7 +39,7 @@ describe('Median Heap', () => { expect(medians).toEqual([5, 10, 5, 4]); }); - it('should work', () => { + it('should work with odd numbers', () => { const values = [2, 4, 7, 1, 5, 3]; const medians = values.map((v) => { medianHeap.add(v); diff --git a/src/data-structures/linked-lists/linked-list.spec.js b/src/data-structures/linked-lists/linked-list.spec.js index 504a3431..8285e316 100644 --- a/src/data-structures/linked-lists/linked-list.spec.js +++ b/src/data-structures/linked-lists/linked-list.spec.js @@ -60,13 +60,13 @@ describe('LinkedList Test', () => { }); describe('#addFirst', () => { - it('add element to the head/root of the list', () => { + it('add 1 element to the head/root of the list', () => { linkedList.addFirst('a'); expect(linkedList.first.value).toBe('a'); expect(linkedList.last.value).toBe('a'); }); - it('add element to the head/root of the list', () => { + it('add 2 elements to the head/root of the list', () => { linkedList.addFirst('a'); linkedList.addFirst('b'); expect(linkedList.first.value).toBe('b'); @@ -217,7 +217,7 @@ describe('LinkedList Test', () => { expect(linkedList.length).toBe(1); }); - it('should remove last element', () => { + it('should remove first element', () => { expect(linkedList.length).toBe(2); expect(linkedList.removeByPosition(0)).toBe(0); expect(linkedList.length).toBe(1); diff --git a/src/data-structures/trees/binary-search-tree.spec.js b/src/data-structures/trees/binary-search-tree.spec.js index 40b9601d..854e31ff 100644 --- a/src/data-structures/trees/binary-search-tree.spec.js +++ b/src/data-structures/trees/binary-search-tree.spec.js @@ -105,7 +105,7 @@ describe('Binary Search Tree', () => { expect(parent).toMatchObject({ value: 5 }); }); - it('should find future parent of a node that doesnt exist yet', () => { + it('should find future parent of a node that doesnt exist yet with -1', () => { bst.add(5); bst.add(1); const { found, parent } = bst.findNodeAndParent(-1); diff --git a/src/data-structures/trees/binary-tree-node.spec.js b/src/data-structures/trees/binary-tree-node.spec.js index d24cb5bc..675e6a01 100644 --- a/src/data-structures/trees/binary-tree-node.spec.js +++ b/src/data-structures/trees/binary-tree-node.spec.js @@ -104,12 +104,12 @@ describe('Binary Tree Node', () => { expect(p.uncle).toBe(null); }); - it('true if is parent left child', () => { + it('true if is parent left child for sibling', () => { expect(s.isParentLeftChild).toBe(true); expect(s.isParentRightChild).toBe(false); }); - it('true if is parent left child', () => { + it('true if is parent left child for child', () => { expect(c.isParentLeftChild).toBe(false); expect(c.isParentRightChild).toBe(true); }); From bd9e1e4ce087fcc0041dcd879e38a98344d42ab1 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Wed, 28 Oct 2020 20:49:24 +0000 Subject: [PATCH 04/33] :bookmark: chore(release): 2.6.0 # [2.6.0](https://github.com/amejiarosario/dsa.js/compare/2.5.1...2.6.0) (2020-10-28) ### Bug Fixes * **test:** refactor tests ([571834a](https://github.com/amejiarosario/dsa.js/commit/571834a848d3b4c7d0dd8a94957b73724f3756ac)) ### Features * **book:** add chapter numbers ([0f13f90](https://github.com/amejiarosario/dsa.js/commit/0f13f907141d0ad9bb439d131aca6d1d882421ee)) * **book/linkedlist:** linked lists techniques and common patterns ([8cd126d](https://github.com/amejiarosario/dsa.js/commit/8cd126d71a31473fefdbf0f0a9780cd7b128bcd6)) --- CHANGELOG.md | 13 +++++++++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 84973f04..b7b8367d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,16 @@ +# [2.6.0](https://github.com/amejiarosario/dsa.js/compare/2.5.1...2.6.0) (2020-10-28) + + +### Bug Fixes + +* **test:** refactor tests ([571834a](https://github.com/amejiarosario/dsa.js/commit/571834a848d3b4c7d0dd8a94957b73724f3756ac)) + + +### Features + +* **book:** add chapter numbers ([0f13f90](https://github.com/amejiarosario/dsa.js/commit/0f13f907141d0ad9bb439d131aca6d1d882421ee)) +* **book/linkedlist:** linked lists techniques and common patterns ([8cd126d](https://github.com/amejiarosario/dsa.js/commit/8cd126d71a31473fefdbf0f0a9780cd7b128bcd6)) + ## [2.5.1](https://github.com/amejiarosario/dsa.js/compare/2.5.0...2.5.1) (2020-10-23) diff --git a/package-lock.json b/package-lock.json index 4dda553d..756dd68a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "dsa.js", - "version": "2.5.1", + "version": "2.6.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 8b9adab0..d8aee567 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dsa.js", - "version": "2.5.1", + "version": "2.6.0", "description": "Data Structures & Algorithms in JS", "author": "Adrian Mejia (https://adrianmejia.com)", "homepage": "https://github.com/amejiarosario/dsa.js", From c1cf57a31fc7a698665c82c8fbd2fde7fb825078 Mon Sep 17 00:00:00 2001 From: Adrian Mejia Date: Fri, 30 Oct 2020 09:00:22 -0400 Subject: [PATCH 05/33] fix(book/set): split Set chapter into Hash Set and Tree Set for better coverage --- README.md | 4 +- book/B-self-balancing-binary-search-trees.asc | 5 +- book/D-interview-questions-solutions.asc | 8 +- book/content/part02/hash-map.asc | 3 +- book/content/part02/hash-set.asc | 188 +++++++++++ book/content/part03/binary-search-tree.asc | 4 +- book/content/part03/graph-search.asc | 5 + book/content/part03/graph.asc | 2 +- book/content/part03/set.asc | 314 ------------------ .../time-complexity-graph-data-structures.asc | 8 +- book/content/part03/tree-intro.asc | 4 +- .../part03/{treemap.asc => tree-map.asc} | 14 +- book/content/part03/tree-set.asc | 141 ++++++++ book/content/part04/algorithmic-toolbox.asc | 2 +- book/deprecated/old-set.asc | 73 ++++ book/part02-linear-data-structures.asc | 4 + book/part03-graph-data-structures.asc | 18 +- src/data-structures/maps/README.adoc | 4 +- src/data-structures/maps/hash-maps/readme.asc | 2 +- src/data-structures/maps/tree-maps/readme.asc | 2 +- src/data-structures/sets/README.adoc | 2 +- 21 files changed, 456 insertions(+), 351 deletions(-) create mode 100644 book/content/part02/hash-set.asc delete mode 100644 book/content/part03/set.asc rename book/content/part03/{treemap.asc => tree-map.asc} (93%) create mode 100644 book/content/part03/tree-set.asc create mode 100644 book/deprecated/old-set.asc diff --git a/README.md b/README.md index 52316614..f6fde2d7 100644 --- a/README.md +++ b/README.md @@ -271,8 +271,8 @@ Use Linked Lists when: #### [HashMaps](book/content/part03/map.asc) Learn how to implement different types of Maps such as: -- [HashMap](book/content/part03/hashmap.asc) -- [TreeMap](book/content/part03/treemap.asc) +- [HashMap](book/content/part02/hash-map.asc) +- [TreeMap](book/content/part03/tree-map.asc) Also, [learn the difference between the different Maps implementations](book/content/part03/time-complexity-graph-data-structures.asc): diff --git a/book/B-self-balancing-binary-search-trees.asc b/book/B-self-balancing-binary-search-trees.asc index 182bdaa4..d099b8b1 100644 --- a/book/B-self-balancing-binary-search-trees.asc +++ b/book/B-self-balancing-binary-search-trees.asc @@ -36,8 +36,8 @@ Let's go one by one. Right rotation moves a node on the right as a child of another node. -Take a look at the `@example` in the code below. -As you can see we have an unbalanced tree `4-3-2-1`. +Take a look at the examples in the code in the next section. +As you will see we have an unbalanced tree `4-3-2-1`. We want to balance the tree, for that we need to do a right rotation of node 3. So, we move node 3 as the right child of the previous child. @@ -140,4 +140,3 @@ This rotation is also referred to as `RL rotation`. === Self-balancing trees implementations So far, we have study how to make tree rotations which are the basis for self-balancing trees. There are different implementations of self-balancing trees such a Red-Black Tree and AVL Tree. - diff --git a/book/D-interview-questions-solutions.asc b/book/D-interview-questions-solutions.asc index 1e37568f..1e9a3579 100644 --- a/book/D-interview-questions-solutions.asc +++ b/book/D-interview-questions-solutions.asc @@ -438,7 +438,7 @@ The complexity of any of the BFS methods or DFS is similar. [#hashmap-q-two-sum] include::content/part02/hash-map.asc[tag=hashmap-q-two-sum] -// include::content/part03/hashmap.asc[tag=hashmap-q-two-sum] +// include::content/part02/hash-map.asc[tag=hashmap-q-two-sum] This simple problem can have many solutions; let's explore some. @@ -482,7 +482,7 @@ include::interview-questions/two-sum.js[tags=description;solution] [#hashmap-q-subarray-sum-equals-k] include::content/part02/hash-map.asc[tag=hashmap-q-subarray-sum-equals-k] -// include::content/part03/hashmap.asc[tag=hashmap-q-subarray-sum-equals-k] +// include::content/part02/hash-map.asc[tag=hashmap-q-subarray-sum-equals-k] This problem has multiple ways to solve it. Let's explore some. @@ -590,7 +590,7 @@ The sum is 1, however `sum - k` is `0`. If it doesn't exist on the map, we will [#set-q-most-common-word] -include::content/part03/set.asc[tag=set-q-most-common-word] +include::content/part02/hash-set.asc[tag=set-q-most-common-word] This problem requires multiple steps. We can use a `Set` for quickly looking up banned words. For getting the count of each word, we used a `Map`. @@ -632,7 +632,7 @@ include::interview-questions/most-common-word.js[tags=explicit] [#set-q-longest-substring-without-repeating-characters] -include::content/part03/set.asc[tag=set-q-longest-substring-without-repeating-characters] +include::content/part02/hash-set.asc[tag=set-q-longest-substring-without-repeating-characters] One of the most efficient ways to find repeating characters is using a `Map` or `Set`. Use a `Map` when you need to keep track of the count/index (e.g., string -> count) and use a `Set` when you only need to know if there are repeated characters or not. diff --git a/book/content/part02/hash-map.asc b/book/content/part02/hash-map.asc index dc8a3a8a..083f98a9 100644 --- a/book/content/part02/hash-map.asc +++ b/book/content/part02/hash-map.asc @@ -5,7 +5,7 @@ endif::[] (((Map))) (((HashMap))) (((HashTable))) (((Data Structures, Linear, HashMap))) [[hashmap-chap]] -=== Hash Map +=== Map A Map is a data structure where a `key` is mapped to a `value`. It's used for a fast lookup of values based on the given key. Only one key can map to a value (no duplicates). @@ -35,6 +35,7 @@ A Map uses an array internally. It translates the key into an array's index usin JavaScript has two ways to use Maps: one uses objects (`{}`), and the other is using the built-in `Map`. +[[hashmap-examples]] .Using Objects as a HashMap. [source, javascript] ---- diff --git a/book/content/part02/hash-set.asc b/book/content/part02/hash-set.asc new file mode 100644 index 00000000..d8baa10f --- /dev/null +++ b/book/content/part02/hash-set.asc @@ -0,0 +1,188 @@ +ifndef::imagesdir[] +:imagesdir: ../../images +:codedir: ../../../src +endif::[] + +(((Set))) (((Data Structures, Non-Linear, Set))) +[[hash-set-chap]] +=== Set +Set is a data structure that allows you to store unique values. If you try to add the same value, multiple times only one instance will be added. Also, you can check very quickly if a value exists or not. Searching by value on arrays takes `O(n)`. However, searching by value on a Set takes `O(1)` on average. + +A Set can be implemented on different ways. One way it's using a <> and other is using a <>. JavaScript has a built-in Hash Set, so that' the one we are going to focus on. + +TIP: We will go more in details with <> after we cover the <>. + + +==== Set vs Array + +An array allows you to search a value by index in constant time `O(1)`, however if you don't know the index, searching a value would take you linear time `O(n)`. A Set has doesn't allow you to search value by index, but you can search by value in constant time. The `Set.add` and `Set.has` method both are `O(1)` in average. + +Take a look at the following examples: + +.Set usage example (using JavaScript built-in Set) +[source, javascript] +---- +const set = new Set(); + +set.add(1); //↪️ Set [ 1 ] +set.add(1); //↪️ Set [ 1 ] +set.add(2); //↪️ Set [ 1, 2 ] +set.add(3); //↪️ Set [ 1, 2, 3 ] +set.has(1); //↪️ true +set.delete(1); //↪️ removes 1 from the set +set.has(1); //↪️ false, 1 has been removed +set.size; //↪️ 2, we just removed one value +console.log(set); //↪️ Set(2) {2, 3} +---- + +As you can see, even if we insert the same value multiple times, it only gets added once. + +Similar to a <>, you can also insert objects and any kind of objects. However, be careful, because anything that is not a number, string or symbol would be matched by reference. Let's do some examples. + +.Using a Set with objects +[source, javascript] +---- +const set = new Set(); + +set.add({a: 1, b: 2}); +set.has({a: 1, b: 2}); // ↪️ false + +const a = {a: 1, b: 2}; +set.add(a); +set.has(a); // ↪️ true + +console.log(set); // Set { [ 1, 2, 3 ], [ 1, 2, 3 ] } +---- + +As you can see, you can't to find object using a new object (e.g. `{a: 1, b: 2}`), you need the reference to find it. +If you need to match by value, you would need to convert it to an string using `JSON.stringify`. + +.Workaround to find objects by value. +[source, javascript] +---- +const set = new Set(); + +set.add(JSON.stringify({a: 1, b: 2})); + +set.has(JSON.stringify({a: 1, b: 2})); // ↪️ true + +console.log(set); // Set { '{"a":1,"b":2}' } +---- + + +==== Removing duplicates from an array. + +One common case for a Set is to eliminate duplicates from an array. + +.Removing duplicates from an array +[source, javascript] +---- +const arr = [1, 2, 2, 1, 3, 2]; + +// convert array to set +const set = new Set(arr); +// convert set to array +const uniqueValues = Array.from(set); +// check array +console.log(uniqueValues); // [ 1, 2, 3 ] +---- + +You can also do it all in one line. + +.One-liner to remove duplicates from array. +[source, javascript] +---- +const arr = [1, 2, 2, 1, 3, 2]; +console.log([...new Set(arr)]); // [ 1, 2, 3 ] +---- + +==== Time Complexity of a Hash Set + +All operation on Hash Set are constant time on average: `O(1)`. Similar to the Hash Map, there are cases when the the Set is getting full and it would do a rehash taking `O(n)` for that one insertion. + +// tag::table[] +.Time complexity HashSet +|=== +.2+.^s| Data Structure 2+^s| Searching By .2+^.^s| Insert .2+^.^s| Delete .2+^.^s| Space Complexity +^|_Index/Key_ ^|_Value_ +| Hash Set ^|O(1) ^|- ^|O(1)* ^|O(1) ^|O(n) +|=== +{empty}* = Amortized run time. E.g. rehashing might affect run time to *O(n)*. +// end::table[] + + +==== Practice Questions +(((Interview Questions, Set))) + +// tag::set-q-most-common-word[] +===== Most common word + +*ST-1*) _Given a text and a list of banned words. +Find the most common word that is not on the banned list. +You might need to sanitize the text and strip out punctuation `?!,'.`_ +// end::set-q-most-common-word[] + +// _Seen in interviews at: Amazon._ + +Examples: + +[source, javascript] +---- +mostCommonWord( + `How much wood, would a Woodchuck chuck, + if a woodchuck could chuck?`, + ['a'], +); // woodchuck or chuck (both show up twice) + +mostCommonWord( +`It's a blue ball and its shade... Very BLUE!`, +['and']); // blue (it show up twice, "it" and "its" once) +---- + +Starter code: + +[source, javascript] +---- +include::../../interview-questions/most-common-word.js[tags=description;placeholder] +---- + + +_Solution: <>_ + + + + + + + + + + + +// tag::set-q-longest-substring-without-repeating-characters[] +===== Longest Without Repeating + +*ST-2*) _Find the length of the longest substring without repeating characters._ + +// end::set-q-longest-substring-without-repeating-characters[] + +// _Seen in interviews at: Amazon, Facebook, Bloomberg._ + +Examples: + +[source, javascript] +---- +lenLongestSubstring('aaaaa'); // 1 ('a') +lenLongestSubstring('abccdefg'); // 5 ('cdefg') +lenLongestSubstring('abc'); // 3 ('abc') +---- + +Starter code: + +[source, javascript] +---- +include::../../interview-questions/longest-substring-without-repeating-characters.js[tags=description;placeholder] +---- + + +_Solution: <>_ diff --git a/book/content/part03/binary-search-tree.asc b/book/content/part03/binary-search-tree.asc index bfe81ddc..4a051b4b 100644 --- a/book/content/part03/binary-search-tree.asc +++ b/book/content/part03/binary-search-tree.asc @@ -3,10 +3,12 @@ ifndef::imagesdir[] :codedir: ../../../src endif::[] -=== Binary Search Tree (((Binary Search Tree))) (((BST))) (((Data Structures, Non-Linear, Binary Search Tree))) +[[binary-search-tree-chap]] +=== Binary Search Tree + .To recap, the Binary Search Tree (BST) is a tree data structure that keeps the following constraints: * Each node must have at most two children. Usually referred to as "left" and "right". diff --git a/book/content/part03/graph-search.asc b/book/content/part03/graph-search.asc index 08356768..6f59d05f 100644 --- a/book/content/part03/graph-search.asc +++ b/book/content/part03/graph-search.asc @@ -187,6 +187,11 @@ graph G { c0, c1, c2 [color=midnightblue] // c3 [color=red] } + + a0, b0, c0 [label = 0] + a1, b1, c1 [label = 1] + a2, b2, c2 [label = 2] + b3, c3 [label = 3] } .... diff --git a/book/content/part03/graph.asc b/book/content/part03/graph.asc index 952c14da..68931aca 100644 --- a/book/content/part03/graph.asc +++ b/book/content/part03/graph.asc @@ -200,7 +200,7 @@ include::{codedir}/data-structures/graphs/graph.js[tag=addVertex, indent=0] If the node doesn't exist, then we create the new node and add it to a `HashMap`. -TIP: <> stores key/pair value very efficiently. Lookup is `O(1)`. +TIP: <> stores key/pair value very efficiently. Lookup is `O(1)`. The `key` is the node's value, while the `value` is the newly created node. diff --git a/book/content/part03/set.asc b/book/content/part03/set.asc deleted file mode 100644 index b1e72b07..00000000 --- a/book/content/part03/set.asc +++ /dev/null @@ -1,314 +0,0 @@ -ifndef::imagesdir[] -:imagesdir: ../../images -:codedir: ../../../src -endif::[] - -(((Set))) (((Data Structures, Non-Linear, Set))) -[[set]] -=== Set -A set is a data structure where duplicated entries are not allowed. A Set is like an array with only unique values. - -NOTE: JavaScript already has a built-in Set data structure. - -Take a look at the following -example: - -.Set usage example (using JavaScript built-in Set) -[source, javascript] ----- -const set = new Set(); - -set.add(1); //↪️ Set [ 1 ] -set.add(1); //↪️ Set [ 1 ] -set.add(2); //↪️ Set [ 1, 2 ] -set.add(3); //↪️ Set [ 1, 2, 3 ] -set.has(1); //↪️ true -set.delete(1); //↪️ removes 1 from the set -set.has(1); //↪️ false, 1 has been removed -set.size; //↪️ 2, we just removed one value -console.log(set); //↪️ Set(2) {2, 3} ----- - -As you can see, even if we insert the same value multiple times, it only gets added once. - -Can you think in a way how to implement it? - -TIP: A hint... it should perform all operations in *O(1)** or at most *O(log n)* - -If we use a `map`, we can accomplish this. However, maps use a key/value pair. If we only use the keys, we can avoid duplicates. Since in a `map` you can only have one key at a time. - -As you might remember from the <> chapter, there are two ways of implementing a `map`, and both can be used to create a `set`. Let's explore the difference between the two implementations are. - -==== HashSet vs TreeSet - -We can implement a `map` using a *balanced BST* or a *hash function*. If we use them to implement a `Set`, we would have a `HashSet` and `TreeSet`. - -* `TreeSet`, would return the values sorted in ascending order. -* `HashSet`, would return the values in insertion order. -* Operations on a `HashSet` would take on average O(1), and in the worst case (rehash is due), it would take O(n). -* Operation on a `TreeSet` is always O(log n). - -Let’s implement both! - -[[tree-set]] -==== TreeSet -(((TreeSet))) -(((Data Structures, Non-Linear, TreeSet))) -We are to use a self-balanced BST (Red-Black Tree) to implement TreeSet. - -.TreeSet's constructor method and size attribute -[source, javascript] ----- -include::{codedir}/data-structures/sets/tree-set.js[tag=constructor] -} ----- -<1> Converts an array or any iterable data structure to a set. - -An everyday use case for Sets is to remove duplicated values from an array. We can do that bypassing them in the constructor as follows: - -.Removing duplicates from an Array using a Set -[source, javascript] ----- -set = new TreeSet([1, 2, 3, 2, 1]); -expect(set.size).toBe(3); -expect(Array.from(set.keys())).toEqual([1, 2, 3]); ----- - -Ok, now let’s implement the add method. - -===== Adding elements to a TreeSet - -For adding values to the set, we `Tree.add` method. - -.TreeSet's constructor method and size attribute -[source, javascript] ----- -include::{codedir}/data-structures/sets/tree-set.js[tag=add,indent=0] ----- - -Our <> can hold duplicated values. It has a multiplicity tally to keep track of duplicates. However, we don’t dupe in a set. For that, we check if the value is already in the tree. -Don’t worry about adding extra lookups. The -`Tree.has` is also very performant *O(log n)*. - -===== Searching for values in a TreeSet - -Again, we rely on the Tree implementation to do the heavy lifting: - -.TreeSet's `has` method -[source, javascript] ----- -include::{codedir}/data-structures/sets/tree-set.js[tag=has, indent=0] ----- - -===== Deleting elements from a TreeSet - -We delete the elements from the TreeSet using the remove method of the BST. - -.TreeSet's `delete` method -[source, javascript] ----- -include::{codedir}/data-structures/sets/tree-set.js[tag=delete, indent=0] ----- - -Voilà! That’s it! - -===== Converting TreeSet to Array - -Another use case for a Set is to convert it to an array or use an iterator (for loops, forEach, …). Let’s provide the method for that: - -.TreeSet's iterator -[source, javascript] ----- -include::{codedir}/data-structures/sets/tree-set.js[tag=iterator, indent=0] ----- - -We are using the `inOrderTraversal` method of the BST to go each key in an -ascending order. - -.JavaScript Built-in `Symbol` iterator -**** -The `Symbol.iterator` built-in symbol specifies the default iterator for -an object. Used by `for...of`, `Array.from` and others. -**** - -Now we can convert from set to array and vice versa easily. For -instance: - -.TreeSet's iterator -[source, javascript] ----- -const array = [1, 1, 2, 3, 5]; - -// array to set -const set = new TreeSet(array); - -// set to array -Array.from(set); //↪️ (4) [1, 2, 3, 5] ----- - -No more duplicates in our array! - -Check out our https://github.com/amejiarosario/dsa.js/blob/f69b744a1bddd3d99243ca64b3ad46f3f2dd7342/src/data-structures/sets/tree-set.js#L12[GitHub repo for the full TreeSet implementation]. - -Let’s now implement a `HashSet`. - -[[hashset]] -==== HashSet -(((HashSet))) -(((Data Structures, Non-Linear, HashSet))) -The *HashSet* is the set implementation using a HashMap as its underlying data structure. - -The HashSet interface will be the same as the built-in `Set` or our previously implemented `TreeSet`. - -.HashSet's constructor method and size attribute -[source, javascript] ----- -include::{codedir}/data-structures/sets/hash-set.js[tag=constructor] -} ----- - -This constructor is useful for converting an array to set and initializing the `HashMap`. - -===== Inserting values to a HashSet - -To insert items in a HashSet, we use the `set` method of the `HashMap`: - -.HashSet's `add` method -[source, javascript] ----- -include::{codedir}/data-structures/sets/hash-set.js[tag=add, indent=0] -} ----- - -`HashMap` stores key/value pairs, but we only need the keys for Set, so we ignore the value. - -===== Finding values in a HashSet - -We use the method `has` to check if a value is on the `Set` or not. - -.HashSet's `has` method -[source, javascript] ----- -include::{codedir}/data-structures/sets/hash-set.js[tag=has, indent=0] ----- - -Internally, the `HashMap` will convert the key into an array index using a hash function. If there’s something in the array index bucket, it will return -true, and if it’s empty, it will be false. - -===== Deleting values from a HashSet - -For deleting a value from a hashSet, we use the HashMap’s delete method: - -.HashSet's `delete` method -[source, javascript] ----- -include::{codedir}/data-structures/sets/hash-set.js[tag=delete, indent=0] ----- - -This method has an average runtime of *O(1)*. - -==== HashSet vs HashMap Time Complexity - -We can say that `HashMap` in on average, more performant O(1) vs. O(log n). However, if a -rehash happens, it will take *O(n)* instead of *O(1)*. A `TreeSet` is always *O(log n)*. - -(((Tables, Non-Linear DS, HashSet/TreeSet complexities))) - -// also on: book/content/part03/time-complexity-graph-data-structures.asc -// tag::table[] -.Time complexity HashSet vs TreeSet -|=== -.2+.^s| Data Structure 2+^s| Searching By .2+^.^s| Insert .2+^.^s| Delete .2+^.^s| Space Complexity -^|_Index/Key_ ^|_Value_ -| HashSet ^|O(1) ^|- ^|O(1)* ^|O(1) ^|O(n) -| TreeSet ^|O(log n) ^|- ^|O(log n) ^|O(log n) ^|O(n) -|=== -{empty}* = Amortized run time. E.g. rehashing might affect run time to *O(n)*. -// end::table[] - -indexterm:[Runtime, Linear] -(((Logarithmic))) -(((Runtime, Logarithmic))) -To recap, HashSet and TreeSet will keep data without duplicates. The -difference besides runtime is that: - -.TreeSet vs HashSet -* HashSet keeps data in insertion order -* TreeSet keeps data sorted in ascending order. - - -==== Practice Questions -(((Interview Questions, Set))) - -// tag::set-q-most-common-word[] -===== Most common word - -*ST-1*) _Given a text and a list of banned words. -Find the most common word that is not on the banned list. -You might need to sanitize the text and strip out punctuation `?!,'.`_ -// end::set-q-most-common-word[] - -// _Seen in interviews at: Amazon._ - -Examples: - -[source, javascript] ----- -mostCommonWord( - `How much wood, would a Woodchuck chuck, - if a woodchuck could chuck?`, - ['a'], -); // woodchuck or chuck (both show up twice) - -mostCommonWord( -`It's a blue ball and its shade... Very BLUE!`, -['and']); // blue (it show up twice, "it" and "its" once) ----- - -Starter code: - -[source, javascript] ----- -include::../../interview-questions/most-common-word.js[tags=description;placeholder] ----- - - -_Solution: <>_ - - - - - - - - - - - -// tag::set-q-longest-substring-without-repeating-characters[] -===== Longest Without Repeating - -*ST-2*) _Find the length of the longest substring without repeating characters._ - -// end::set-q-longest-substring-without-repeating-characters[] - -// _Seen in interviews at: Amazon, Facebook, Bloomberg._ - -Examples: - -[source, javascript] ----- -lenLongestSubstring('aaaaa'); // 1 ('a') -lenLongestSubstring('abccdefg'); // 5 ('cdefg') -lenLongestSubstring('abc'); // 3 ('abc') ----- - -Starter code: - -[source, javascript] ----- -include::../../interview-questions/longest-substring-without-repeating-characters.js[tags=description;placeholder] ----- - - -_Solution: <>_ diff --git a/book/content/part03/time-complexity-graph-data-structures.asc b/book/content/part03/time-complexity-graph-data-structures.asc index ed85c1a6..06f2f22c 100644 --- a/book/content/part03/time-complexity-graph-data-structures.asc +++ b/book/content/part03/time-complexity-graph-data-structures.asc @@ -16,10 +16,10 @@ In this section, we learned about Graphs applications, properties and how we can | <> ^|- ^|O(n) ^|O(n) ^|O(n) ^|O(n) | <> ^|- ^|O(log n) ^|O(log n) ^|O(log n) ^|O(n) | Hash Map (naïve) ^|O(n) ^|O(n) ^|O(n) ^|O(n) ^|O(n) -| <> (optimized) ^|O(1) ^|O(n) ^|O(1)* ^|O(1) ^|O(n) -| <> (Red-Black Tree) ^|O(log n) ^|O(n) ^|O(log n) ^|O(log n) ^|O(n) -| <> ^|O(1) ^|- ^|O(1)* ^|O(1) ^|O(n) -| <> ^|O(log n) ^|- ^|O(log n) ^|O(log n) ^|O(n) +| <> (optimized) ^|O(1) ^|O(n) ^|O(1)* ^|O(1) ^|O(n) +| <> (Red-Black Tree) ^|O(log n) ^|O(n) ^|O(log n) ^|O(log n) ^|O(n) +| <> ^|O(1) ^|- ^|O(1)* ^|O(1) ^|O(n) +| <> ^|O(log n) ^|- ^|O(log n) ^|O(log n) ^|O(n) |=== {empty}* = Amortized run time. E.g. rehashing might affect run time to *O(n)*. // end::table[] diff --git a/book/content/part03/tree-intro.asc b/book/content/part03/tree-intro.asc index bd92a6c7..1cb9d3e7 100644 --- a/book/content/part03/tree-intro.asc +++ b/book/content/part03/tree-intro.asc @@ -67,8 +67,8 @@ image::image32.png[image,width=321,height=193] Binary trees are one of the most used kinds of trees, and they are used to build other data structures. .Binary Tree Applications -- <> -- <> +- <> +- <> - Priority Queues - <> diff --git a/book/content/part03/treemap.asc b/book/content/part03/tree-map.asc similarity index 93% rename from book/content/part03/treemap.asc rename to book/content/part03/tree-map.asc index 511b263e..23e1cb51 100644 --- a/book/content/part03/treemap.asc +++ b/book/content/part03/tree-map.asc @@ -4,17 +4,19 @@ ifndef::imagesdir[] endif::[] (((TreeMap))) (((Data Structures, Non-Linear, TreeMap))) (((Binary Search Tree))) (((BST))) -[[treemap-chap]] -=== TreeMap +[[tree-map-chap]] +=== Tree Map -A Map is an abstract data structure to store pairs of data: *key* and *value*. It also has a fast key lookup of `O(1)` for <> or `O(log n)` for <>. +A Map is an abstract data structure to store pairs of data: *key* and *value*. It also has a fast key lookup of `O(1)` for <> or `O(log n)` for <>. We can implement a Map using two different underlying data structures: * *HashMap*: it’s a map implementation using an *array* and a *hash function*. The job of the hash function is to convert the `key` into an index that maps to the `value`. Optimized HashMap can have an average runtime of *O(1)*. * *TreeMap*: it’s a map implementation that uses a self-balanced Binary Search Tree (like <> or Red-Black Tree). The BST nodes store the key, and the value and nodes are sorted by key guaranteeing an *O(log n)* look up. -We already covered <>, so this chapter we are going to focus on TreeMap. +We already covered <>, so this chapter we are going to focus on TreeMap. + +TIP: JavaScript only provides (Hash) `Map` that's enough for most needs. But we are going to implement a Tree Map so it's more clear how it works and when it should be used. A TreeMap is a Map implementation using a Balanced Binary Search Trees. Implementing a Map with a tree, TreeMap, has a couple of advantages over a HashMap: @@ -24,7 +26,6 @@ Implementing a Map with a tree, TreeMap, has a couple of advantages over a HashM * Collisions are not a concern so in the worst case is still *O(log n)*. * Trees are more space efficient and don’t need to allocate memory beforehand (e.g. `HashMap`’s initial capacity) nor you have to rehash when is getting full. -indexterm:[Runtime, Logarithmic] Ok, now that you know the advantages, let’s implement it! For a full comparison read the <> section. @@ -103,7 +104,6 @@ The BST implementation does all the heavy lifting. That’s it! To see the full file in context, click here: https://github.com/amejiarosario/dsa.js/blob/f69b744a1bddd3d99243ca64b3ad46f3f2dd7342/src/data-structures/maps/tree-maps/tree-map.js#L22[here] -<<< ==== HashMap vs TreeMap .A map can be implemented using hash functions or binary search tree: @@ -130,7 +130,7 @@ As we discussed so far, there is a trade-off between the implementations. .2+.^s| Data Structure 2+^s| Searching By .2+^.^s| Insert .2+^.^s| Delete .2+^.^s| Space Complexity ^|_Index/Key_ ^|_Value_ | <> ^|O(1) ^|O(n) ^|O(1)* ^|O(1) ^|O(n) -| <> ^|O(log n) ^|O(n) ^|O(log n) ^|O(log n) ^|O(n) +| <> ^|O(log n) ^|O(n) ^|O(log n) ^|O(log n) ^|O(n) |=== {empty}* = Amortized run time. E.g. rehashing might affect run time to *O(n)*. // end::table[] diff --git a/book/content/part03/tree-set.asc b/book/content/part03/tree-set.asc new file mode 100644 index 00000000..507473b3 --- /dev/null +++ b/book/content/part03/tree-set.asc @@ -0,0 +1,141 @@ +ifndef::imagesdir[] +:imagesdir: ../../images +:codedir: ../../../src +endif::[] + +(((TreeSet))) +(((Data Structures, Non-Linear, TreeSet))) +[[tree-set-chap]] +=== Tree Set + +A tree set is a data structure that stores unique values and keep them sorted. You can get check if a value exists in `O(log n)` time. + +Another way to implement a Set is using a hash function, as we covered on <>. There are some key differences between the two implementations. + +==== HashSet vs TreeSet + +We can implement a `map` using a *<>* or a *<>*. If we use them to implement a `Set`, we would have a `HashSet` and `TreeSet`. As all data structures there are trade-offs. Here are some key differences: + +* `TreeSet`, would return the values sorted in ascending order. +* `HashSet`, would return the values in insertion order. +* Operations on a `HashSet` would take on average O(1), and in the worst case (rehash is due), it would take O(n). +* Operation on a `TreeSet` is always O(log n). + +==== Time Complexity Hash Set vs Tree Set + +(((Tables, Non-Linear DS, HashSet/TreeSet complexities))) +indexterm:[Runtime, Linear] +(((Logarithmic))) +(((Runtime, Logarithmic))) + +// also on: book/content/part03/time-complexity-graph-data-structures.asc +// tag::table[] +.Time complexity HashSet vs TreeSet +|=== +.2+.^s| Data Structure 2+^s| Searching By .2+^.^s| Insert .2+^.^s| Delete .2+^.^s| Space Complexity +^|_Index/Key_ ^|_Value_ +| <> ^|O(1) ^|- ^|O(1)* ^|O(1) ^|O(n) +| <> ^|O(log n) ^|- ^|O(log n) ^|O(log n) ^|O(n) +|=== +{empty}* = Amortized run time. E.g. rehashing might affect run time to *O(n)*. +// end::table[] + + +TIP: JavaScript only provides (Hash) `Set` that's enough for most needs. But we are going to implement a Tree Set so it's more clear how it works and when it should be used. + +==== Implementing a Tree Set + + +.TreeSet's constructor method and size attribute +[source, javascript] +---- +include::{codedir}/data-structures/sets/tree-set.js[tag=constructor] +} +---- +<1> Converts an array or any iterable data structure to a set. + +An everyday use case for Sets is to remove duplicated values from an array. We can do that bypassing them in the constructor as follows: + +.Removing duplicates from an Array using a Set +[source, javascript] +---- +set = new TreeSet([1, 2, 3, 2, 1]); +expect(set.size).toBe(3); +expect(Array.from(set.keys())).toEqual([1, 2, 3]); +---- + +Ok, now let’s implement the add method. + +===== Adding elements to a TreeSet + +For adding values to the set, we `Tree.add` method. + +.TreeSet's constructor method and size attribute +[source, javascript] +---- +include::{codedir}/data-structures/sets/tree-set.js[tag=add,indent=0] +---- + +Our <> can hold duplicated values. It has a multiplicity tally to keep track of duplicates. However, we don’t dupe in a set. For that, we check if the value is already in the tree. +Don’t worry about adding extra lookups. The +`Tree.has` is also very performant *O(log n)*. + +===== Searching for values in a TreeSet + +Again, we rely on the Tree implementation to do the heavy lifting: + +.TreeSet's `has` method +[source, javascript] +---- +include::{codedir}/data-structures/sets/tree-set.js[tag=has, indent=0] +---- + +===== Deleting elements from a TreeSet + +We delete the elements from the TreeSet using the remove method of the BST. + +.TreeSet's `delete` method +[source, javascript] +---- +include::{codedir}/data-structures/sets/tree-set.js[tag=delete, indent=0] +---- + +Voilà! That’s it! + +===== Converting TreeSet to Array + +Another use case for a Set is to convert it to an array or use an iterator (for loops, forEach, …). Let’s provide the method for that: + +.TreeSet's iterator +[source, javascript] +---- +include::{codedir}/data-structures/sets/tree-set.js[tag=iterator, indent=0] +---- + +We are using the `inOrderTraversal` method of the BST to go each key in an +ascending order. + +.JavaScript Built-in `Symbol` iterator +**** +The `Symbol.iterator` built-in symbol specifies the default iterator for +an object. Used by `for...of`, `Array.from` and others. +**** + +Now we can convert from set to array and vice versa easily. For +instance: + +.TreeSet's iterator +[source, javascript] +---- +const array = [1, 1, 2, 3, 5]; + +// array to set +const set = new TreeSet(array); + +// set to array +Array.from(set); //↪️ (4) [1, 2, 3, 5] +---- + +No more duplicates in our array! + +Check out our https://github.com/amejiarosario/dsa.js/blob/f69b744a1bddd3d99243ca64b3ad46f3f2dd7342/src/data-structures/sets/tree-set.js#L12[GitHub repo for the full TreeSet implementation]. diff --git a/book/content/part04/algorithmic-toolbox.asc b/book/content/part04/algorithmic-toolbox.asc index f100524a..9539407a 100644 --- a/book/content/part04/algorithmic-toolbox.asc +++ b/book/content/part04/algorithmic-toolbox.asc @@ -23,7 +23,7 @@ TIP: TL;DR: Don't start coding right away. First, solve the problem, then write .. If anything else fails, how would you solve it the dumbest way possible (brute force). We can optimize it later. . *Test* your algorithm idea with multiple examples . *Optimize* the solution –Only optimize when you have something working don't try to do both at the same time! -.. Can you trade-off space for speed? Use a <> to speed up results! +.. Can you trade-off space for speed? Use a <> to speed up results! .. Do you have a bunch of recursive and overlapping problems? Try <>. .. Re-read requirements and see if you can take advantage of anything. E.g. is the array sorted? . *Write Code*, yes, now you can code. diff --git a/book/deprecated/old-set.asc b/book/deprecated/old-set.asc new file mode 100644 index 00000000..f07a72c8 --- /dev/null +++ b/book/deprecated/old-set.asc @@ -0,0 +1,73 @@ +ifndef::imagesdir[] +:imagesdir: ../../images +:codedir: ../../../src +endif::[] + +[[hashset]] +==== Hash Set Implementation +(((HashSet))) +(((Data Structures, Non-Linear, HashSet))) +The *HashSet* is the set implementation using a HashMap as its underlying data structure. + +The HashSet interface will be the same as the built-in `Set` or our previously implemented `TreeSet`. + +.HashSet's constructor method and size attribute +[source, javascript] +---- +include::{codedir}/data-structures/sets/hash-set.js[tag=constructor] +} +---- + +This constructor is useful for converting an array to set and initializing the `HashMap`. + +===== Inserting values to a HashSet + +To insert items in a HashSet, we use the `set` method of the `HashMap`: + +.HashSet's `add` method +[source, javascript] +---- +include::{codedir}/data-structures/sets/hash-set.js[tag=add, indent=0] +} +---- + +`HashMap` stores key/value pairs, but we only need the keys for Set, so we ignore the value. + +===== Finding values in a HashSet + +We use the method `has` to check if a value is on the `Set` or not. + +.HashSet's `has` method +[source, javascript] +---- +include::{codedir}/data-structures/sets/hash-set.js[tag=has, indent=0] +---- + +Internally, the `HashMap` will convert the key into an array index using a hash function. If there’s something in the array index bucket, it will return +true, and if it’s empty, it will be false. + +===== Deleting values from a HashSet + +For deleting a value from a hashSet, we use the HashMap’s delete method: + +.HashSet's `delete` method +[source, javascript] +---- +include::{codedir}/data-structures/sets/hash-set.js[tag=delete, indent=0] +---- + +This method has an average runtime of *O(1)*. + +==== HashSet vs HashMap Time Complexity + +We can say that `HashMap` in on average, more performant O(1) vs. O(log n). However, if a +rehash happens, it will take *O(n)* instead of *O(1)*. A `TreeSet` is always *O(log n)*. + + + +To recap, HashSet and TreeSet will keep data without duplicates. The +difference besides runtime is that: + +.TreeSet vs HashSet +* HashSet keeps data in insertion order +* TreeSet keeps data sorted in ascending order. diff --git a/book/part02-linear-data-structures.asc b/book/part02-linear-data-structures.asc index 48ab9ffc..ab8b99da 100644 --- a/book/part02-linear-data-structures.asc +++ b/book/part02-linear-data-structures.asc @@ -10,6 +10,7 @@ When you are aware of the data structures implementations, you spot when to use .In this part we are going to learn about the following linear data structures: - <> - <> +- <> - <> - <> - <> @@ -31,6 +32,9 @@ include::content/part02/array.asc[] <<< include::content/part02/hash-map.asc[] +<<< +include::content/part02/hash-set.asc[] + <<< include::content/part02/linked-list.asc[] diff --git a/book/part03-graph-data-structures.asc b/book/part03-graph-data-structures.asc index 74b01bc6..25ba9339 100644 --- a/book/part03-graph-data-structures.asc +++ b/book/part03-graph-data-structures.asc @@ -1,13 +1,13 @@ [[part03-graph-data-structures]] -== Graph Data Structures +== Graph & Tree Data Structures Graph-based data structures are everywhere whether you realize it or not. You can find them in databases, Web (HTML DOM tree), search algorithms, finding the best route to get home and many more uses. We are going to learn the basic concepts and when to choose one over the other. .In this chapter we are going to learn: - Exciting <> data structure applications - Searching efficiently with a <> data structures. -- One of the most versatile data structure of all <>. -- Keeping dups out with a <>. +- One of the most versatile data structure of all <>. +- Keeping duplicates out with a <>. By the end of this section, you will know the data structures trade-offs and when to use one over the other. include::content/part03/tree-intro.asc[] @@ -24,11 +24,17 @@ include::content/part03/binary-search-tree-traversal.asc[] // <<< // include::content/part03/map.asc[] -<< -include::content/part03/treemap.asc[] +// <<< +// include::content/part03/tree-map.asc[] + +// <<< +// include::content/part02/hash-set.asc[] + +<<< +include::content/part03/tree-map.asc[] <<< -include::content/part03/set.asc[] +include::content/part03/tree-set.asc[] <<< include::content/part03/graph.asc[] diff --git a/src/data-structures/maps/README.adoc b/src/data-structures/maps/README.adoc index 4448f31a..b5eaa146 100644 --- a/src/data-structures/maps/README.adoc +++ b/src/data-structures/maps/README.adoc @@ -1,7 +1,7 @@ include::../../../book/content/part03/map.asc[] <<< -include::../../../book/content/part03/hashmap.asc[] +include::../../../book/content/part02/hash-map.asc[] <<< -include::../../../book/content/part03/treemap.asc[] +include::../../../book/content/part03/tree-map.asc[] diff --git a/src/data-structures/maps/hash-maps/readme.asc b/src/data-structures/maps/hash-maps/readme.asc index 6a2c8cce..d06231ea 100644 --- a/src/data-structures/maps/hash-maps/readme.asc +++ b/src/data-structures/maps/hash-maps/readme.asc @@ -1 +1 @@ -include::../../../../book/content/part03/hashmap.asc[] +include::../../../../book/content/part02/hash-map.asc[] diff --git a/src/data-structures/maps/tree-maps/readme.asc b/src/data-structures/maps/tree-maps/readme.asc index 0321f3f1..15d5c234 100644 --- a/src/data-structures/maps/tree-maps/readme.asc +++ b/src/data-structures/maps/tree-maps/readme.asc @@ -1 +1 @@ -include::../../../../book/content/part03/treemap.asc[] +include::../../../../book/content/part03/tree-map.asc[] diff --git a/src/data-structures/sets/README.adoc b/src/data-structures/sets/README.adoc index a7dfc61a..ce08b551 100644 --- a/src/data-structures/sets/README.adoc +++ b/src/data-structures/sets/README.adoc @@ -1 +1 @@ -include::../../../book/content/part03/set.asc[] +include::../../../book/content/part02/hash-set.asc[] From 2b96f0086632d9ddcbb7e8f76a061a46f90a65a0 Mon Sep 17 00:00:00 2001 From: Adrian Mejia Date: Fri, 30 Oct 2020 09:41:11 -0400 Subject: [PATCH 06/33] feat(book/linkedlist): add applications --- book/content/part02/linked-list.asc | 23 ++++++++++++++++++++++- book/images/critical-path-examples.png | Bin 40870 -> 38016 bytes book/images/dllx4-compact.png | Bin 0 -> 6760 bytes 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 book/images/dllx4-compact.png diff --git a/book/content/part02/linked-list.asc b/book/content/part02/linked-list.asc index 59ddac6c..a09f8473 100644 --- a/book/content/part02/linked-list.asc +++ b/book/content/part02/linked-list.asc @@ -9,7 +9,28 @@ endif::[] [[linked-list]] === Linked List -A list (or Linked List) is a linear data structure where each object has a pointer to the next one. +A list (or Linked List) is a linear data structure where each object has a pointer to the next one creating a chain. You can also have a back reference to the previous node. + +image::dllx4-compact.png[] + +The data doesn't have to be a number. It can be anything that you need (e.g., images, songs, menu items). + +.Some features powered by linked lists: +- _Image viewer_ – The previous and next images are linked in an image viewer so that the user can navigate them. +- _Previous and next page in web browser_ – We can access the previous and next URL searched in a web browser by pressing the back and next button since they are linked. +- _Music Player_ - Queue of songs in a music player connects them so you can move to the next song or previous one. + +.Other Applications: +- Build <> and <> data structures, which are useful for Graph Traversal and other things. +- Linked Lists are used on <> to handle collisions. +- Linked Lists can be used when representing a <> as an adjacency list. +- Operate arbitrary big numbers (think hundreds of digits). Each digit is a node of a linked list. +- Manipulation of polynomials by storing constants in the node of a linked list. +- Representing sparse matrices (an array representation will waste a lot of memory when most of the cells are empty). The linked list will represent only the non-zero values saving significant space. + +Hopefully, this will get you excited about learning Linked Lists since it's the base of many interesting applications. Let's learn more about the different types of linked lists. + +==== Types of Linked List .Linked Lists can be: - *Singly*: every item has a pointer to the next. diff --git a/book/images/critical-path-examples.png b/book/images/critical-path-examples.png index 63b0e330e430fa49e294f765cded36b4cbff8158..ef4a1389883ff77682993512c4d5450fc02c512b 100644 GIT binary patch literal 38016 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�wweVh>D0j@Il3U_3D); z*o!tcH+P}F05j>2A1}ctV`XLar?(fuZ=*bVR8U%qfXoL6wjhJGc6JhjYY|~|ovdmB z@$&>6j}IO_g0iXtjE3_wGq2yhdkM^Tif&6__2H1Z_4R{0k3^-rmwtZ|$K|jN2WN~G z6hbH{C_hzt@!8nOV%YNDcs)D{{bvjJo^0-kp0O_7r?5|NOY zzq%9#zg0b0ClMnH#T)3#2<0Jb>1&?lGaR;DsUiawpzy;ti`Y!=V37TiZew5!q4|a` zoEF0Fa)fz)tUU*EBw{c(HZ(RisI43v(qZ%wQlSRN3-CW6Kw?)Hx`4oKK#btNA|@h2 z9LmUKgP@RkdA&|fgd3YlZ4OOv??2Yk*_{)BDq1#Of&zy%8;DuODW{gtdyC>7N29lI z555qMV^7jTPuC;)RgTYP{|%~-BDZsUD83My8pwN#DM7r+;7!j{JOGbGL9xQ)6xapw zSxPxrQ=zf39Thgq50H`PcV-(9?f@{#%GJ5MfmqoLKJ6fXfB$CQ#2+tIRVy|ooWOQ} zMM}N#5Ii_Q%lopLbMNkFiG99jDgP@>HEFzquCTN;0(@~hUQ{eBq2O!!;-kIX=)0b+ ziV^7Riw2TxKM;vyC0PNPnHJX^_wW2p5q|RQuHD*7@j5yM6p!kqaiq)#w{~|a$}1z9 zy7MUA&d+9-l^09=62QL&`)g#(GbQB_;A*;RGAJaQ{28RJEx=nqDm^6zz8It7F8{5` z8Y|o4!3AO0v_k#C`yvoT{IWKnjX@u1HBVHNdotQSrvjYE5`Acv1PO5eYe=Io2^aoMoo=0 z;Dxf`*+Fjge&Bum_OL#aX{a-pEww%`{WZM-8WUJZun?7NMq(~_pJ)y?Rs}#zhUXhJ zp+4p29uTl;3G|)&MFT8wft4DaWL@&f`YFiz;K5h>W{;R$2;tno7&l)6xonWURfu za)FqLpxc4|B7!c9Fd9;j`GKbs00WZ>(5K^NmWI1?O~n?IIMUM6U{{lnk@>EZVEMqL z%z^}z*mKpgEn@u+wf>ACI;g(tn*?ipc;R`I9W1q-kB=6wE)`fUxSQI;TR?Yx3%u$# zg6RlK#dc$sdjbN7-smlXf4-urZT@OR@arX}(tG>e=MX(-;vKkw5$d{gPbrdy6gX2L z+A~y{9MYw?g^Y}zdR$m}PSt#dEwt1xt=?N(6FHQpee-6%J&m4W*02VZVu89}id-fT z%Gy?Tc8eW!b$VdMZftDKf8TIV6?uJMLQ-;ds)h^vj9|w`S5{VbKHBgFe-3y%t$oOD zh>8XQvBeXB;|89dYetVNm$yPvi~e+D9bk!4hDs4wjhT~Ox+uQ7$JZAa;z0Rfvsv5* zJI#>E^v#n8WLj&YII^eT~u;D+?!o! zqkzd%f-7_LfDCr(b8$HQ92f}WX?J`KG7Hzj0g3)!%0AYMVRg}O3&?YU|2G|?hFb^o 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 z zH<%+n2a_y8o5Hr1psj2VtT6C(|J#kMG)oM+ijCAx*!cKbTkoArdzLcjxP69L6#A=! zj_NxXvMTk!Spq@9w6z6KPgg(>b5W3p6FhQ@o}PAu0~JD$0g%jZjJ6zDv3D+xE*`M| zxZCKHuM2S_xMU1`(v&PMfv0-P4~7BVjnOC72g)RX$ccdAybcH3rf-boMiZ4pQ0>)k z|7unj-)!6oC)sE|M`DNoGh|{{p@UY49Z$e+9fHGw;ef_D&M;wpVU*t^w$nbxp6~DzU|)rPaiNjSO$TnIs&o8uu+HgWJUNdz|j!0zQu#UTJLC6?t9#= zw|9^zQ*inJtGrIln?qnX)1Y;Fq|*R@cn7>fB25keair&ESTF~7Q~l;d;?sB18X&|G z+FL9JOjyZRy{mk(Cr^SPA~yoZM`7Vz_~vh*%P!bseq+e|YgBypzu-~!t~Mq*6(w@YjZT5j6^4v z{nOX?V7>QJ#oGGz;GiG~vh5ve8V82WLAOeWjbn)7%zeS661JEkZg@tbg z1=&Bdn!lcwHZ^B6`Xh@jDd#;c3rqdP$nQ1R`U-0&wRl~mT4hxY zoN^+)y*1c5CK}&kWWcSJmPUYI?o|6-NE?^^CiLa1)!Uk6=60=&R>&BCD0s5M?_1h~?pQkP?BlZyUc6`+wcmdjJ!uVAlGm(`0_mMZ;*5UkPycGK z^>xLf;<~q2m#jp@tvBqqr}Nh*wdB-Ck9+kxzIBnau|)?4Qjn2%;Z!E{EVa%#ikO;W zGBU>hoY;UmGFm`$U`Iq-Z>rKy&1h8yoT^}#pR;qRe?cjuQTEfwc;$QY48CEHc1GDD znev+S?(QNyw8Z8B1q+^Vs%o^SJUn8ChJt2hH2?(U>gpmHubpWAtNL+#yaHNwKLC~S z6Aq4{Bsp#l+B~wY$ENrPF{v~aPG)9dXEaVw z7rxAk7r2&|p{lu9QPNa7LwBxuduwCgxk*Um)YhLNaC(~1KgKJh5*eAt#QaI=UGXZhUuyZ1$-c zRPW2VR72xrqjx=z>Xx9hCOH{d9K2x;I}JU{%Y*`nq={R26BF7Ae2%jAN7ptsTmu8E zp}p#7FI1eip7LVj{*3u0<|zCzd?Hb~jNdn-yL55!Mri4ZZY1K|x#_Sy{os)tGfYD# zr(4S#B;Qk0N%N0TgoX2=#nTtsK=VdIY`q4Pc!~EpUdImf7~o;BbLCxY8J^P6Xx*xSZR*c3S5rLi#Qu?B>yoqA)K$!kt{^#iexYh7 zq~5R}7*o-iP)SG>zkKNnEviwf`2X=~6cZDh{VIU{p=c!*hb5}*Eg3(5@cuscP)-}P z8DN!ZYEq?PC|QfFB)xNiCoUq=^u|Bi*VnfmR|U}Hp78L<$ZjcUii(J!rT_GYW4N>> z9u^i$)GQqtnch<~vM1qS*z-O;J$>`#329+oUOBJ$@P?g&ygZ9Uzi;)kW+f_72p9{* zLuemUQZ58-rGbk^B0(%YV0YK*wF0$W!&ln-cW$D^z?DUkv`zodmupt~zr4Ty{K3_A YT?~b%)ErLtuE9SNqOu}+FWz|kH literal 40870 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�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 N@O1TaS?83{1OUm0Kpp@9 diff --git a/book/images/dllx4-compact.png b/book/images/dllx4-compact.png new file mode 100644 index 0000000000000000000000000000000000000000..189dcd407aa2edfcd752b2a584b50abdf2101652 GIT binary patch literal 6760 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 NXKLE2)hf23{{sqbK12Wj literal 0 HcmV?d00001 From 6c39aae0d0d7cb85b95eff7a0af2b340873196e1 Mon Sep 17 00:00:00 2001 From: Adrian Mejia Date: Fri, 30 Oct 2020 10:12:04 -0400 Subject: [PATCH 07/33] chore(book): improve grammar of various chapters --- book/content/colophon.asc | 2 +- book/content/dedication.asc | 2 +- book/content/introduction.asc | 4 +- book/content/part01/algorithms-analysis.asc | 4 +- book/content/part01/big-o-examples.asc | 8 +- book/content/part01/how-to-big-o.asc | 6 +- .../array-vs-list-vs-queue-vs-stack.asc | 4 +- book/content/part02/array.asc | 8 +- book/content/part02/hash-map.asc | 12 +-- book/content/part02/hash-set.asc | 25 ++++-- book/content/part02/queue.asc | 2 +- book/content/part02/stack.asc | 4 +- .../part03/binary-search-tree-traversal.asc | 5 +- book/content/part03/binary-search-tree.asc | 44 +++++----- book/content/part03/graph-search.asc | 8 +- book/content/part03/graph.asc | 68 +++++++-------- .../time-complexity-graph-data-structures.asc | 2 +- book/content/part03/tree-intro.asc | 12 +-- book/content/part03/tree-map.asc | 83 ++++++++----------- book/content/part03/tree-search-traversal.asc | 14 ++-- book/content/part03/tree-set.asc | 12 +-- book/content/part04/algorithmic-toolbox.asc | 16 ++-- book/content/part04/backtracking.asc | 19 ++--- book/content/part04/bubble-sort.asc | 10 +-- book/content/part04/divide-and-conquer.asc | 14 ++-- book/content/part04/dynamic-programming.asc | 8 +- book/content/part04/greedy-algorithms.asc | 16 ++-- book/content/part04/insertion-sort.asc | 4 +- book/content/part04/merge-sort.asc | 10 +-- book/content/part04/quick-sort.asc | 20 ++--- book/content/part04/selection-sort.asc | 14 ++-- book/content/part04/sorting-algorithms.asc | 10 +-- book/content/preface.asc | 12 +-- book/part03-graph-data-structures.asc | 11 +-- book/part04-algorithmic-toolbox.asc | 10 +-- 35 files changed, 244 insertions(+), 259 deletions(-) diff --git a/book/content/colophon.asc b/book/content/colophon.asc index c6860171..6387ef12 100644 --- a/book/content/colophon.asc +++ b/book/content/colophon.asc @@ -9,7 +9,7 @@ For online information and ordering this and other books, please visit https://a No part of this publication may be produced, store in a retrieval system, or transmitted, in any form or by means electronic, mechanical, photocopying, or otherwise, without the prior written permission of the publisher. -While every precaution has been taking in the preparation of this book, the publisher and author assume no responsibility for errors or omissions, or damages resulting from the use of the information contained herein. +While every precaution has been taking in the preparation of this book, the publisher and author assume no responsibility for errors or omissions, or damages resulting from using the information contained herein. // {revremark}, {revdate}. Version {revnumber}, {revdate}. diff --git a/book/content/dedication.asc b/book/content/dedication.asc index 069d116c..db104a6d 100644 --- a/book/content/dedication.asc +++ b/book/content/dedication.asc @@ -1,4 +1,4 @@ [dedication] == Dedication -_To my wife Nathalie who supported me in my long hours of writing and my baby girl Abigail._ +_To my wife Nathalie, who supported me in my long hours of writing, and my baby girl Abigail._ diff --git a/book/content/introduction.asc b/book/content/introduction.asc index e59de6d1..e7e1167d 100644 --- a/book/content/introduction.asc +++ b/book/content/introduction.asc @@ -4,9 +4,9 @@ You are about to become a better programmer and grasp the fundamentals of Algorithms and Data Structures. Let's take a moment to explain how we are going to do that. -This book is divided into 4 main parts: +This book is divided into four main parts: -In *Part 1*, we will cover the framework to compare and analyze algorithms: Big O notation. When you have multiple solutions to a problem, this framework comes handy to know which solution will scale better. +In *Part 1*, we will cover the framework to compare and analyze algorithms: Big O notation. When you have multiple solutions to a problem, this framework comes in handy to know which solution will scale better. In *Part 2*, we will go over linear data structures and trade-offs about using one over another. After reading this part, you will know how to trade space for speed using Maps, when to use a linked list over an array, or what problems can be solved using a stack over a queue. diff --git a/book/content/part01/algorithms-analysis.asc b/book/content/part01/algorithms-analysis.asc index dc7b6893..c2f2dce3 100644 --- a/book/content/part01/algorithms-analysis.asc +++ b/book/content/part01/algorithms-analysis.asc @@ -143,7 +143,7 @@ _7n^3^ + 3n^2^ + 5_ You can express it in Big O notation as _O(n^3^)_. The other terms (_3n^2^ + 5_) will become less significant as the input grows bigger. -Big O notation only cares about the “biggest” terms in the time/space complexity. It combines what we learn about time and space complexity, asymptotic analysis, and adds a worst-case scenario. +Big O notation only cares about the “biggest” terms in the time/space complexity. It combines what we learn about time and space complexity, asymptotic analysis and adds a worst-case scenario. .All algorithms have three scenarios: * Best-case scenario: the most favorable input arrangement where the program will take the least amount of operations to complete. E.g., a sorted array is beneficial for some sorting algorithms. @@ -152,7 +152,7 @@ Big O notation only cares about the “biggest” terms in the time/space comple To sum up: -TIP: Big O only cares about the run time function's highest order on the worst-case scenario. +TIP: Big O only cares about the run time function's highest order in the worst-case scenario. WARNING: Don't drop terms that are multiplying other terms. _O(n log n)_ is not equivalent to _O(n)_. However, _O(n + log n)_ is. diff --git a/book/content/part01/big-o-examples.asc b/book/content/part01/big-o-examples.asc index 73bfe968..5526af8f 100644 --- a/book/content/part01/big-o-examples.asc +++ b/book/content/part01/big-o-examples.asc @@ -25,7 +25,7 @@ Before we dive in, here’s a plot with all of them. // image::image5.png[CPU time needed vs. Algorithm runtime as the input size increases] image::big-o-running-time-complexity.png[CPU time needed vs. Algorithm runtime as the input size increases] -The above chart shows how the algorithm's running time is related to the work the CPU has to perform. As you can see, O(1) and O(log n) is very scalable. However, O(n^2^) and worst can convert your CPU into a furnace 🔥 for massive inputs. +The above chart shows how the algorithm's running time is related to the CPU's work. As you can see, O(1) and O(log n) is very scalable. However, O(n^2^) and worst can convert your CPU into a furnace 🔥 for massive inputs. [[constant]] ==== Constant @@ -71,7 +71,9 @@ include::{codedir}/runtimes/02-binary-search.js[tag=binarySearchRecursive] This binary search implementation is a recursive algorithm, which means that the function `binarySearchRecursive` calls itself multiple times until the program finds a solution. The binary search splits the array in half every time. -Finding the runtime of recursive algorithms is not very obvious sometimes. It requires some tools like recursion trees or the https://adrianmejia.com/blog/2018/04/24/analysis-of-recursive-algorithms/[Master Theorem]. The `binarySearch` divides the input in half each time. As a rule of thumb, when you have an algorithm that divides the data in half on each call, you are most likely in front of a logarithmic runtime: _O(log n)_. +Finding the runtime of recursive algorithms is not very obvious sometimes. It requires some approaches like recursion trees or the https://adrianmejia.com/blog/2018/04/24/analysis-of-recursive-algorithms/[Master Theorem]. + +Since the `binarySearch` divides the input in half each time. As a rule of thumb, when you have an algorithm that divides the data in half on each call, you are most likely in front of a logarithmic runtime: _O(log n)_. [[linear]] ==== Linear @@ -171,7 +173,7 @@ Cubic *O(n^3^)* and higher polynomial functions usually involve many nested loop [[cubic-example]] ===== 3 Sum -Let's say you want to find 3 items in an array that add up to a target number. One brute force solution would be to visit every possible combination of 3 elements and add them up to see if they are equal to target. +Let's say you want to find 3 items in an array that add up to a target number. One brute force solution would be to visit every possible combination of 3 elements and add them to see if they are equal to the target. [source, javascript] ---- diff --git a/book/content/part01/how-to-big-o.asc b/book/content/part01/how-to-big-o.asc index 951cee6b..26a3358e 100644 --- a/book/content/part01/how-to-big-o.asc +++ b/book/content/part01/how-to-big-o.asc @@ -6,7 +6,7 @@ endif::[] === How to determine time complexity from code? In general, you can determine the time complexity by analyzing the program's statements. -However, you have to be mindful how are the statements arranged. Suppose they are inside a loop or have function calls or even recursion. All these factors affect the runtime of your code. Let's see how to deal with these cases. +However, you have to be mindful of how are the statements arranged. Suppose they are inside a loop or have function calls or even recursion. All these factors affect the runtime of your code. Let's see how to deal with these cases. *Sequential Statements* @@ -114,7 +114,7 @@ If instead of `m`, you had to iterate on `n` again, then it would be `O(n^2)`. A [[big-o-function-statement]] *Function call statements* -When you calculate your programs' time complexity and invoke a function, you need to be aware of its runtime. If you created the function, that might be a simple inspection of the implementation. However, if you are using a library function, you might infer it from the language/library documentation. +When you calculate your programs' time complexity and invoke a function, you need to be aware of its runtime. If you created the function, that might be a simple inspection of the implementation. However, you might infer it from the language/library documentation if you use a 3rd party function. Let's say you have the following program: @@ -210,7 +210,7 @@ graph G { If you take a look at the generated tree calls, the leftmost nodes go down in descending order: `fn(4)`, `fn(3)`, `fn(2)`, `fn(1)`, which means that the height of the tree (or the number of levels) on the tree will be `n`. -The total number of calls, in a complete binary tree, is `2^n - 1`. As you can see in `fn(4)`, the tree is not complete. The last level will only have two nodes, `fn(1)` and `fn(0)`, while a complete tree would have 8 nodes. But still, we can say the runtime would be exponential `O(2^n)`. It won't get any worst because `2^n` is the upper bound. +The total number of calls in a complete binary tree is `2^n - 1`. As you can see in `fn(4)`, the tree is not complete. The last level will only have two nodes, `fn(1)` and `fn(0)`, while a full tree would have eight nodes. But still, we can say the runtime would be exponential `O(2^n)`. It won't get any worst because `2^n` is the upper bound. ==== Summary diff --git a/book/content/part02/array-vs-list-vs-queue-vs-stack.asc b/book/content/part02/array-vs-list-vs-queue-vs-stack.asc index b464f17d..1c88b696 100644 --- a/book/content/part02/array-vs-list-vs-queue-vs-stack.asc +++ b/book/content/part02/array-vs-list-vs-queue-vs-stack.asc @@ -5,7 +5,7 @@ endif::[] === Array vs. Linked List & Queue vs. Stack -In this part of the book, we explored the most used linear data structures such as Arrays, Linked Lists, Stacks and Queues. We implemented them and discussed the runtime of their operations. +In this part of the book, we explored the most used linear data structures such as Arrays, Linked Lists, Stacks, and Queues. We implemented them and discussed the runtime of their operations. .Use Arrays when… * You need to access data in random order fast (using an index). @@ -17,7 +17,7 @@ In this part of the book, we explored the most used linear data structures such * You want constant time to remove/add from extremes of the list. .Use a Queue when: -* You need to access your data on a first-come, first served basis (FIFO). +* You need to access your data on a first-come, first-served basis (FIFO). * You need to implement a <> .Use a Stack when: diff --git a/book/content/part02/array.asc b/book/content/part02/array.asc index 86acc40a..452f73df 100644 --- a/book/content/part02/array.asc +++ b/book/content/part02/array.asc @@ -256,7 +256,7 @@ array.pop(); // ↪️111 // array: [2, 5, 1, 9] ---- -No other element was touched, so it’s an _O(1)_ runtime. +While deleting the last element, no other item was touched, so that’s an _O(1)_ runtime. .JavaScript built-in `array.pop` **** @@ -293,7 +293,7 @@ To sum up, the time complexity of an array is: | `unshift` ^| O(n) | Insert element on the left side. | `shift` ^| O(n) | Remove leftmost element. | `splice` ^| O(n) | Insert and remove from anywhere. -| `slice` ^| O(n) | Returns shallow copy of the array. +| `slice` ^| O(n) | Returns a shallow copy of the array. |=== //end::table @@ -474,7 +474,7 @@ Notice that many middle branches (in red color) have the same numbers, but in a *Sliding window algorithm* -Another approach is using sliding windows. Since the sum always has `k` elements, we can compute the cumulative sum for k first elements from the left. Then, we slide the "window" to the right and remove one from the left until we cover all the right items. In the end, we would have all the possible combinations without duplicated work. +Another approach is using sliding windows. Since the sum always has `k` elements, we can compute the cumulative sum for the k first elements from the left. Then, we slide the "window" to the right and remove one from the left until we cover all the right items. In the end, we would have all the possible combinations without duplicated work. Check out the following illustration: @@ -537,7 +537,7 @@ _Solution: <>_ // tag::array-q-buy-sell-stock[] ===== Best Time to Buy and Sell a Stock -*AR-2*) _You are given an array of integers. Each value represents the closing value of the stock on that day. You have only one chance to buy and then sell. What's the maximum profit you can obtain? (Note: you have to buy first and then sell)_ +*AR-2*) _You have an array of integers. Each value represents the closing value of the stock on that day. You have only one chance to buy and then sell. What's the maximum profit you can obtain? (Note: you have to buy first and then sell)_ Examples: diff --git a/book/content/part02/hash-map.asc b/book/content/part02/hash-map.asc index 083f98a9..a15c2c9b 100644 --- a/book/content/part02/hash-map.asc +++ b/book/content/part02/hash-map.asc @@ -7,7 +7,7 @@ endif::[] [[hashmap-chap]] === Map -A Map is a data structure where a `key` is mapped to a `value`. It's used for a fast lookup of values based on the given key. Only one key can map to a value (no duplicates). +A Map is a data structure where a `key` is mapped to a `value`. It's used for a fast lookup of values based on the given key. Only one key can map to a value (no key duplicates are possible). NOTE: Map has many terms depending on the programming language. Here are some other names: Hash Map, Hash Table, Associative Array, Unordered Map, Dictionary. @@ -242,7 +242,7 @@ map.set('art', 8); .Internal HashMap representation image::image41.png[image,width=528,height=299] -No hash function is perfect, so it's going to map two different keys to the same value for some cases. That's what we called a *collision*. When that happens, we chain the results on the same bucket. If we have too many collisions, it could degrade the lookup time from `O(1)` to `O(n)`. +No hash function is perfect, so it will map two different keys to the same value for some cases. That's what we called a *collision*. When that happens, we chain the results on the same bucket. If we have too many collisions, it could degrade the lookup time from `O(1)` to `O(n)`. The Map doubles the size of its internal array to minimize collisions when it reaches a certain threshold. This restructuring is called a *rehash*. This *rehash* operation takes `O(n)`, since we have to visit every old key/value pair and remap it to the new internal array. Rehash doesn't happen very often, so statistically speaking, Maps can insert/read/search in constant time `O(1)`. @@ -343,7 +343,7 @@ The LRU cache behavior is almost identical to the Map. - LRU cache has a limited size, while Map grows until you run out of memory. - LRU cache removes the least used items once the limit is reached. -We can extend the Map functionality. Also, the Map implementation on JavaScript already keeps the items by insertion order. So, every time we read or update a value, we can remove it from where it was and add it back. That way, the oldest (least used) it's the first element on the Map. +We can extend the Map functionality. Also, the Map implementation on JavaScript already keeps the items by insertion order. Every time we read or update a value, we can remove it from where it was and add it back. That way, the oldest (least used) it's the first element on the Map. .Solution: extending Map [source, javascript] @@ -505,9 +505,9 @@ image:sliding-window-map.png[sliding window for abbadvdf] As you can see, we calculate the length of the string on each iteration and keep track of the maximum value. -What would this look like in code? Let's try a couple of solutions. Let's go first with the brute force and then improve. +What would this look like in code? Let's try a couple of solutions. Let's go first with the brute force and then how we can improve it. -We can have two pointers, `lo` and `hi` to define a window. We can can use two for-loops for that. Later, within `lo` to `hi` we want to know if there's a duplicate value. We can use two other for-loops to check for duplicates (4 nested for-loop)! To top it off, we are using labeled breaks to skip updating the max if there's a duplicate. +We can have two pointers, `lo` and `hi`, to define a window. We can use two for-loops for that. Later, within `lo` to `hi` window, we want to know if there's a duplicate value. A simple and naive approach is to use another two for-loops to check for duplicates (4 nested for-loop)! We need labeled breaks to skip updating the max if there's a duplicate. WARNING: The following code can hurt your eyes. Don't try this in production; for better solutions, keep reading. @@ -615,7 +615,7 @@ Something that might look unnecessary is the `Math.max` when updating the `lo` p .Complexity Analysis - Time Complexity: `O(n)`. We do one pass and visit each character once. -- Space complexity: `O(n)`. We store everything one the Map so that the max size would be `n`. +- Space complexity: `O(n)`. We store everything on the Map so that the max size would be `n`. <<< ==== Practice Questions (((Interview Questions, Hash Map))) diff --git a/book/content/part02/hash-set.asc b/book/content/part02/hash-set.asc index d8baa10f..f5689180 100644 --- a/book/content/part02/hash-set.asc +++ b/book/content/part02/hash-set.asc @@ -6,16 +6,16 @@ endif::[] (((Set))) (((Data Structures, Non-Linear, Set))) [[hash-set-chap]] === Set -Set is a data structure that allows you to store unique values. If you try to add the same value, multiple times only one instance will be added. Also, you can check very quickly if a value exists or not. Searching by value on arrays takes `O(n)`. However, searching by value on a Set takes `O(1)` on average. +Set is a data structure that allows you to store unique values. If you try to add the same value multiple times, the Set will only add it once and ignore all other requests. Also, you can check very quickly if a value exists or not. Searching by value on arrays takes `O(n)`. However, searching by value on a Set takes `O(1)` on average. -A Set can be implemented on different ways. One way it's using a <> and other is using a <>. JavaScript has a built-in Hash Set, so that' the one we are going to focus on. +A Set can be implemented in different ways. One way it's using a <>, and other is using a <>. JavaScript has a built-in Hash Set, so that' the one we are going to focus on. TIP: We will go more in details with <> after we cover the <>. ==== Set vs Array -An array allows you to search a value by index in constant time `O(1)`, however if you don't know the index, searching a value would take you linear time `O(n)`. A Set has doesn't allow you to search value by index, but you can search by value in constant time. The `Set.add` and `Set.has` method both are `O(1)` in average. +An array allows you to search a value by index in constant time `O(1)`; however, if you don't know the index, searching a value would take you linear time `O(n)`. A Set has doesn't allow you to search value by index, but you can search by value in constant time. The `Set.add` and `Set.has` method both are `O(1)` in average. Take a look at the following examples: @@ -37,25 +37,30 @@ console.log(set); //↪️ Set(2) {2, 3} As you can see, even if we insert the same value multiple times, it only gets added once. -Similar to a <>, you can also insert objects and any kind of objects. However, be careful, because anything that is not a number, string or symbol would be matched by reference. Let's do some examples. +Like a <>, you can also insert objects, arrays, maps, and even other sets. However, be careful because anything that is not a number, string, or symbol would be matched by reference. Let's do some examples. .Using a Set with objects [source, javascript] ---- const set = new Set(); +// matching by value set.add({a: 1, b: 2}); set.has({a: 1, b: 2}); // ↪️ false +set.add({a: 1, b: 2}); // not ignored +// matching by reference const a = {a: 1, b: 2}; set.add(a); set.has(a); // ↪️ true +set.add(a); // this requests will be ignore. -console.log(set); // Set { [ 1, 2, 3 ], [ 1, 2, 3 ] } +// Set has 3 arrays with the same value, but since they all have different memory address it's allowed. +console.log(set); // Set { {a: 1, b: 2}, {a: 1, b: 2}, {a: 1, b: 2} } ---- -As you can see, you can't to find object using a new object (e.g. `{a: 1, b: 2}`), you need the reference to find it. -If you need to match by value, you would need to convert it to an string using `JSON.stringify`. +As you can see, you can't find an object using a new object (e.g. `{a: 1, b: 2}`); you need the reference to find it. +If you need to match by value, you would need to convert it to a string using `JSON.stringify`. .Workaround to find objects by value. [source, javascript] @@ -63,16 +68,18 @@ If you need to match by value, you would need to convert it to an string using ` const set = new Set(); set.add(JSON.stringify({a: 1, b: 2})); +set.add(JSON.stringify({a: 1, b: 2})); // ignored set.has(JSON.stringify({a: 1, b: 2})); // ↪️ true +// Only one object, since strings are matched by value and not by reference. console.log(set); // Set { '{"a":1,"b":2}' } ---- ==== Removing duplicates from an array. -One common case for a Set is to eliminate duplicates from an array. +One typical case for a Set is to eliminate duplicates from an array. .Removing duplicates from an array [source, javascript] @@ -98,7 +105,7 @@ console.log([...new Set(arr)]); // [ 1, 2, 3 ] ==== Time Complexity of a Hash Set -All operation on Hash Set are constant time on average: `O(1)`. Similar to the Hash Map, there are cases when the the Set is getting full and it would do a rehash taking `O(n)` for that one insertion. +All operations on Hash Set are constant time on average: `O(1)`. Like the Hash Map, there are cases when the the Set is getting full, and it would do a rehash taking `O(n)` for that one insertion. // tag::table[] .Time complexity HashSet diff --git a/book/content/part02/queue.asc b/book/content/part02/queue.asc index 9b760e1f..11944aa5 100644 --- a/book/content/part02/queue.asc +++ b/book/content/part02/queue.asc @@ -120,7 +120,7 @@ _Solution: <>_ // tag::queue-q-design-snake-game[] ===== Design Snake Game -*QU-2*) _Design the `move` function for the snake game. The move function returns an integer representing the current score. If the snake goes out of the given height and width or hit itself the game is over and return `-1`._ +*QU-2*) _Design the `move` function for the snake game. The move function returns an integer representing the current score. If the snake goes out of the given height and width or hit itself, the game is over and return `-1`._ Example: diff --git a/book/content/part02/stack.asc b/book/content/part02/stack.asc index 90b3a859..bf66f49f 100644 --- a/book/content/part02/stack.asc +++ b/book/content/part02/stack.asc @@ -93,7 +93,7 @@ It's not very common to search for values on a stack (other Data Structures are // tag::stack-q-valid-parentheses[] ===== Validate Parentheses / Braces / Brackets -*ST-1*) _Given an string with 3 types of brakets: `()`, `{}`, and `[]`. Validate they are properly closed and opened._ +*ST-1*) _Given a string with three types of brackets: `()`, `{}`, and `[]`. Validate they are correctly closed and opened._ Examples: @@ -125,7 +125,7 @@ _Solution: <>_ // tag::stack-q-daily-temperatures[] ===== Daily Temperaturs -*ST-2*) _Given an array of integers from 30 to 100 (daily temperatures), return another array that for each day in the input, tells you how many days you would have to wait until a warmer temperature. If no warmer temperature is possible then return `0` for that element._ +*ST-2*) _Given an array of integers from 30 to 100 (daily temperatures), return another array that, for each day in the input, tells you how many days you would have to wait until warmer weather. If no warmer climate is possible, then return `0` for that element._ Examples: diff --git a/book/content/part03/binary-search-tree-traversal.asc b/book/content/part03/binary-search-tree-traversal.asc index 7b40f9bd..9a21e8fc 100644 --- a/book/content/part03/binary-search-tree-traversal.asc +++ b/book/content/part03/binary-search-tree-traversal.asc @@ -5,7 +5,7 @@ endif::[] === Binary Tree Traversal (((Binary Tree Traversal))) -As mentioned before, there are different ways to visit all the nodes or search for a value in a binary tree. On this section, we are going to focus on depth-first tree traversal. +In this section, we are going to focus on depth-first tree traversal. ==== In Order Traversal (((Tree Traversal, In Order))) @@ -33,7 +33,7 @@ Check out the implementation: include::{codedir}/data-structures/trees/binary-search-tree.js[tag=inOrderTraversal, indent=0] ---- -This function goes recursively to the leftmost element and then yield that node, then we go to the right child (if any) and repeat the process. This method will get us the values ordered. +This function gets the leftmost element (recursively) and then yields that node, then we go to the right child (if any) and repeat the process. This method will get us the values ordered. ==== Pre Order Traversal (((Tree Traversal, Pre Order))) @@ -229,4 +229,3 @@ include::../../interview-questions/binary-tree-right-side-view.js[tags=descripti ---- _Solution: <>_ - diff --git a/book/content/part03/binary-search-tree.asc b/book/content/part03/binary-search-tree.asc index 4a051b4b..db6fcfce 100644 --- a/book/content/part03/binary-search-tree.asc +++ b/book/content/part03/binary-search-tree.asc @@ -11,14 +11,14 @@ endif::[] .To recap, the Binary Search Tree (BST) is a tree data structure that keeps the following constraints: -* Each node must have at most two children. Usually referred to as "left" and "right". -* All trees must a have a "root" node. +* Each node must have at most two children. Usually referred to as "left" and "right." +* All trees must have a "root" node. * The order of nodes values must be: `left child < parent < right child`. * Nodes might need re-ordering after each insert/delete operation to keep the `left <= parent < right` constraint. ==== Implementing a Binary Search Tree -The first step is to implement the Binary Tree Node, which can hold 0, 1 or 2 children. +The first step is to implement the Binary Tree Node, which can hold 0, 1, or 2 children. .Binary Tree Node's constructor [source, javascript] @@ -32,7 +32,7 @@ Does this look familiar to you? It’s almost like the linked list node, but ins We also added the `meta` object to hold some metadata about the node, like duplicity, color (for red-black trees), or any other data needed for future algorithms. -We implemented the node, now let’s layout other methods that we can implement for a BST: +We implemented the node; now, let’s layout other methods that we can implement for a BST: .Binary Search Tree's class [source, javascript] @@ -47,13 +47,13 @@ include::{codedir}/data-structures/trees/binary-search-tree.js[tag=snippet, inde } ---- -With the methods `add` and `remove` we have to guarantee that our tree always has one root element from where we can navigate left or right based on the value that we are looking for. Let's implement those `add` method first: +With the methods `add` and `remove`, we have to guarantee that our tree always has one root element from where we can navigate left or right based on the value we are looking for. Let's implement those `add` method first: ===== Inserting new elements in a BST -.For inserting an element, in a BST, we have two scenarios: +.For inserting an element in a BST, we have two scenarios: 1. If the tree is empty (root element is null), we add the newly created node as root, and that's it! -2. If the root is not null. Start from it and compare the node’s value against the new element. If the node has higher than a new item, we move to the right child, otherwise to the left. We check each node recursively until we find an empty spot where we can put the new element and keep the rule `right < parent < left`. +2. If the root is not null. Start from it and compare the node’s value against the new element. If the node has higher than a new item, we move to the right child, otherwise to the left. We check each node recursively until we find an empty spot to put the new element and keep the rule `right < parent < left`. 3. If we insert the same value multiple times, we don’t want duplicates. So, we can keep track of multiples using a duplicity counter. For instance, let’s say that we want to insert the values 19, 21, 10, 2, 8 in a BST: @@ -61,15 +61,15 @@ For instance, let’s say that we want to insert the values 19, 21, 10, 2, 8 in .Inserting values on a BST. image::image36.png[image,width=528,height=329] -In the last box of the image above, when we are inserting node 18, we start by the root (19). Since 18 is less than 19, then we move left. Node 18 is greater than 10, so we move right. There’s an empty spot, and we place it there. Let’s code it up: +In the last box of the image above, we start by the root when we insert node 18 (19). Since 18 is less than 19, then we move left. Node 18 is greater than 10, so we move right. There’s an empty spot, and we place it there. Let’s code it up: .Binary Search Tree's class [source, javascript] ---- include::{codedir}/data-structures/trees/binary-search-tree.js[tag=add, indent=0] ---- -<1> We are using a helper function `findNodeAndParent` to iterate through the tree finding a node with current value “found” and its parent (implementation on the next section). -<2> We are taking care of duplicates. Instead of inserting duplicates we are keeping a multiplicity tally. We have to decrease it when removing nodes. +<1> We are using a helper function `findNodeAndParent` to iterate through the tree, finding a node with the current value “found” and its parent (implementation on the next section). +<2> We are taking care of duplicates. Instead of inserting duplicates, we are keeping a multiplicity tally. We have to decrease it when removing nodes. ===== Finding a value in a BST @@ -81,11 +81,11 @@ We can implement the find method using the helper `findNodeAndParent` as follows include::{codedir}/data-structures/trees/binary-search-tree.js[tag=find, indent=0] ---- -`findNodeAndParent` is a recursive function that goes to the left child or right depending on the value. However, if the value already exists, it will return it in `found` variable. +`findNodeAndParent` is a recursive function that goes to the left or right child, depending on the value. However, if the value already exists, it will return it in `found` variable. ===== Removing elements from a BST -Deleting a node from a BST have three cases. +Deleting a node from a BST has three cases. .The node is a 1. leaf @@ -100,7 +100,7 @@ Deleting a leaf is the easiest; we look for their parent and set the child to nu image::image37.png[image,width=528,height=200] -Node 18, will be hanging around until the garbage collector is run. However, there’s no node referencing to it so it won’t be reachable from the tree anymore. +Node 18, will be hanging around until the garbage collector is run. However, there’s no node referencing to it to no longer be reachable from the tree. ====== Removing a parent (Node with 1 children) @@ -114,7 +114,7 @@ In the example, we removed node `10` from the tree, so its child (node 2) needs ====== Removing a full parent (Node with 2 children) or root -Removing a parent of two children is the trickiest of all cases because we need to find new parents for two children. (This sentence sounds tragic out of context 😂) +Removing a parent of two children is the trickiest of all cases because we need to find new parents. (This sentence might sound tragic out of context 😂) .Removing node with two children from a BST. image::image39.png[image,width=528,height=404] @@ -134,13 +134,13 @@ All the described scenarios removing nodes with zero, one and two children can b include::{codedir}/data-structures/trees/binary-search-tree.js[tag=remove, indent=0] ---- <1> Try to find if the value exists on the tree. -<2> If the value doesn’t exist we are done! -<3> Create new subtree without the value to delete +<2> If the value doesn’t exist, we are done! +<3> Create a new subtree without the value to delete <4> Check the multiplicity (duplicates) and decrement the count if we have multiple nodes with the same value -<5> If the `nodeToRemove` was the root, then we move the removed node’s children as the new root. -<6> If it was not the root, then we go to the deleted node’s parent and put their children there. +<5> If the `nodeToRemove` was the root, we wouldwould move the removed node’s children as the new root. +<6> If it was not the root, we will go to the deleted node’s parent and put their children there. -We compute `removedNodeChildren`, which is the resulting subtree after combining the children of the deleted node. +We compute `removedNodeChildren`, which is the resulting subtree after combining the deleted node children. The method to combine subtrees is the following: @@ -150,7 +150,7 @@ The method to combine subtrees is the following: include::{codedir}/data-structures/trees/binary-search-tree.js[tag=combine, indent=0] ---- -Take a look at the code above and the example. You will see how to remove node `30` and combine both children subtree and keeping the BST rules. Also, this method uses a helper to get the left-most node. We can implement it like this: +Take a look at the code above and the example. You will see how to remove node `30` and combine both children's subtree, and keeping the BST rules. Also, this method uses a helper to get the left-most node. We can implement it like this: .Binary Search Tree's get the leftmost node [source, javascript] @@ -162,12 +162,12 @@ That’s all we need to remove elements from a BST. Check out the complete BST i ==== Differentiating a balanced and non-balanced Tree -As we insert and remove nodes from a BST we could end up like the tree on the left: +As we insert and remove nodes from a BST, we could end up like the tree on the left: .Balanced vs. Unbalanced Tree. image::image40.png[image,width=454,height=201] -The tree on the left is unbalanced. It looks like a Linked List and has the same runtime! Searching for an element would be *O(n)*, yikes! However, on a balanced tree, the search time is *O(log n)*, which is pretty good! That’s why we always want to keep the tree balanced. In further chapters, we are going to explore how to keep a tree balanced after each insert/delete. +The tree on the left is unbalanced. It looks like a Linked List and has the same runtime! Searching for an element would be *O(n)*, yikes! However, on a balanced tree, the search time is *O(log n)*, which is pretty good! That’s why we always want to keep the tree balanced. In further chapters, we will explore how to keep a tree balanced after each insert/delete. ==== Tree Complexity diff --git a/book/content/part03/graph-search.asc b/book/content/part03/graph-search.asc index 6f59d05f..117e84fa 100644 --- a/book/content/part03/graph-search.asc +++ b/book/content/part03/graph-search.asc @@ -46,8 +46,8 @@ image::directed-graph.png[directed graph] With Depth-First Search (DFS), we go deep before going wide. -Let's say that we use DFS on the graph shown above, starting with node `0`. -A DFS will probably visit 5, then visit `1` and continue going down `3` and `2`. As you can see, we need to keep track of visited nodes, since in graphs, we can have cycles like `1-3-2`. +We use DFS on the graph shown above, starting with node `0`. +A DFS will probably visit 5, then visit `1` and continue going down `3` and `2`. As you can see, we need to keep track of visited nodes, since, in graphs, we can have cycles like `1-3-2`. Finally, we back up to the remaining node `0` children: node `4`. So, DFS would visit the graph: `[0, 5, 1, 3, 2, 4]`. @@ -59,7 +59,7 @@ So, DFS would visit the graph: `[0, 5, 1, 3, 2, 4]`. With Breadth-First Search (BFS), we go wide before going deep. // TODO: BFS traversal -Let's say that we use BFS on the graph shown above, starting with the same node `0`. +We use BFS on the graph shown above, starting with the same node `0`. A BFS will visit 5 as well, then visit `1` and not go down to its children. It will first finish all the children of node `0`, so it will visit node `4`. After all the children of node `0` are visited, it will continue with all the children of node `5`, `1`, and `4`. @@ -98,7 +98,7 @@ NOTE: Every tree is a graph, but not every graph is a tree. Only acyclic directe // tag::graph-q-course-schedule[] ===== Course Schedule -*gr-1*) _Check if it's possible to take a number of courses while satisfying their prerequisites._ +*gr-1*) _Check if it's possible to take all courses while satisfying their prerequisites._ // end::graph-q-course-schedule[] diff --git a/book/content/part03/graph.asc b/book/content/part03/graph.asc index 68931aca..cceacd24 100644 --- a/book/content/part03/graph.asc +++ b/book/content/part03/graph.asc @@ -8,12 +8,12 @@ endif::[] (((Graph))) (((Data Structures, Non-Linear, Graph))) Graphs are one of my favorite data structures. -They have a lot of cool applications like optimizing routes, social network analysis to name a few. You are probably using apps that use graphs every day. +They have many exciting applications like optimizing routes and social network analysis, to name a few. You are probably using apps that use graphs every day. First, let’s start with the basics. TIP: A graph is a non-linear data structure where a node can have zero or more connected nodes. -You can think of graph like an extension of a Linked List. Instead of having a `next` or `previous` reference, you can have as many as you want. You can implement a graph node as an array of associated nodes. +You can think of a Graph as an extension of a Linked List. Instead of having a `next` or `previous` reference, you can have as many as you want. You can implement a graph node as an array of associated nodes. .Node's constructor [source, javascript] @@ -24,7 +24,7 @@ include::{codedir}/data-structures/graphs/node.js[tag=constructor] As you can see, it’s pretty similar to the Linked List node. The only difference is that it uses an *array* of adjacent nodes instead of just one or two. -Other difference between a linked list and graph is that a linked list always has a root node (or first element), while the graph doesn’t. +Another difference between a linked list and a Graph is that a linked list always has a root node (or first element), while the Graph doesn’t. You can start traversing a graph from anywhere. Let’s examine these graph properties! ==== Graph Properties @@ -43,38 +43,38 @@ A graph can be either *directed* or *undirected*. image::image43.jpg[image,width=469,height=192] -An *undirected graph* has edges that are *two-way street*. E.g., On the undirected example, you can traverse from the green node to the orange and vice versa. +An *undirected graph* has edges that are *two-way street*. E.g., On the undirected example, you can traverse from the green Node to the orange and vice versa. -A *directed graph (digraph)* has edges that are *one-way street*. E.g., On the directed example, you can only go from green node to orange and not the other way around. When one node has an edge to itself is called a *self-loop*. +A *directed graph (digraph)* has edges that are *one-way street*. E.g., On the directed example, you can only go from green Node to orange and not the other way around. When one Node has an edge to itself is called a *self-loop*. ===== Graph Cycles A graph can have *cycles* or not. -.Cyclic vs Acyclic Graphs. +.Cyclic vs. Acyclic Graphs. image::image44.jpg[image,width=444,height=194] (((Cyclic Graph))) A *cyclic graph* is the one that you can pass through a node more than once. -E.g., On the cyclic illustration, if you start in the green node, then go the orange and purple, finally, you could come back to green again. +E.g., On the cyclic illustration, if you start in the green Node, go the orange and purple; finally, you could come back to green again. Thus, it has a *cycle*. (((Acyclic Graph))) -An acyclic graph is the one that you can’t pass through a node more than once. E.g., in the acyclic illustration, can you to find a path where you can pass through the same vertex more than one? +An acyclic graph is the one that you can’t pass through a node more than once. E.g., in the acyclic illustration, can you find a path where you can pass through the same vertex more than one? (((Directed Acyclic Graph))) (((DAG))) -The *Directed Acyclic Graph (DAG)* is unique. It has many applications like scheduling tasks, spreadsheets change propagation, and so forth. DAG is also called *Tree* data structure only when each node has only *one parent*. +The *Directed Acyclic Graph (DAG)* is unique. It has many applications like scheduling tasks, spreadsheets' change propagation, and so forth. DAG is also called *Tree* data structure only when each Node has only *one parent*. ===== Connected vs Disconnected vs Complete Graphs .Different kinds of graphs: disconnected, connected, and complete. image::image45.png[image,width=1528,height=300] -A *disconnected graph* is one that has one or more subgraph. In other words, a graph is *disconnected* if two nodes don’t have a path between them. +A *disconnected graph* is one that has one or more subgraphs. In other words, a graph is *disconnected* if two nodes don’t have a path between them. -A *connected graph* is the opposite to disconnected, there’s a path between every node. No one is left behind. +A *connected graph* is the opposite of disconnected; there’s a path between every Node. No one is left stranded. -A *complete graph* is where every node is adjacent to all the other nodes in the graph. E.g., If there are seven nodes, every node has six edges. +A *complete graph* is where every Node is adjacent to all the other nodes in the Graph. E.g., If there are seven nodes, every Node has six edges. ===== Weighted Graphs (((Weighted Graphs))) @@ -106,7 +106,7 @@ Graphs become a metaphor where nodes and edges model something from our physical ** Edge = data link ** Weight = connection speed -There are endless applications for graphs in electronics, social networks, recommendation systems and many more. That’s cool and all, but how do we represent graphs in code? Let’s see that in the next section. +There are endless applications for graphs in electronics, social networks, recommendation systems, and many more. That’s cool and all, but how do we represent graphs in code? Let’s see that in the next section. ==== Representing Graphs @@ -117,17 +117,17 @@ There are two main ways to graphs one is: ===== Adjacency Matrix (((Adjacency Matrix))) -Representing graphs as adjacency matrix is done using a two-dimensional array. For instance, let’s say we have the following graph: +Representing graphs as adjacency matrix is done using a two-dimensional array. For instance, let’s say we have the following Graph: .Graph and its adjacency matrix. image::image47.png[image,width=438,height=253] -The number of vertices |V| define the size of the matrix. In the example, we have five vertices, so we have a 5x5 matrix. +The number of vertices, |V|, defines the size of the matrix. In the example, we have five vertices, so we have a 5x5 matrix. We fill up the matrix row by row. Mark with 1 (or any other weight) when you find an edge. E.g. * *Row 0:* It has a self-loop, so it has a `1` in the coordinate 0,0. Node 0 also has an edge to 1 and 4, so we mark it. -* *Row 1:* The node 1 has one edge to 3, so we check it. +* *Row 1:* node 1 has one edge to 3, so we check it. * *Row 2:* Node 2 goes to Node 4, so we note the insertion with 1. * etc. @@ -154,26 +154,26 @@ digraph[2][3]; //=> 0 digraph[3][2]; //=> 1 ---- -As you can see, we don’t have a link from node 2 to 3, but we do in the opposite direction. Querying arrays is constant time *O(1)*, so no bad at all. +As you can see, we don’t have a link from node 2 to 3, but we do in the opposite direction. Querying arrays is constant time *O(1)*, so not bad at all. -The issue with the adjacency matrix is the space it takes. Let’s say you want to represent the entire Facebook network on a digraph. You would have a massive matrix of 1.2 billion x 1.2 billion. The worst part is that most of it would be empty (zeros) since people are friends to at most few thousands. +The issue with the adjacency matrix is the space it takes. Let’s say you want to represent the entire Facebook network on a digraph. You would have a massive matrix of 1.2 billion x 1.2 billion. The worst part is that most of it would be empty (zeros) since people are friends to at most a few thousands. -TIP: When the graph has few connections compared to the number of nodes we say that we have a *sparse graph*. On the opposite, if we have almost complete graphs, we say we have a *dense graph*. +TIP: When the Graph has few connections compared to the number of nodes, we say that we have a *sparse graph*. Conversely, if we have almost complete maps, we say we have a *dense graph*. -The space complexity of the adjacency matrix is *O(|V|^2^)*, where |V| is the number of vertices/nodes. +The adjacency matrix's space complexity is *O(|V|^2^)*, where |V| is the number of vertices/nodes. ===== Adjacency List (((Adjacency List))) -Another way to represent a graph is by using an adjacency list. This time instead of using an array (matrix) we use a list. +Another way to represent a graph is by using an adjacency list. This time instead of using an array (matrix), we use a list. .Graph represented as an Adjacency List. image::image48.png[image,width=528,height=237] -If we want to add a new node to the list, we can do it by adding one element to the end of the array of nodes *O(1)*. In the next section, we are going to explore the running times of all operations in an adjacency list. +If we want to add a new node to the list, we can do it by adding one element to the end of the array of nodes *O(1)*. In the next section, we will explore the running times of all operations in an adjacency list. ==== Implementing a Graph data structure -Since adjacency lists are more efficient (than adjacency matrix), we are going to use to implement a graph data structure. +Since adjacency lists are more efficient (than adjacency matrix), we will use to implement a graph data structure. Let's start by creating the constructor of the Graph class. @@ -183,11 +183,11 @@ Let's start by creating the constructor of the Graph class. include::{codedir}/data-structures/graphs/graph.js[tag=constructor] ---- -Notice that the constructor takes a parameter. The `edgeDirection` allow us to use one class for both undirected and directed graphs. +Notice that the constructor takes a parameter. The `edgeDirection` allows us to use one class for both undirected and directed graphs. ==== Adding a vertex -For adding a vertex, we first need to check if the node already exists. If so, we return the node. +For adding a vertex, we first need to check if the Node already exists. If so, we return the Node. .Graphs's `addVertex` method [source, javascript] @@ -198,11 +198,11 @@ include::{codedir}/data-structures/graphs/graph.js[tag=addVertex, indent=0] <2> Create new `Node` with the given value. <3> Set `hashMap` with value and node pair. -If the node doesn't exist, then we create the new node and add it to a `HashMap`. +If the Node doesn't exist, we create the new Node and add it to a `HashMap`. TIP: <> stores key/pair value very efficiently. Lookup is `O(1)`. -The `key` is the node's value, while the `value` is the newly created node. +The `key` is the Node's value, while the `value` is the newly created Node. The `Node` class is constructed as follows: @@ -222,9 +222,9 @@ include::{codedir}/data-structures/graphs/graph.js[tag=removeVertex, indent=0] ---- <1> Try to find if node exists. <2> Remove related edges. See `removeAdjacent` below. -<3> Remove node with the given value. +<3> Remove Node with the given value. -Notice on the callout 2, that we visit every edge on the graph and remove the ones that contain the node to remove. +Notice on callout 2 that we visit every edge on the Graph and remove the ones that contain the Node to remove. For removing adjacent nodes, we use Node's method called `removeAdjacent` that can be implemented as follows: @@ -234,13 +234,13 @@ For removing adjacent nodes, we use Node's method called `removeAdjacent` that c include::{codedir}/data-structures/graphs/node.js[tag=removeAdjacent, indent=0] ---- -All adjacencies are stored as a HashSet to provide constant time deletion. +All adjacencies are stored as a HashSet to provide constant-time deletion. ==== Adding an edge -An edge is a connection between two nodes (vertices). If the graph is undirected means that every link is a two-way street. When we create the edge from node 1 to node 2, we also need to establish a connection between node 2 and 1 for undirected graphs. +An edge is a connection between two nodes (vertices). If the Graph is undirected means that every link is a two-way street. When we create the edge from node 1 to node 2, we also need to establish a connection between nodes 2 and 1 for undirected graphs. -If we are dealing with a digraph (directed graph), then we create one edge. +If we are dealing with a digraph (directed Graph), then we create one edge. .Graphs's `addEdge` method [source, javascript] @@ -249,7 +249,7 @@ include::{codedir}/data-structures/graphs/graph.js[tag=addEdge, indent=0] ---- <1> Find or create nodes if they don't exists yet. <2> Create edge from source to destination. -<3> If us a undirected graph, create the edge on the other direction. +<3> If it's an undirected graph, create the edge in the other direction. We can add adjacencies using the `addAdjacent` method from the Node class. @@ -302,4 +302,4 @@ include::{codedir}/data-structures/graphs/node.js[tag=removeAdjacent, indent=0] |=== // end::table[] -As you can see using a `HashSet` on for the adjacency list make a performance improvement. +As you can see, using a `HashSet` on for the adjacency list make a performance improvement if you need to query for connectivity. However, this is rarely required. Most graph algorithms visit all adjacent nodes one by one. diff --git a/book/content/part03/time-complexity-graph-data-structures.asc b/book/content/part03/time-complexity-graph-data-structures.asc index 06f2f22c..366b2111 100644 --- a/book/content/part03/time-complexity-graph-data-structures.asc +++ b/book/content/part03/time-complexity-graph-data-structures.asc @@ -5,7 +5,7 @@ endif::[] === Summary -In this section, we learned about Graphs applications, properties and how we can create them. We mention that you can represent a graph as a matrix or as a list of adjacencies. We went for implementing the later since it's more space efficient. We cover the basic graph operations like adding and removing nodes and edges. In the algorithms section, we are going to cover searching values in the graph. +In this section, we learned about Graphs, applications, properties, and how we can create them. We mention that you can represent a graph as a matrix or as a list of adjacencies. We went for implementing the latter since it's more space-efficient. We cover the basic graph operations like adding and removing nodes and edges. In the algorithms section, we are going to cover searching values in the graph. (((Tables, Non-Linear DS, BST/Maps/Sets Complexities))) // tag::table[] diff --git a/book/content/part03/tree-intro.asc b/book/content/part03/tree-intro.asc index 1cb9d3e7..80d65903 100644 --- a/book/content/part03/tree-intro.asc +++ b/book/content/part03/tree-intro.asc @@ -16,7 +16,7 @@ As you can see in the picture above, this data structure resembles an inverted t ==== Implementing a Tree -Implementing a tree is not too hard. It’s similar to a <>. The main difference is that instead of having a `next` and `previous` links, we have an infinite number of linked nodes (children/descendants). +Implementing a tree is not too hard. It’s similar to a <>. The main difference is that instead of having the `next` and `previous` links, we have an 0 or more number of linked nodes (children/descendants). .Tree's node constructor [source, javascript] @@ -35,7 +35,7 @@ Simple! Right? But there are some constraints that you have to keep at all times .Here’s a summary of the three basic concepts: * The topmost node is called *root*. -* A node’s immediate linked nodes are called *children*. +* A node’s primary linked nodes are called *children*. * A *leaf* or *terminal node* is a node without any descendant or children. * A node immediate ancestor is called *parent*. Yep, and like a family tree, a node can have *uncles* and *siblings*, and *grandparents*. * *Internal nodes* are all nodes except for the leaf nodes and the root node. @@ -54,14 +54,14 @@ image::image31.jpg[image] ==== Types of Binary Trees -There are different kinds of trees, depending on the restrictions. E.g. The trees with two children or less are called *binary tree*, while trees with at most three children are called *Ternary Tree*. Since binary trees are the most common, we will cover them here and others in another chapter. +There are different kinds of trees, depending on the restrictions. E.g. The trees with two children or less are called *binary tree*, while trees with at most three children are *Ternary Tree*. Since binary trees are the most common, we will cover them here and others in another chapter. ===== Binary Tree (((Binary Tree))) (((Data Structures, Non-Linear, Binary Tree))) The binary restricts the nodes to have at most two children. Trees can have 0, 1, 2, 7, or more, but not binary trees. -.Binary tree has at most 2 children while non-binary trees can have more. +.Binary tree has at most two children while non-binary trees can have more. image::image32.png[image,width=321,height=193] Binary trees are one of the most used kinds of trees, and they are used to build other data structures. @@ -90,7 +90,7 @@ image::image33.png[image,width=348,height=189] (((Max-Heap))) (((Min-Heap))) (((Data Structures, Non-Linear, Binary Heap))) -The heap (max-heap) is a type of binary tree where the parent's value is higher than both children's value. Opposed to the BST, the left child doesn’t have to be smaller than the right child. +The heap (max-heap) is a binary tree where the parent's value is higher than both children's value. Opposed to the BST, the left child doesn’t have to be smaller than the right child. .Heap vs BST image::image34.png[image,width=325,height=176] @@ -106,6 +106,6 @@ image::image35.png[image,width=258,height=169] .Heap vs. Binary Search Tree **** -Heap is better at finding max or min values in constant time *O(1)*, while a balanced BST is good a finding any element in *O(log n)*. Heaps are often used to implement priority queues while BST is used when you need every value sorted. +Heap is better at finding max or min values in constant time *O(1)*, while a balanced BST is good a finding any element in *O(log n)*. Heaps are often used to implement priority queues, while BST is used when you need every value sorted. **** indexterm:[Runtime, Logarithmic] diff --git a/book/content/part03/tree-map.asc b/book/content/part03/tree-map.asc index 23e1cb51..8820212a 100644 --- a/book/content/part03/tree-map.asc +++ b/book/content/part03/tree-map.asc @@ -9,25 +9,44 @@ endif::[] A Map is an abstract data structure to store pairs of data: *key* and *value*. It also has a fast key lookup of `O(1)` for <> or `O(log n)` for <>. -We can implement a Map using two different underlying data structures: +We can implement a Map using two different underlying data structures: Hash Map or Tree Map. -* *HashMap*: it’s a map implementation using an *array* and a *hash function*. The job of the hash function is to convert the `key` into an index that maps to the `value`. Optimized HashMap can have an average runtime of *O(1)*. -* *TreeMap*: it’s a map implementation that uses a self-balanced Binary Search Tree (like <> or Red-Black Tree). The BST nodes store the key, and the value and nodes are sorted by key guaranteeing an *O(log n)* look up. -We already covered <>, so this chapter we are going to focus on TreeMap. +==== HashMap vs TreeMap + +.A map can be implemented using hash functions or a binary search tree: +* *HashMap*: it’s a map implementation using an *array* and a *hash function*. The hash function's job is to convert the `key` into an index that maps to the `value`. HashMap has an average runtime of *O(1)*. +* *TreeMap*: it’s a map implementation that uses a self-balanced Binary Search Tree (like <> or Red-Black Tree). The BST nodes store the key, and the value and nodes are sorted by key guaranteeing an *O(log n)* lookup time. + +.When to use a TreeMap vs. HashMap? +* `HashMap` is more time-efficient. A `TreeMap` is more space-efficient. +* `TreeMap` search complexity is *O(log n)*, while an optimized `HashMap` is *O(1)* on average. +* `HashMap`’s keys are in insertion order (or random depending on the implementation). `TreeMap`’s keys are always sorted. +* `TreeMap` offers some statistical data for free such as: get minimum, get maximum, median, find ranges of keys. `HashMap` doesn’t. +* `TreeMap` has a guarantee always an *O(log n)*, while `HashMap`s has an amortized time of *O(1)* but in the rare case of a rehash, it would take an *O(n)*. -TIP: JavaScript only provides (Hash) `Map` that's enough for most needs. But we are going to implement a Tree Map so it's more clear how it works and when it should be used. +==== TreeMap Time complexity vs HashMap + +As we discussed so far, there is a trade-off between the implementations. +(((Tables, Non-Linear DS, HashMap/TreeMap complexities))) (((Linear))) (((Runtime, Linear))) (((Logarithmic))) (((Runtime, Logarithmic))) + +// also on: book/content/part03/time-complexity-graph-data-structures.asc +// tag::table[] +.Time complexity for different Maps implementations +|=== +.2+.^s| Data Structure 2+^s| Searching By .2+^.^s| Insert .2+^.^s| Delete .2+^.^s| Space Complexity +^|_Index/Key_ ^|_Value_ +| <> ^|O(1) ^|O(n) ^|O(1)* ^|O(1) ^|O(n) +| <> ^|O(log n) ^|O(n) ^|O(log n) ^|O(log n) ^|O(n) +|=== +{empty}* = Amortized run time. E.g. rehashing might affect run time to *O(n)*. +// end::table[] -A TreeMap is a Map implementation using a Balanced Binary Search Trees. -Implementing a Map with a tree, TreeMap, has a couple of advantages over a HashMap: +We already covered <>, so in this chapter, we will focus on TreeMap. -* Keys are always sorted. -* Statistical data can be easily obtained like the median, highest, lowest key. -* Collisions are not a concern so in the worst case is still *O(log n)*. -* Trees are more space efficient and don’t need to allocate memory beforehand (e.g. `HashMap`’s initial capacity) nor you have to rehash when is getting full. +TIP: JavaScript only provides (Hash) `Map`. That's enough for most needs. But we will implement a TreeMap so it's more clear how it works and when it should be used. Ok, now that you know the advantages, let’s implement it! -For a full comparison read the <> section. Let’s get started with the essential functions. They have the same interface as the `HashMap` (but the implementation is different). @@ -45,7 +64,7 @@ class TreeMap { ==== Inserting values into a TreeMap -For inserting a value on a TreeMap, we first need to inialize the tree: +For inserting a value on a TreeMap, we first need to initialize the tree: .TreeMap constructor [source, javascript] @@ -53,7 +72,7 @@ For inserting a value on a TreeMap, we first need to inialize the tree: include::{codedir}/data-structures/maps/tree-maps/tree-map.js[tag=constructor, indent=0] ---- -The tree can be an instance of any Binary Search Tree that we implemented so far. However, for better performance, it should be a self-balanced tree like a https://github.com/amejiarosario/dsa.js/blob/f69b744a1bddd3d99243ca64b3ad46f3f2dd7342/src/data-structures/trees/red-black-tree.js#L20[Red-Black Tree] or https://github.com/amejiarosario/dsa.js/blob/f69b744a1bddd3d99243ca64b3ad46f3f2dd7342/src/data-structures/trees/avl-tree.js#L64[AVL Tree]. +The tree can be an instance of any Binary Search Tree that we implemented so far. For better performance, it should be a self-balanced tree like a https://github.com/amejiarosario/dsa.js/blob/f69b744a1bddd3d99243ca64b3ad46f3f2dd7342/src/data-structures/trees/red-black-tree.js#L20[Red-Black Tree] or https://github.com/amejiarosario/dsa.js/blob/f69b744a1bddd3d99243ca64b3ad46f3f2dd7342/src/data-structures/trees/avl-tree.js#L64[AVL Tree]. Let's implement the method to add values to the tree. @@ -67,7 +86,7 @@ Adding values is very easy (once we have the underlying tree implementation). ==== Getting values out of a TreeMap -When We search by key in a tree map, it takes *O(log n)*. This is the implementation: +When we search by key in a treemap, it takes *O(log n)*. The following is a possible implementation: .TreeMap `get` and `has` method [source, javascript] @@ -86,7 +105,7 @@ include::{codedir}/data-structures/maps/tree-maps/tree-map.js[tag=iterators, ind .JavaScript Iterators and Generators **** -Generators are useful for producing values that can you can iterate in a `for...of` loop. Generators use the `function*` syntax which expects to have a `yield` with a value. +Generators are useful for producing values that can you can iterate in a `for...of` loop. Generators use the `function*` syntax, which expects to have a `yield` with a value. **** ==== Deleting values from a TreeMap @@ -102,35 +121,3 @@ include::{codedir}/data-structures/maps/tree-maps/tree-map.js[tag=delete, indent The BST implementation does all the heavy lifting. That’s it! To see the full file in context, click here: https://github.com/amejiarosario/dsa.js/blob/f69b744a1bddd3d99243ca64b3ad46f3f2dd7342/src/data-structures/maps/tree-maps/tree-map.js#L22[here] - - -==== HashMap vs TreeMap - -.A map can be implemented using hash functions or binary search tree: -- *HashMap*: it’s a map implementation using an *array* and *hash function*. The job of the hash function is to convert the key into an index that contains the matching data. Optimized HashMap can have an average runtime of *O(1)*. -- *TreeMap*: it’s a map implementation that uses a self-balanced Binary Search Tree (red-black tree). The BST nodes store the key, and the value and nodes are sorted by key guaranteeing an *O(log n)* look up. - - -.When to use a TreeMap vs. HashMap? -* `HashMap` is more time-efficient. A `TreeMap` is more space-efficient. -* `TreeMap` search complexity is *O(log n)*, while an optimized `HashMap` is *O(1)* on average. -* `HashMap`’s keys are in insertion order (or random depending in the implementation). `TreeMap`’s keys are always sorted. -* `TreeMap` offers some statistical data for free such as: get minimum, get maximum, median, find ranges of keys. `HashMap` doesn’t. -* `TreeMap` has a guarantee always an *O(log n)*, while `HashMap`s has an amortized time of *O(1)* but in the rare case of a rehash, it would take an *O(n)*. - -==== TreeMap Time complexity vs HashMap - -As we discussed so far, there is a trade-off between the implementations. -(((Tables, Non-Linear DS, HashMap/TreeMap complexities))) (((Linear))) (((Runtime, Linear))) (((Logarithmic))) (((Runtime, Logarithmic))) - -// also on: book/content/part03/time-complexity-graph-data-structures.asc -// tag::table[] -.Time complexity for different Maps implementations -|=== -.2+.^s| Data Structure 2+^s| Searching By .2+^.^s| Insert .2+^.^s| Delete .2+^.^s| Space Complexity -^|_Index/Key_ ^|_Value_ -| <> ^|O(1) ^|O(n) ^|O(1)* ^|O(1) ^|O(n) -| <> ^|O(log n) ^|O(n) ^|O(log n) ^|O(log n) ^|O(n) -|=== -{empty}* = Amortized run time. E.g. rehashing might affect run time to *O(n)*. -// end::table[] diff --git a/book/content/part03/tree-search-traversal.asc b/book/content/part03/tree-search-traversal.asc index 14179770..dbb9c797 100644 --- a/book/content/part03/tree-search-traversal.asc +++ b/book/content/part03/tree-search-traversal.asc @@ -5,7 +5,7 @@ endif::[] === Tree Search & Traversal -So far we covered, how to insert/delete/search values in a binary search tree (BST). +So far, we have covered how to insert/delete/search values in a binary search tree (BST). However, not all binary trees are BST, so there are other ways to look for values or visit all nodes in a particular order. If we have the following tree: @@ -19,7 +19,7 @@ If we have the following tree: 3 ---- -Depending on what traversal methods we used we will have a different visiting order. +Depending on what traversal methods we used, we will have a different visiting order. (((Tree Traversal))) (((Tree, Traversal))) @@ -30,9 +30,9 @@ Depending on what traversal methods we used we will have a different visiting or ** Pre-order (root-left-right): `10, 5, 4, 3, 30, 15, 40` ** Post-order (left-right-root): `3, 4, 5, 15, 40, 30, 10` -Why do we care? Well, there are specific problems that you can solve more optimally using one or another traversal method. For instance to get the size of a subtree, finding maximums/minimums, and so on. +Why do we care? Well, there are specific problems that you can solve more optimally using one or another traversal method. For instance, to get the size of a subtree, finding maximums/minimums, and so on. -Let's cover the Breadth-first search (BFS) and Depth-first search (DFS). +Let's cover the Breadth-first search (BFS) and the Depth-first search (DFS). [[bfs-tree]] ==== Breadth-First Search for Binary Tree @@ -93,7 +93,7 @@ console.log(Array.from(dummyIdMaker())); // [0, 1, 2] (((DFS))) (((Depth-First Search))) (((Tree, Depth-First Search))) -Depth-First search goes deep (depth) before going wide. It means that starting for the root it goes as deep as it can until it found a leaf node (node without children), then it visits all the remaining nodes that were in the path. +Depth-First search goes deep (depth) before going wide. It means that starting for the root, it goes as deep as it can until it found a leaf node (node without children), then it visits all the remaining nodes in the path. .Depth-First Search (DFS) Implementation with a Stack [source, javascript] @@ -103,7 +103,7 @@ include::{codedir}/data-structures/trees/binary-search-tree.js[tag=dfs,indent=0] This is an iterative implementation of a DFS using an <>. It's almost identical to the BFS, but instead of using a <> we use a Stack. -We can also implement it as recursive functions are we are going to see in the <> section. +We can also implement it as recursive functions we will see in the <> section. ==== Depth-First Search vs. Breadth-First Search @@ -112,7 +112,7 @@ We can see visually the difference between how the DFS and BFS search for nodes: .Depth-First Search vs. Breadth-First Search image::depth-first-search-dfs-breadth-first-search-bfs.jpg[] -As you can see the DFS in two iterations is already at one of the farthest nodes from the root while BFS search nearby nodes first. +As you can see, the DFS in two iterations is already at one of the farthest nodes from the root while BFS search nearby nodes first. .Use DFS when: - The node you are looking for is likely to be *far* from the root. diff --git a/book/content/part03/tree-set.asc b/book/content/part03/tree-set.asc index 507473b3..60fb0676 100644 --- a/book/content/part03/tree-set.asc +++ b/book/content/part03/tree-set.asc @@ -8,13 +8,13 @@ endif::[] [[tree-set-chap]] === Tree Set -A tree set is a data structure that stores unique values and keep them sorted. You can get check if a value exists in `O(log n)` time. +A tree set is a data structure that stores unique values and keeps them sorted. You can get check if a value exists in `O(log n)` time. -Another way to implement a Set is using a hash function, as we covered on <>. There are some key differences between the two implementations. +Another way to implement a Set is by using a hash function, as we covered on <>. There are some critical differences between the two implementations. ==== HashSet vs TreeSet -We can implement a `map` using a *<>* or a *<>*. If we use them to implement a `Set`, we would have a `HashSet` and `TreeSet`. As all data structures there are trade-offs. Here are some key differences: +We can implement a `map` using a *<>* or a *<>*. If we use them to implement a `Set`, we would have a `HashSet` and `TreeSet`. As with all data structures, there are trade-offs. Here are some key differences: * `TreeSet`, would return the values sorted in ascending order. * `HashSet`, would return the values in insertion order. @@ -41,7 +41,7 @@ indexterm:[Runtime, Linear] // end::table[] -TIP: JavaScript only provides (Hash) `Set` that's enough for most needs. But we are going to implement a Tree Set so it's more clear how it works and when it should be used. +TIP: JavaScript only provides (Hash) `Set` that's enough for most needs. But we will implement a Tree Set so it's more clear how it works and when it should be used. ==== Implementing a Tree Set @@ -54,7 +54,7 @@ include::{codedir}/data-structures/sets/tree-set.js[tag=constructor] ---- <1> Converts an array or any iterable data structure to a set. -An everyday use case for Sets is to remove duplicated values from an array. We can do that bypassing them in the constructor as follows: +An everyday use case for Sets is to remove duplicated values from an array. We can do that by bypassing them in the constructor as follows: .Removing duplicates from an Array using a Set [source, javascript] @@ -118,7 +118,7 @@ ascending order. .JavaScript Built-in `Symbol` iterator **** The `Symbol.iterator` built-in symbol specifies the default iterator for -an object. Used by `for...of`, `Array.from` and others. +an object. Used by `for...of`, `Array.from`, and others. **** Now we can convert from set to array and vice versa easily. For diff --git a/book/content/part04/algorithmic-toolbox.asc b/book/content/part04/algorithmic-toolbox.asc index 9539407a..27992bed 100644 --- a/book/content/part04/algorithmic-toolbox.asc +++ b/book/content/part04/algorithmic-toolbox.asc @@ -7,33 +7,33 @@ endif::[] === Algorithmic Toolbox Have you ever given a programming problem and freeze without knowing where to start? -Well, in this section we are going to give some tips, so you don't get stuck while coding. +Well, in this section, we are going to give some tips so you don't get stuck while coding. -TIP: TL;DR: Don't start coding right away. First, solve the problem, then write the code. Make it work first, make it better later. +TIP: TL;DR: Don't start coding right away. First, solve the problem, then write the code. Make it work first; make it better later. .Steps to solve algorithmic problems . *Understand* the requirements. Reframe it in your own words. . Draw a *simple example* (no edge cases yet) . *Brainstorm* possible solutions .. How would you solve this problem *manually*? (without a computer) Is there any formula or theorem you can use? -.. Is there any heuristics (largest, smallest, best ratio) or can you spot a pattern to solve this problem using a <>? -.. Can you address the simple base case and generalize for other cases using a *recursive solution*? Can you divide the problem in subproblems? Try <>. +.. Is there any heuristics (largest, smallest, best ratio), or can you spot a pattern to solve this problem using a <>? +.. Can you address the simple base case and generalize for other cases using a *recursive solution*? Can you divide the problem into subproblems? Try <>. .. Do you have to generate multiple solutions or try different paths? Try <>. .. List all the data structures that you know that might solve this problem. .. If anything else fails, how would you solve it the dumbest way possible (brute force). We can optimize it later. . *Test* your algorithm idea with multiple examples -. *Optimize* the solution –Only optimize when you have something working don't try to do both at the same time! +. *Optimize* the solution –Only optimize when you have something working. Don't try to do both at the same time! .. Can you trade-off space for speed? Use a <> to speed up results! .. Do you have a bunch of recursive and overlapping problems? Try <>. .. Re-read requirements and see if you can take advantage of anything. E.g. is the array sorted? . *Write Code*, yes, now you can code. -.. Modularize your code with functions (don't do it all in one giant function please 🙏) +.. Modularize your code with functions (don't do it all in one giant function, please 🙏) .. Comment down edge cases but don't address until the basic cases are working. . *Test* your code. .. Choose a typical input and test against your code. .. Brainstorm about edge cases (empty, null values, overflows, largest supported inputs) -.. How would scale your code beyond the current boundaries? +.. How would your code scale beyond the current boundaries? -These steps should get you going even with the toughest algorithmic problems. +These steps should get you going even with the most challenging algorithmic problems. Stay effective! diff --git a/book/content/part04/backtracking.asc b/book/content/part04/backtracking.asc index aedc6a91..81c81445 100644 --- a/book/content/part04/backtracking.asc +++ b/book/content/part04/backtracking.asc @@ -8,36 +8,35 @@ endif::[] (((Algorithmic Techniques, Backtracking))) Backtracking algorithms are used to find *all (or some)* solutions that satisfy a constraint. -Backtracking builds a solution step by step using recursion. +Backtracking builds a solution step by step, using recursion. If during the process it realizes a given path is not going to lead to a solution, it stops and steps back (backtracks) to try another alternative. -Some examples that use backtracking is a solving Sudoku/crosswords puzzle, and graph operations. +Some examples that use backtracking is solving Sudoku/crosswords puzzle and graph operations. ifndef::backend-pdf[] image::Sudoku_solved_by_bactracking.gif[] endif::backend-pdf[] -Listing all possible solutions might sound like a brute force. +Listing all possible solutions might sound like brute force. However, it is not the same. -Backtracking algorithms are faster because it test if a path will lead to a solution or not. +Backtracking algorithms are faster because it tests if a path will lead to a solution or not. .Brute Force vs. Backtracking Algorithms **** *Brute force* evaluates every possibility. *Backtracking* is an optimized brute force. -It stops evaluating a path as soon as some of the conditions are broken and move on to the next. -However, it can only be applied if a quick test can be run to tell if a candidate will contribute to a valid solution. +It stops evaluating a path as soon as some of the conditions are broken. However, it can only be applied if a quick test can be run to tell if a candidate will contribute to a correct solution. **** ==== How to develop backtracking algorithms? -Backtracking algorithms can be tricky to get right or reason about, but we are going to follow this recipe to make it easier. +Backtracking algorithms can be tricky to get right or reason about, but we will follow this recipe to make it easier. .Steps to create backtracking algorithms . Iterate through the given input . Make a change -. Recursively move to the next element +. Recursively move to the next element. . Test if the current change is a possible solution . Revert the change (backtracking) and try with the next item @@ -74,11 +73,11 @@ include::{codedir}/algorithms/permutations-backtracking.js[tag=snippet,indent=0] <2> Make a change: swap letters <3> Recursive function moving to the next element <4> Test if the current change is a solution: reached the end of the string. -<5> Revert back the change (backtracking): Undo swap from step 2 +<5> Revert the change (backtracking): Undo swap from step 2 As you can see, we iterate through each element and swap with the following letters until we reach the end of the string. Then, we roll back the change and try another path. -In the following tree, you can visualize how the backtracking algorithm is swapping the letters. We are taking the `art` as an example. +In the following tree, you can visualize how the backtracking algorithm is swapping the letters. We are taking `art` as an example. [graphviz, Words-Permutations, png] .... diff --git a/book/content/part04/bubble-sort.asc b/book/content/part04/bubble-sort.asc index 583d8415..d9494cd1 100644 --- a/book/content/part04/bubble-sort.asc +++ b/book/content/part04/bubble-sort.asc @@ -9,8 +9,8 @@ endif::[] (((Sorting, Bubble Sort))) (((Sinking Sort))) (((Sorting, Sinking Sort))) -Bubble sort is a simple sorting algorithm that "bubbles up" the biggest values to the right side of the array. -It's also called _sinking sort_ because the most significant values "sink" to the right side of the array. +Bubble sort is a simple sorting algorithm that "bubbles up" the biggest values to the array's right side. +It's also called _sinking sort_ because of the most significant values "sink" to the array's right side. This algorithm is adaptive, which means that if the array is already sorted, it will take only _O(n)_ to "sort". However, if the array is entirely out of order, it will require _O(n^2^)_ to sort. (((Quadratic))) @@ -23,12 +23,12 @@ However, if the array is entirely out of order, it will require _O(n^2^)_ to sor ---- include::{codedir}/algorithms/sorting/bubble-sort.js[tag=sort, indent=0] ---- -<1> Convert any iterable (array, sets, etc.) into an array or if it's already an array it clones it, so the input is not modified. +<1> Convert any iterable (array, sets, etc.) into an array or if it's already an array, it clones it, so the input is not modified. <2> Starting from index 0 compare current and next element <3> If they are out of order, swap the pair <4> Repeat pair comparison until the last element that has been bubbled up to the right side `array.length - i`. -<5> (optimization) If there were no swaps, this means that the array is sorted. This single pass makes this sorting _adaptive_, and it will only require _O(n)_ operations. -<6> Each step moves the largest element from where it was to the right side. So, we need to do this `n - 1` times to sort the array in case most elements need to be swapped. +<5> (optimization) If there were no swaps, this means that the array is sorted. This single-pass makes this sorting _adaptive_, and it will only require _O(n)_ operations. +<6> Each step moves the largest element from where it was to the right side. We need to do this `n - 1` times to cover all items. .The `swap` function is implemented as follows: [source, javascript] diff --git a/book/content/part04/divide-and-conquer.asc b/book/content/part04/divide-and-conquer.asc index 76bb376d..6ed6f47e 100644 --- a/book/content/part04/divide-and-conquer.asc +++ b/book/content/part04/divide-and-conquer.asc @@ -14,7 +14,7 @@ We have already implemented some algorithms using the divide and conquer techniq .Examples of divide and conquer algorithms: - <>: *divides* the input into pairs, sort them, and them *join* all the pieces in ascending order. -- <>: *splits* the data by a random number called "pivot", then move everything smaller than the pivot to the left and anything more significant to the right. Repeat the process on the left and right side. Note: since this works in place doesn't need a "join" part. +- <>: *splits* the data by a random number called "pivot," then move everything smaller than the pivot to the left and anything more significant to the right. Repeat the process on the left and right sides. Note: since this works in place doesn't need a "join" part. - <>: find a value in a sorted collection by *splitting* the data in half until it sees the value. - <>: *Take out* the first element from the input and solve permutation for the remainder of the data recursively, then *join* results and append the items that were taken out. @@ -31,12 +31,12 @@ To illustrate how we can solve a problem using divide and conquer, let's write a .Fibonacci Numbers **** -Fibonacci sequence is a series of numbers that starts with `0, 1`; the next values are calculated as the sum of the previous two. So, we have: +Fibonacci sequence is a series of numbers that starts with `0, 1`; the following values are calculated as the sum of the previous two. So, we have: `0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...` **** -We can get the n-th fibonacci number with the following recursive program: +We can get the n-th Fibonacci number with the following recursive program: .Recursive Fibonacci implemenation [source, javascript] @@ -51,7 +51,7 @@ include::{codedir}/algorithms/fibonacci-recursive.js[tag=snippet,indent=0] The implementation above does the job, but what's the runtime? -For that, let's take a look at the job performed calculating the `fib(5)` number. Since `fib(5) = fib(4) + fib(3)`, we need to find the answer for `fib(4)` and `fib(3)`. We do that recursively until we reach the base cases of `fib(1)` and `fib(0)`. If we represent the calls in a tree, we would have the following: +For that, let's take a look at the job performed by calculating the `fib(5)` number. Since `fib(5) = fib(4) + fib(3)`, we need to find the answer for `fib(4)` and `fib(3)`. We do that recursively until we reach the base cases of `fib(1)` and `fib(0)`. If we represent the calls in a tree, we would have the following: // http://bit.ly/2UmwzZV [graphviz, recursive-fibonacci-call-tree, png] @@ -78,20 +78,20 @@ graph G { } .... -In the diagram, we see the two recursive calls needed to compute each number. So if we follow the _O(branches^depth^)_ we get O(2^n^). [big]#🐢# +In the diagram, we see the two recursive calls needed to compute each number. So if we follow the _O(branches^depth^)_, we get O(2^n^). [big]#🐢# (((Exponential))) (((Runtime, Exponential))) NOTE: Fibonacci is not a perfect binary tree since some nodes only have one child instead of two. The exact runtime for recursive Fibonacci is _O(1.6^n^)_ (still exponential time complexity). Exponential time complexity is pretty bad. Can we do better? -In the call tree, you can notice that every element in red and with asterisks `*` it's called more than once. We are repeating calculations too many times! +You can notice every element in red, and with asterisks `*`, it's called more than once in the call tree. We are repeating calculations too many times! (((quotes))) [quote, Dynamic Programming] Those who cannot remember the past are condemned to repeat it. -For these cases when subproblems repeat themselves, we can optimize them using <>. Let's do that in the next section. +For these cases, when subproblems repeat themselves, we can optimize them using <>. Let's do that in the next section. diff --git a/book/content/part04/dynamic-programming.asc b/book/content/part04/dynamic-programming.asc index 7773f000..dfda9510 100644 --- a/book/content/part04/dynamic-programming.asc +++ b/book/content/part04/dynamic-programming.asc @@ -3,11 +3,11 @@ ifndef::imagesdir[] :codedir: ../../../src endif::[] -=== Dynamic Programming - (((Dynamic Programming))) (((Algorithmic Techniques, Dynamic Programming))) -Dynamic programming (dp) is a way to solve algorithmic problems with *overlapping subproblems*. Algorithms using dp find the base case and building a solution from the ground-up. Dp _keep track_ of previous results to avoid re-computing the same operations. +=== Dynamic Programming + +Dynamic programming (DP) is a way to solve algorithmic problems with *overlapping subproblems*. Algorithms using DP find the base case and building a solution from the ground-up. Dp _keep track_ of previous results to avoid re-computing the same operations. // https://twitter.com/iAmAdrianMejia/status/1103050924933726208 // https://www.quora.com/How-should-I-explain-dynamic-programming-to-a-4-year-old/answer/Jonathan-Paulson @@ -34,7 +34,7 @@ $$*$$*_Write down 1+1+1+1+1+1+1+1+1+1_*$$*$$ (((Fibonacci))) Let's solve the same Fibonacci problem but this time with dynamic programming. -When we have recursive functions doing duplicated work is the perfect place for a dynamic programming optimization. We can save (or cache) the results of previous operations and speed up future computations. +When we have recursive functions, doing duplicated work is the perfect place for dynamic programming optimization. We can save (or cache) the results of previous operations and speed up future computations. .Recursive Fibonacci Implemenation using Dynamic Programming [source, javascript] diff --git a/book/content/part04/greedy-algorithms.asc b/book/content/part04/greedy-algorithms.asc index 5c35e3ad..7063348f 100644 --- a/book/content/part04/greedy-algorithms.asc +++ b/book/content/part04/greedy-algorithms.asc @@ -8,7 +8,7 @@ endif::[] (((Greedy Algorithms))) (((Algorithmic Techniques, Greedy Algorithms))) Greedy algorithms are designed to find a solution by going one step at a time and using heuristics to determine the best choice. -They are quick but not always lead to most optimum results since it might not take into consideration all the options to give a solution. +They are quick but not always lead to the most optimum results since it might not take into consideration all the options to give a solution. An excellent example of a greedy algorithm that doesn't work well is finding the largest sum on a tree. @@ -26,13 +26,13 @@ graph G { } .... -Let's say the greedy heuristics are set to take the more significant value. The greedy algorithm will start at the root and say, "Which number is bigger 3 or 7?" Then go with 7 and later 4. As you can see in the diagram, the most significant sum would be the path `7 - 3 - 87`. A greedy algorithm never goes back on its options. This greedy choice makes it different from dynamic programming which exhaustive and it's guaranteed to find the best option. However, when they work well, they are usually faster than other options. +Let's say the greedy heuristics are set to take the more significant value. The greedy algorithm will start at the root and say, "Which number is bigger 3 or 7?" Then go with 7 and later 4. As you can see in the diagram, the most significant sum would be the path `7 - 3 - 87`. A greedy algorithm never goes back on its options. This greedy choice makes it different from dynamic programming, which is exhaustive and guaranteed to find the best option. However, when they work well, they are usually faster than other options. Greedy algorithms are well suited when an optimal local solution is also a globally optimal solution. [TIP] ======= -Greedy algorithms make the choice that looks best at the moment based on a heuristic such as smallest, largest, best ratio, and so on. +Greedy algorithms make the choice that looks best at the moment based on a heuristic, such as the smallest, largest, best ratio, and so on. This algorithm only gives one shot at finding the solution and never goes back to consider other options. ======= @@ -55,7 +55,7 @@ indexterm:[Merge Sort] We are going to use the "Fractional Knapsack Problem" to learn how to design greedy algorithms. The problem is the following: -> You are going to resell legumes (rice, beans, chickpeas, lentils) and you only brought a knapsack. What proportion of items can you choose to get the highest loot without exceeding the maximum weight of the bag? +> You are going to resell legumes (rice, beans, chickpeas, lentils), and you only brought a knapsack. What proportion of items can you choose to get the highest loot without exceeding the bag's maximum weight? Let's say we have the following items available. @@ -76,11 +76,11 @@ So, we have four items that we can choose from. We can't take them all because t How would you solve this problem? -First, we have to define what parameters are we going to use to make our *greedy choice*. This some ideas: +First, we have to define what parameters we will use to make our *greedy choice*. This some ideas: -- We can take items with the *largest* value in hopes to maximize profit. Based on that we can take the last and the first one to have a total weight of 7 and a total cost of 8. +- We can take items with the *largest* value in hopes to maximize profit. Based on that, we can take the last and the first to have a total weight of 7 and a total cost of 8. -- Also, we could take items with the *smallest* weight so we can fit as much as possible in the knapsack. Let's analyze both options. So we can choose the first two items for a total value of 5 and a total weight of 4. This option is worse than picking the most significant value! [big]#👎# +We could also take items with the *smallest* weight so we can fit as much as possible in the knapsack. Let's analyze both options. So we can choose the first two items for a total value of 5 and a total weight of 4. This option is worse than picking the most significant amount! [big]#👎# - One last idea, we can take items based on the *best* value/weight ratio and take fractions of an article to fill up the knapsack to maximum weight. In that case, we can buy the last item in full and 2/3 of the 2nd item. We get a total value of `9.67` and a total weight of `7`. These heuristics seem to be the most profitable. [big]#👍# @@ -102,4 +102,4 @@ include::{codedir}/algorithms/knapsack-fractional.js[tag=snippet,indent=0] What's the runtime of this algorithm? -We have to sort the array based on value/weight ratio. Sorting runtime is O(n log n). The rest is linear operations, so we the answer is _O(n log n)_ for our greedy algorithm. +We have to sort the array based on the value/weight ratio. Sorting runtime is O(n log n). The rest is linear operations, so the answer is _O(n log n)_ for our greedy algorithm. diff --git a/book/content/part04/insertion-sort.asc b/book/content/part04/insertion-sort.asc index 02147c51..0c02cfc6 100644 --- a/book/content/part04/insertion-sort.asc +++ b/book/content/part04/insertion-sort.asc @@ -8,7 +8,7 @@ endif::[] (((Sorting, Insertion Sort))) (((Insertion Sort))) -Insertion sort is a simple sorting algorithm. It is one of the most natural ways of sorting. If I give you some cards to sort you will probably use this algorithm without knowing. +Insertion sort is a simple sorting algorithm. It is one of the most natural ways of sorting. If I give you some cards to sort, you will probably use this algorithm without knowing. // Good illustration on of sorting a deck of cards: https://www.khanacademy.org/computing/computer-science/algorithms/insertion-sort/a/insertion-sort @@ -25,7 +25,7 @@ include::{codedir}/algorithms/sorting/insertion-sort.js[tag=sort, indent=0] ---- <1> Convert to an array or clone the array. <2> Start with the 2nd element. Everything on the left is considered sorted. -<3> Compare current element (2nd) to the previous one. If `left - 1` is bigger, it will swap places. If not, it will continue checking the next one to the left. +<3> Compare the current element (2nd) to the previous one. If `left - 1` is bigger, it will swap places. If not, it will continue checking the next one to the left. <4> We check every element on the left side and swap any of them that are out of order diff --git a/book/content/part04/merge-sort.asc b/book/content/part04/merge-sort.asc index b4ee8fe9..3edf462b 100644 --- a/book/content/part04/merge-sort.asc +++ b/book/content/part04/merge-sort.asc @@ -12,7 +12,7 @@ endif::[] Merge Sort is an efficient sorting algorithm that uses <> paradigm to accomplish its task faster. However, It uses auxiliary memory in the process of sorting. indexterm:[Divide and Conquer] -Merge sort algorithm splits the array into halves until 2 or fewer elements are left. It sorts these two elements and then merges back all halves until the whole collection is sorted. +Merge sort algorithm splits the array into halves until two or fewer elements are left. It sorts these two elements and then merges back all halves until the whole collection is sorted. image::image11.png[Mergesort visualization,width=500,height=600] @@ -25,7 +25,7 @@ include::{codedir}/algorithms/sorting/merge-sort.js[tag=sort, indent=0] ---- <1> Convert any kind of iterable (array, sets, etc.) into an array -As you can see, this function is just a wrapper to transform things into an array. The heavy lifting is done in `splitSort` as you can see below. +As you can see, this function is just a wrapper to transform things into an array. The heavy lifting is done in `splitSort`, as you can see below. .Merge Sort implementation in JavaScript (splitSort) [source, javascript] @@ -33,7 +33,7 @@ As you can see, this function is just a wrapper to transform things into an arra include::{codedir}/algorithms/sorting/merge-sort.js[tag=splitSort, indent=0] ---- <1> Base case: Sort two or less items manually. -<2> Recursively divide the array in half until two or less elements are left. +<2> Recursively divide the array in half until two or fewer elements are left. <3> Merge back the sorted halves in ascending order. Let's take a look at the merge function: @@ -44,10 +44,10 @@ Let's take a look at the merge function: include::{codedir}/algorithms/sorting/merge-sort.js[tag=merge, indent=0] ---- <1> We need to keep track of 3 arrays indices: `index` which keeps track of the combined array position, `i1` which is the `array1` index and `i2` for `array2`. -<2> If `array1` current element (`i1`) has the lowest value, we insert it into the `mergedArray` if not we then insert `array2` element. +<2> If `array1` current element (`i1`) has the lowest value, we insert it into the `mergedArray`. If not we then insert the `array2` element. <3> `mergedArray` is `array1` and `array2` combined in ascending order (sorted). -Merge sort has an _O(n log n)_ running time. For more details about how to extract the runtime go to <> section. +Merge sort has an _O(n log n)_ running time. For more details about how to extract the runtime, go to <> section. ===== Merge Sort Properties diff --git a/book/content/part04/quick-sort.asc b/book/content/part04/quick-sort.asc index 314caad8..7ac50b27 100644 --- a/book/content/part04/quick-sort.asc +++ b/book/content/part04/quick-sort.asc @@ -3,7 +3,7 @@ ifndef::imagesdir[] :codedir: ../../../src endif::[] -[[quicksort]] +[[Quicksort]] ==== Quicksort (((Sorting, QuickSort))) (((QuickSort))) @@ -12,7 +12,7 @@ Quicksort is an efficient recursive sorting algorithm that uses <>. And, of course, It also outperforms simple sorting algorithms like <>, <> and <>. -Quicksort picks a "pivot" element (preferably random) and move all the parts that are smaller than the pivot to the right and the ones that are bigger to the left. It does this recursively until all the array is sorted. +Quicksort picks a "pivot" element randomly and moves all the smaller parts than the pivot to the right and the ones that are bigger to the left. It does this recursively until all the array is sorted. ===== Quicksort Implementation @@ -20,7 +20,7 @@ Quicksort implementation uses the divide-and-conquer in the following way: .Quicksort Algorithm . Pick a "pivot" element (at random). -. Move everything lower than the pivot to the left and everything more significant than the pivot to the right. +. Move everything lower than the pivot to the left, and everything more significant than the pivot to the right. . Recursively repeat step #1 and #2 in the sub-arrays on the left and on the right WITHOUT including the pivot. Let's convert these words into code! @@ -35,7 +35,7 @@ include::{codedir}/algorithms/sorting/quick-sort.js[tag=quickSort, indent=0] <3> Do the partition of the sub-array at the right of the pivot. <4> Only do the partition when there's something to divide. -The `partition` function does the real heavy-lifting. 🏋️‍♀️ +The `partition` function does the real heavy lifting. 🏋️‍♀️ .Quicksort implementation in JavaScript (partition) [source, javascript] @@ -53,16 +53,16 @@ include::{codedir}/algorithms/sorting/quick-sort.js[tag=partition, indent=0] E.g. `[10, 7, 5, 4, 2, 1]`, if we always choose the first element as the pivot, we would have to swap everything to the left of `10`. -So in the first partition we would have `[7, 5, 4, 2, 1, 10]`. -Then, we take `7` would be the next pivot and we have to swap everything to the left. -Descending arrays are the worst-case for this quicksort since it will perform O(n^2^) work. -If instead of partitioning by the first element we do it by the middle (or even better at random) we would have better performance. That's why we usually shuffle the array before doing quicksort to avoid edge cases. +So in the first partition, we would have `[7, 5, 4, 2, 1, 10]`. +Then, we take `7` would be the next pivot, and we have to swap everything to the left. +Descending arrays are the worst-case for this Quicksort since it will perform O(n^2^) work. +If we do it by the middle (or even better at random) instead of partitioning by the first element, we would have better performance. That's why we usually shuffle the array before doing Quicksort to avoid edge cases. [source, javascript] ---- include::{codedir}/algorithms/sorting/quick-sort.js[tag=sort, indent=0] ---- -<1> Convert to array (or clone array). If you want to modify the input directly remove this line. +<1> Convert to array (or clone array). If you want to modify the input, directly remove this line. <2> Shuffle array to avoid edge cases (desc order arrays) And you can see the implementation of `shuffle` below: @@ -73,7 +73,7 @@ And you can see the implementation of `shuffle` below: include::{codedir}/algorithms/sorting/sorting-common.js[tag=shuffle, indent=0] ---- -With the optimization, Quicksort has an _O(n log n)_ running time. Similar to the merge sort we divide the array into halves each time. For more details about how to extract the runtime go to <>. +With the optimization, Quicksort has an _O(n log n)_ running time. Similar to the merge sort, we divide the array into halves each time. For more details about how to extract the runtime, go to <>. ===== Quicksort Properties diff --git a/book/content/part04/selection-sort.asc b/book/content/part04/selection-sort.asc index 4d1daf63..6f9f1a12 100644 --- a/book/content/part04/selection-sort.asc +++ b/book/content/part04/selection-sort.asc @@ -3,16 +3,16 @@ ifndef::imagesdir[] :codedir: ../../../src endif::[] +(((Sorting, Selection Sort))) +(((Selection Sort))) [[selection-sort]] ==== Selection Sort -(((Sorting, Selection Sort))) -(((Selection Sort))) The selection sort is a simple sorting algorithm. As its name indicates, it _selects_ the lowest element from the list and moves it where it should be. .Selection sort algorithm . Start with the element in position 0. -. Find the minimum item in the rest of the array. If a new minimum is found swap them. +. Find the minimum item in the rest of the array. If a new minimum is found, swap them. . Repeat step #1 and #2 with the next element until the last one. image::selection-sort.gif[] @@ -34,7 +34,7 @@ include::{codedir}/algorithms/sorting/selection-sort.js[tag=sort, indent=0] TIP: Selection sort minimizes the number of swaps. It does one swap per iteration while insertion sort and bubble sort could swap many times with the same array. -One index is for the position in question (selection/left) and another one for finding the minimum in the rest of the array (right). +One index is for the position in question (selection/left) and another for finding the minimum in the rest of the array (right). ===== Selection Sort Properties @@ -48,14 +48,14 @@ One index is for the position in question (selection/left) and another one for f *Why selection sort is not stable?* To recap, _stable_ means that items with the same value keep their initial position. -Let's see what would happen with the selection sort if we (select) sort the following array `2, 5, 2, 1`. To distinguish them let's say `2a` and `2b`, so `2a, 5, 2b, 1`. +Let's see what would happen with the selection sort if we (select) sort the following array `2, 5, 2, 1`. To distinguish them, let's say `2a` and `2b`, so `2a, 5, 2b, 1`. -Initially, we select the first element `2a` and check if there's anything less than 2 in the array. We find out that position 3 has an item with a smaller value (`1`) so we swap them. +Initially, we select the first element, `2a` and check if there's anything less than 2 in the array. We find out that position 3 has an item with a smaller value (`1`), so we swap them. Now, we have: `1, 5, 2b, 2a`. There you have it, `2b` now comes before `2a`. -// CAUTION: In practice, selection sort performance is the worst compared <> and <>. The only advantage of selection sort is that it minimizes the number of swaps. In case, that swapping is expensive, then it could make sense to use this one over the others. +// CAUTION: In practice, selection sort performance is the worst compared <> and <>. The only advantage of selection sort is that it minimizes the number of swaps. If swapping is expensive, it could make sense to use this one over the others. (((Quadratic))) (((Runtime, Quadratic))) diff --git a/book/content/part04/sorting-algorithms.asc b/book/content/part04/sorting-algorithms.asc index 4f2b8c0c..c9206540 100644 --- a/book/content/part04/sorting-algorithms.asc +++ b/book/content/part04/sorting-algorithms.asc @@ -21,7 +21,7 @@ Before we dive into the most well-known sorting algorithms, let's discuss the so ==== Sorting Properties -Sorting implementations with the same time complexity might manipulate the data differently. We want to understand these differences to be aware of the side effects it will have on data or extra resources they will require. For instance, some solutions will need auxiliary memory to store temporary data while sorting, while others can do it in place. +Sorting implementations with the same time complexity might manipulate the data differently. We want to understand these differences to be aware of the side effects on data or extra resources they will require. For instance, some solutions will need auxiliary memory to store temporary data while sorting, while others can do it in place. Sorting properties are stable, adaptive, online, and in-place. Let's go one by one. @@ -42,7 +42,7 @@ const users = [ ]; ---- -.If you sort by `name` you would have: +.If you sort by `name`, you would have: [source, javascript] ---- [ @@ -53,7 +53,7 @@ const users = [ ]; ---- -Then, here comes the _critical_ part, if you sort by `age` you might get (at least two) different results. +Then, here comes the _critical_ part; if you sort by `age`, you might get (at least two) different results. .If the sorting algorithm is *stable*; it should keep the items with the same age ordered by `name`: [source, javascript] @@ -81,7 +81,7 @@ Both results are sorted by `age`; however, having a stable sorting is better if ===== In-place (((Sorting, in-place))) -An ((in-place sorting)) algorithm would have a _space complexity_ of O(1). In other words, it does not use any other auxiliary memory because it moves the items in the collection itself. +An ((in-place sorting)) algorithm would have a _space complexity_ of O(1). In other words, it does not use any additional memory because it moves the items in-place. No extra memory for sorting is especially useful for large amounts of data or in memory constraint environments like robotics, smart devices, or embedded systems in appliances. ===== Online @@ -191,7 +191,7 @@ _Solution: <>_ // tag::sorting-q-sort-colors[] ===== Sort Colors (The Dutch flag problem) -*so-2*) _Given an array with 3 possible values (0, 1, 2), sort them in linear time and in-place. Hint: similar to quicksort, where the pivot is 1._ +*so-2*) _Given an array with three possible values (0, 1, 2), sort them in linear time, and in-place. Hint: similar to quicksort, where the pivot is 1._ // end::sorting-q-sort-colors[] diff --git a/book/content/preface.asc b/book/content/preface.asc index afcc20c6..82f78390 100644 --- a/book/content/preface.asc +++ b/book/content/preface.asc @@ -3,7 +3,7 @@ === What is in this book? -_{doctitle}_ is a book that can be read from cover to cover, where each section builds on top of the previous one. Also, it can be used as a reference manual where developers can refresh specific topics before an interview or look for ideas to solve a problem optimally. (Check out the <> and <>) +_{doctitle}_ is a book that can be read from cover to cover. Each section builds on top of the previous one. Also, you can use it as a reference manual. Developers can refresh specific topics before an interview or look for ideas to solve a problem optimally. (Check out the <> and <>) This publication is designed to be concise, intending to serve software developers looking to get a firm conceptual understanding of data structures in a quick yet in-depth fashion. After reading this book, the reader should have a fundamental knowledge of algorithms, including when and where to apply it, what are the trade-offs of using one data structure over the other. The reader will then be able to make intelligent decisions about algorithms and data structures in their projects. @@ -15,7 +15,7 @@ NOTE: You can apply the concepts in this book to any programming language. Howev === What you need for this book -You will need Node.js. The book code was tested against Node.js v10.15, but newer versions should also work. +You will need Node.js. The book code was tested against Node.js v14.8, but newer versions should also work. All the code examples used in this book can be found on: https://github.com/amejiarosario/dsa.js @@ -24,7 +24,7 @@ https://github.com/amejiarosario/dsa.js We use some typographical conventions within this book that distinguish between different kinds of information. -The code in the text, including commands, variables, file names, CSS class names, and property names are shown as follows: +The code in the text, including commands, variables, file names, and property names are shown as follows: [example] Repeat pair comparison until the last element that has been bubbled up to the right side `array.length - i`. @@ -45,7 +45,7 @@ const generator = dummyIdMaker() console.log(generator.next()); // ↪️ {value: 0, done: false} ---- -When we want to draw your attention to specific lines of code, those lines are annotated using numbers accompanied by brief descriptions. +When we want to draw your attention to specific code lines, those lines are annotated using numbers accompanied by brief descriptions. .Quicksort implementation in JavaScript (QuickSort) [source, javascript] @@ -60,7 +60,7 @@ include::../../src/algorithms/sorting/quick-sort.js[tag=quickSort, indent=0] The following admonitions are used to highlight content. -IMPORTANT: Reword essential concepts. Useful for memorizing, tweeting and sharing. +IMPORTANT: Reword essential concepts. Useful for memorizing, tweeting, and sharing. TIP: Tips are shown using callouts like this. @@ -80,6 +80,6 @@ Measurement is the first step that leads to control and eventually to improvemen === Reader feedback -Your feedback is very welcome and valuable. Let us know what your thoughts about this book — what you like or ideas to make it better. +Your feedback is very welcome and valuable. Let us know your thoughts about this book — what you like or ideas to make it better. To send us feedback, e-mail us at hello+dsajs@adrianmejia.com, send a tweet to https://twitter.com/iAmAdrianMejia[@iAmAdrianMejia], or using the hash tag `#dsaJS`. diff --git a/book/part03-graph-data-structures.asc b/book/part03-graph-data-structures.asc index 25ba9339..c9b7e820 100644 --- a/book/part03-graph-data-structures.asc +++ b/book/part03-graph-data-structures.asc @@ -1,7 +1,7 @@ [[part03-graph-data-structures]] == Graph & Tree Data Structures -Graph-based data structures are everywhere whether you realize it or not. You can find them in databases, Web (HTML DOM tree), search algorithms, finding the best route to get home and many more uses. We are going to learn the basic concepts and when to choose one over the other. +Graph-based data structures are everywhere, whether you realize it or not. You can find them in databases, Web (HTML DOM tree), search algorithms, finding the best route to get home, and many more uses. We are going to learn the basic concepts and when to choose one over the other. .In this chapter we are going to learn: - Exciting <> data structure applications @@ -21,15 +21,6 @@ include::content/part03/tree-search-traversal.asc[] <<< include::content/part03/binary-search-tree-traversal.asc[] -// <<< -// include::content/part03/map.asc[] - -// <<< -// include::content/part03/tree-map.asc[] - -// <<< -// include::content/part02/hash-set.asc[] - <<< include::content/part03/tree-map.asc[] diff --git a/book/part04-algorithmic-toolbox.asc b/book/part04-algorithmic-toolbox.asc index f1dc3efa..6b60c1bf 100644 --- a/book/part04-algorithmic-toolbox.asc +++ b/book/part04-algorithmic-toolbox.asc @@ -1,23 +1,23 @@ [[part04-algorithmic-toolbox]] == Algorithmic Toolbox -In this part of the book, we are going to cover examples of classical algorithms in more details. Also, we will provide algorithmic tools for improving your problem-solving skills. +In this part of the book, we will cover examples of classical algorithms in more detail. Also, we will provide algorithmic tools for improving your problem-solving skills. -IMPORTANT: There's not a single approach to solve all problems but knowing well-known techniques can help you build your own faster. +IMPORTANT: There's no single approach to solve all problems, but knowing well-known techniques can help you build your own faster. We are going to start with <> // and searching algorithms, such as <>, <> and some others. -Later, you are going to learn some algorithmic paradigms that will help you to identify common patterns and solve problems from different angles. +Later, you will learn some algorithmic paradigms that will help you identify common patterns and solve problems from different angles. .We are going to discuss the following techniques for solving algorithms problems: - <>: makes greedy choices using heuristics to find the best solution without looking back. - <>: a technique for speeding up recursive algorithms when there are many _overlapping subproblems_. It uses _memoization_ to avoid duplicating work. -- <>: _divide_ problems into smaller pieces, _conquer_ each subproblem and then _join_ the results. +- <>: _divide_ problems into smaller pieces, _conquer_ each subproblem, and then _join_ the results. - <>: search _all (or some)_ possible paths. However, it stops and _go back_ as soon as notice the current solution is not working. -- _Brute Force_: generate all possible solutions and tries all of them. (Use it as a last resort or as the starting point to optimize it with other techniques). +- _Brute Force_: generate all possible solutions and tries all of them. (Use it as a last resort or as the starting point and to later optimize it). include::content/part04/sorting-algorithms.asc[] From b3167f9c694c5e6719bf1d01804aeec60b41e57f Mon Sep 17 00:00:00 2001 From: Adrian Mejia Date: Fri, 30 Oct 2020 11:37:45 -0400 Subject: [PATCH 08/33] feat(book): show companies asked questions --- book/content/part01/big-o-examples.asc | 2 +- book/content/part02/array.asc | 4 ++-- book/content/part02/hash-map.asc | 4 ++-- book/content/part02/hash-set.asc | 4 ++-- book/content/part02/linked-list.asc | 4 ++-- book/content/part02/queue.asc | 4 ++-- book/content/part02/stack.asc | 4 ++-- .../part03/binary-search-tree-traversal.asc | 4 ++-- book/content/part03/graph-search.asc | 4 ++-- book/content/part04/algorithmic-toolbox.asc | 2 +- book/content/part04/divide-and-conquer.asc | 6 +++--- book/content/part04/dynamic-programming.asc | 1 + book/content/part04/quick-sort.asc | 5 +++-- book/content/part04/sorting-algorithms.asc | 10 +++++----- book/images/time-complexity-manual.png | Bin 0 -> 119814 bytes book/part04-algorithmic-toolbox.asc | 2 +- 16 files changed, 31 insertions(+), 29 deletions(-) create mode 100644 book/images/time-complexity-manual.png diff --git a/book/content/part01/big-o-examples.asc b/book/content/part01/big-o-examples.asc index 5526af8f..c7755736 100644 --- a/book/content/part01/big-o-examples.asc +++ b/book/content/part01/big-o-examples.asc @@ -23,7 +23,7 @@ Before we dive in, here’s a plot with all of them. .CPU operations vs. Algorithm runtime as the input size grows // image::image5.png[CPU time needed vs. Algorithm runtime as the input size increases] -image::big-o-running-time-complexity.png[CPU time needed vs. Algorithm runtime as the input size increases] +image::time-complexity-manual.png[{half-size}] The above chart shows how the algorithm's running time is related to the CPU's work. As you can see, O(1) and O(log n) is very scalable. However, O(n^2^) and worst can convert your CPU into a furnace 🔥 for massive inputs. diff --git a/book/content/part02/array.asc b/book/content/part02/array.asc index 452f73df..066cbb58 100644 --- a/book/content/part02/array.asc +++ b/book/content/part02/array.asc @@ -522,7 +522,7 @@ maxSubArray([-3, 4,-1, 2, 1, -5]); // 6 (sum [4,-1, 2, 1]) maxSubArray([-2, 1, -3, 4, -1, 3, 1]); // 7 (sum [4,-1, 3, 1]) ---- -// _Seen in interviews at: Amazon, Apple, Google, Microsoft, Facebook_ +_Common in interviews at: Amazon, Apple, Google, Microsoft, Facebook_ // end::array-q-max-subarray[] [source, javascript] @@ -548,7 +548,7 @@ maxProfit([3, 2, 1]) // 2 (no buys) maxProfit([5, 10, 5, 10]) // 5 (buying at 5 and selling at 10) ---- -// _Seen in interviews at: Amazon, Facebook, Bloomberg_ +_Common in interviews at: Amazon, Facebook, Bloomberg_ // end::array-q-buy-sell-stock[] [source, javascript] diff --git a/book/content/part02/hash-map.asc b/book/content/part02/hash-map.asc index a15c2c9b..ab5ad56f 100644 --- a/book/content/part02/hash-map.asc +++ b/book/content/part02/hash-map.asc @@ -627,7 +627,7 @@ Something that might look unnecessary is the `Math.max` when updating the `lo` p // end::hashmap-q-two-sum[] -// _Seen in interviews at: Amazon, Google, Apple._ +_Common in interviews at: Amazon, Google, Apple._ Examples: @@ -656,7 +656,7 @@ _Solution: <>_ // end::hashmap-q-subarray-sum-equals-k[] -// _Seen in interviews at: Facebook, Google, Amazon_ +_Common in interviews at: Facebook, Google, Amazon_ Examples: diff --git a/book/content/part02/hash-set.asc b/book/content/part02/hash-set.asc index f5689180..766db939 100644 --- a/book/content/part02/hash-set.asc +++ b/book/content/part02/hash-set.asc @@ -129,7 +129,7 @@ Find the most common word that is not on the banned list. You might need to sanitize the text and strip out punctuation `?!,'.`_ // end::set-q-most-common-word[] -// _Seen in interviews at: Amazon._ +_Common in interviews at: Amazon._ Examples: @@ -173,7 +173,7 @@ _Solution: <>_ // end::set-q-longest-substring-without-repeating-characters[] -// _Seen in interviews at: Amazon, Facebook, Bloomberg._ +_Common in interviews at: Amazon, Facebook, Bloomberg._ Examples: diff --git a/book/content/part02/linked-list.asc b/book/content/part02/linked-list.asc index a09f8473..bf2ed110 100644 --- a/book/content/part02/linked-list.asc +++ b/book/content/part02/linked-list.asc @@ -584,7 +584,7 @@ mergeTwoLists(2->3->4, 1->2); // 1->2->2->3->4 mergeTwoLists(2->3->4,null); // 2->3->4 ---- -// _Seen in interviews at: Amazon, Adobe, Microsoft, Google_ +_Common in interviews at: Amazon, Adobe, Microsoft, Google_ // end::linkedlist-q-merge-lists[] [source, javascript] @@ -612,7 +612,7 @@ hasSameData(hello, hel->lo); // true hasSameData(he->ll->o, h->i); // false ---- -// _Seen in interviews at: Facebook_ +_Common in interviews at: Facebook_ // end::linkedlist-q-linkedlist-same-data[] [source, javascript] diff --git a/book/content/part02/queue.asc b/book/content/part02/queue.asc index 11944aa5..a9c0de2e 100644 --- a/book/content/part02/queue.asc +++ b/book/content/part02/queue.asc @@ -103,7 +103,7 @@ counter.request(3100); // 1 (last requests was 100 ms ago, > 10ms, so doesn't co counter.request(3105); // 2 (last requests was 5 ms ago, <= 10ms, so it counts) ---- -// _Seen in interviews at: Google, Bloomberg, Yandex_ +_Common in interviews at: Google, Bloomberg, Yandex_ // end::queue-q-recent-counter[] @@ -135,7 +135,7 @@ expect(snakeGame.move('L')).toEqual(2); // 2 (ate food2) expect(snakeGame.move('U')).toEqual(-1); // -1 (hit wall) ---- -// _Seen in interviews at: Amazon, Bloomberg, Apple_ +_Common in interviews at: Amazon, Bloomberg, Apple_ // end::queue-q-design-snake-game[] [source, javascript] diff --git a/book/content/part02/stack.asc b/book/content/part02/stack.asc index bf66f49f..e08cc965 100644 --- a/book/content/part02/stack.asc +++ b/book/content/part02/stack.asc @@ -106,7 +106,7 @@ isParenthesesValid('[{]}'); // false (brakets are not closed in the right order) isParenthesesValid('([{)}]'); // false (closing is out of order) ---- -// _Seen in interviews at: Amazon, Bloomberg, Facebook, Citadel_ +_Common in interviews at: Amazon, Bloomberg, Facebook, Citadel_ // end::stack-q-valid-parentheses[] [source, javascript] @@ -135,7 +135,7 @@ dailyTemperatures([30, 28, 50, 40, 30]); // [2 (to 50), 1 (to 28), 0, 0, 0] dailyTemperatures([73, 69, 72, 76, 73, 100]); // [3, 1, 1, 0, 1, 100] ---- -// _Seen in interviews at: Amazon, Adobe, Cisco_ +_Common in interviews at: Amazon, Adobe, Cisco_ // end::stack-q-daily-temperatures[] [source, javascript] diff --git a/book/content/part03/binary-search-tree-traversal.asc b/book/content/part03/binary-search-tree-traversal.asc index 9a21e8fc..1b6b5b60 100644 --- a/book/content/part03/binary-search-tree-traversal.asc +++ b/book/content/part03/binary-search-tree-traversal.asc @@ -105,7 +105,7 @@ Post-order traverval will return `3, 4, 5, 15, 40, 30, 10`. // end::binary-tree-q-diameter-of-binary-tree[] -// _Seen in interviews at: Facebook, Amazon, Google_ +_Common in interviews at: Facebook, Amazon, Google_ // Example 1: // [graphviz, tree-diameter-example-1, png] @@ -203,7 +203,7 @@ _Solution: <>_ // end::binary-tree-q-binary-tree-right-side-view[] -// _Seen in interviews at: Facebook, Amazon, ByteDance (TikTok)._ +_Common in interviews at: Facebook, Amazon, ByteDance (TikTok)._ Examples: diff --git a/book/content/part03/graph-search.asc b/book/content/part03/graph-search.asc index 117e84fa..eda1d6af 100644 --- a/book/content/part03/graph-search.asc +++ b/book/content/part03/graph-search.asc @@ -102,7 +102,7 @@ NOTE: Every tree is a graph, but not every graph is a tree. Only acyclic directe // end::graph-q-course-schedule[] -// _Seen in interviews at: Amazon, Facebook, Bytedance (TikTok)._ +_Common in interviews at: Amazon, Facebook, Bytedance (TikTok)._ *Starter code*: @@ -155,7 +155,7 @@ _Solution: <>_ // end::graph-q-critical-connections-in-a-network[] -// _Seen in interviews at: Amazon, Google._ +_Common in interviews at: Amazon, Google._ Examples: diff --git a/book/content/part04/algorithmic-toolbox.asc b/book/content/part04/algorithmic-toolbox.asc index 27992bed..2d0f6b8a 100644 --- a/book/content/part04/algorithmic-toolbox.asc +++ b/book/content/part04/algorithmic-toolbox.asc @@ -24,7 +24,7 @@ TIP: TL;DR: Don't start coding right away. First, solve the problem, then write . *Test* your algorithm idea with multiple examples . *Optimize* the solution –Only optimize when you have something working. Don't try to do both at the same time! .. Can you trade-off space for speed? Use a <> to speed up results! -.. Do you have a bunch of recursive and overlapping problems? Try <>. +.. Do you have a bunch of recursive and overlapping problems? Try <>. .. Re-read requirements and see if you can take advantage of anything. E.g. is the array sorted? . *Write Code*, yes, now you can code. .. Modularize your code with functions (don't do it all in one giant function, please 🙏) diff --git a/book/content/part04/divide-and-conquer.asc b/book/content/part04/divide-and-conquer.asc index 6ed6f47e..d6e7c083 100644 --- a/book/content/part04/divide-and-conquer.asc +++ b/book/content/part04/divide-and-conquer.asc @@ -14,7 +14,7 @@ We have already implemented some algorithms using the divide and conquer techniq .Examples of divide and conquer algorithms: - <>: *divides* the input into pairs, sort them, and them *join* all the pieces in ascending order. -- <>: *splits* the data by a random number called "pivot," then move everything smaller than the pivot to the left and anything more significant to the right. Repeat the process on the left and right sides. Note: since this works in place doesn't need a "join" part. +- <>: *splits* the data by a random number called "pivot," then move everything smaller than the pivot to the left and anything more significant to the right. Repeat the process on the left and right sides. Note: since this works in place doesn't need a "join" part. - <>: find a value in a sorted collection by *splitting* the data in half until it sees the value. - <>: *Take out* the first element from the input and solve permutation for the remainder of the data recursively, then *join* results and append the items that were taken out. @@ -117,7 +117,7 @@ For these cases, when subproblems repeat themselves, we can optimize them using // // end::divide-and-conquer-q-FILENAME[] -// // _Seen in interviews at: X._ +// _Common in interviews at: X._ // *Starter code*: @@ -148,7 +148,7 @@ For these cases, when subproblems repeat themselves, we can optimize them using // // end::divide-and-conquer-q-FILENAME[] -// // _Seen in interviews at: X._ +// _Common in interviews at: X._ // *Starter code*: diff --git a/book/content/part04/dynamic-programming.asc b/book/content/part04/dynamic-programming.asc index dfda9510..211acb9e 100644 --- a/book/content/part04/dynamic-programming.asc +++ b/book/content/part04/dynamic-programming.asc @@ -5,6 +5,7 @@ endif::[] (((Dynamic Programming))) (((Algorithmic Techniques, Dynamic Programming))) +[[dynamic-programming-chap]] === Dynamic Programming Dynamic programming (DP) is a way to solve algorithmic problems with *overlapping subproblems*. Algorithms using DP find the base case and building a solution from the ground-up. Dp _keep track_ of previous results to avoid re-computing the same operations. diff --git a/book/content/part04/quick-sort.asc b/book/content/part04/quick-sort.asc index 7ac50b27..4f1cd5e0 100644 --- a/book/content/part04/quick-sort.asc +++ b/book/content/part04/quick-sort.asc @@ -3,10 +3,11 @@ ifndef::imagesdir[] :codedir: ../../../src endif::[] -[[Quicksort]] -==== Quicksort (((Sorting, QuickSort))) (((QuickSort))) +[[quicksort-chap]] +==== Quicksort + Quicksort is an efficient recursive sorting algorithm that uses <> paradigm to sort faster. It can be implemented in-place, so it doesn't require additional memory. indexterm:[Divide and Conquer] diff --git a/book/content/part04/sorting-algorithms.asc b/book/content/part04/sorting-algorithms.asc index c9206540..cf19cd33 100644 --- a/book/content/part04/sorting-algorithms.asc +++ b/book/content/part04/sorting-algorithms.asc @@ -15,7 +15,7 @@ We can sort to get the maximum or minimum value, and many algorithmic problems c .and then discuss efficient sorting algorithms _O(n log n)_ such as: - <> -- <> +- <> Before we dive into the most well-known sorting algorithms, let's discuss the sorting properties. @@ -124,7 +124,7 @@ We explored the most common sorting algorithms, some of which are simple and oth | <> | Look for biggest number to the left and swap it with current | <> | Iterate array looking for smallest value to the right | <> | Split numbers in pairs, sort pairs and join them in ascending order -| <> | Choose a pivot, set smaller values to the left and bigger to the right. +| <> | Choose a pivot, set smaller values to the left and bigger to the right. // | Tim sort | Hybrid of merge sort and insertion sort |=== @@ -135,7 +135,7 @@ We explored the most common sorting algorithms, some of which are simple and oth | <> | O(n^2^) | O(n) | O(n^2^) | O(1) | Yes | Yes | Yes | Yes | <> | O(n^2^) | O(n^2^) | O(n^2^) | O(1) | No | Yes | No | No | <> | O(n log n) | O(n log n) | O(n log n) | O(n) | Yes | No | No | No -| <> | O(n log n) | O(n log n) | O(n^2^) | O(log n) | No | Yes | No | No +| <> | O(n log n) | O(n log n) | O(n^2^) | O(log n) | No | Yes | No | No // | Tim sort | O(n log n) | O(log n) | Yes | No | No | Yes |=== // end::table[] @@ -162,7 +162,7 @@ We explored the most common sorting algorithms, some of which are simple and oth // end::sorting-q-merge-intervals[] -// _Seen in interviews at: Facebook, Amazon, Bloomberg._ +_Common in interviews at: Facebook, Amazon, Bloomberg._ *Starter code*: @@ -195,7 +195,7 @@ _Solution: <>_ // end::sorting-q-sort-colors[] -// _Seen in interviews at: Amazon, Microsoft, Facebook._ +_Common in interviews at: Amazon, Microsoft, Facebook._ *Starter code*: diff --git a/book/images/time-complexity-manual.png b/book/images/time-complexity-manual.png new file mode 100644 index 0000000000000000000000000000000000000000..4a9c3bcb2368f2fbb30aa44c4c7773dc5027c080 GIT binary patch literal 119814 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�_%zWI0}d966Yq3jF(N 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