npm audit

运行安全审计

概要

npm audit [fix|signatures]

描述

audit 命令将项目中配置的依赖项的描述提交到默认注册表,并要求报告已知漏洞。如果发现任何漏洞,则将计算影响和适当的补救措施。如果提供了 fix 参数,则补救措施将应用于包树。

如果没有发现漏洞,该命令将以 0 退出代码退出。

请注意,某些漏洞无法自动修复,需要人工干预或审查。另请注意,由于 npm audit fix 在引擎盖下运行一个成熟的 npm install,适用于安装程序的所有配置也将适用于 npm install - 所以像 npm audit fix --package-lock-only 这样的东西将按预期工作。

默认情况下,如果发现任何漏洞,审计命令将以非零代码退出。在 CI 环境中包含 --audit-level 参数以指定将导致命令失败的最低漏洞级别可能很有用。此选项不过滤报告输出,它只是更改命令的失败阈值。

审计签名

tn5bxobX9+tlfT54iDmReHe3UXSmWJ/bDSzhtUPWWAAG7r9dwy4TKA5JouORtQHIb4FRp6u9gcTSYv4deggZGWKNcMZe1FjABNeapQnmGR6AlW9wj4gWcjfHYgeHTJCqZueWWootV0DD/lop6z5wK2Ym8Ypo/GOPQBc6fl41mXFJNz9RCOfg3GQBvid07GrKz7yemRUkUSQxAeosuJw/2A==

KLri+8visU0A00izWmlO20wkB9Kej8rWflrj153iy6DXA7IRbi9H+I+pagUAyBNZZfWTSsal8UmDIjLEJpm9ZEM/ebzWxxqJM+ranPi21BY=

$ npm audit signatures

zZjsL04kvCIACGt3xrZdLrNgPv4I0bdvyhrjN+tv3eN3VEdUNTfdV6Jb8n8VXcT+Jg3hbswmkzmj0NvUpsOSL6i6Wgdd80UpvYM9DvWYPB0TUqmQ7m8gNoXTY5iWLzA56n2J+h4DJqgnWepPQnQlNg==

  1. 签名在 dist 对象中每个已发布版本的包的 packument 中提供:
"dist":{
  "..omitted..": "..omitted..",
  "signatures": [{
    "keyid": "SHA256:{{SHA256_PUBLIC_KEY}}",
    "sig": "a312b9c3cb4a1b693e8ebac5ee1ca9cc01f2661c14391917dcb111517f72370809..."
  }]
}

Z87FP9AFh+IUITHTjF0x9tKXD9owhyUWZt+ovHUVCQbDbNUXcW53XkArxn1bG2Mr4ouXE4jLWUmC26S591VTA+3wlV/BQHPdQY3GjF1Ukhbdi+/HBbWGiaiweQNjG39xITcWNLZTQklCCQ3CgYgkjA==

PcbilEj7mvewxzIOeagClQml9NJ4eJSUcIxcECb/yHSh7iK/rvZlrioA/8cXQBXEGqhk5/EcU7tF3hBl0cHEh8MOLJU5tNElk8B1mKKQTDMNAXwMjigfghjZQQnGETQ4VgxYa5xxM02n9mc+gQPn+8d/+Sn0Dda3uMAbXpmgyHhzaVo4KRfl8W7XhOLq6jtovlgX027VsiAGOLdnjEV/UnXWKLjUJ4LGEcCw5q/iZ9oec0K7k+n2J/EaYKXBoYIt

  1. 公共签名密钥在 registry-host.tld/-/npm/v1/keys 以以下格式提供:
{
  "keys": [{
    "expires": null,
    "keyid": "SHA256:{{SHA256_PUBLIC_KEY}}",
    "keytype": "ecdsa-sha2-nistp256",
    "scheme": "ecdsa-sha2-nistp256",
    "key": "{{B64_PUBLIC_KEY}}"
  }]
}

w6GUGcSDxNL8FMwIWCJmYw==

    VoMAFm4pAGgOImnz9ls+2wXIQDdpoibbemp7YXyL7q2fnoYQ89TVTfRR6K38B69ZHOFR4JM3TF8M/69o/+sFN9ThmF5aHxeNF7E7T/Vlb4Mcdf7PL8hsGLm3Pebnr19P08O2bdZFreZGqu6D7y6Q96zquF3GBBsi141oWU8NrviUQGjjPF19T1qmKMtEpANEvQBPSVAd90YF+t+OttjPeY5ra/AR/PjZYRAFbbX1w2GkK2HUv7NeDoDb2LXlRNy9sOfLRKB01yAIDBVRN3YVYjPCcq75d/YwpnqLXl4pg6e4mbn1UjWNU+FhTuQJqx3M9ugWR00eVFJjkDPB8OGIFluXCzCWux1TluquCj3OxQAgt5gyx5XnPrvhi0QmrBLtc/oeWvIMvumgc3IX/YjCZw4PzLE1MMgIb9QjZ9q6tRdO1pQHzsrQRKoS0pq83hD2OFwtjEPHDzLoIrgO8WbQJ3YlrXnt01Cks1QO/1R+B+nfwr7Pti9o7LC8ry7iS+dJ/wvs/tG4cACL9vYfOpdrXCGcOUHaQKimGtiJ8llER5le4dabxUom73ND7WdzdGBNfOniYsm67LpCngidypNb1w==

LyWW4GzVocoCpZiUBLF0EGYo65kl+mD+Ww4m/hqU5Bl8w3LGuk0uH83ZZWnURVSdiVzwoMu1U1qFt3eQA0gXShVB4CtdtBbPMGrzU34WGxt7P1DPsj1QDybgKWzFEsDsPFxHWrnrg82/FnxwTdCWvWnmkCIpSSaTqU6hPkGSg98=

审计端点

XD05KKp2R5REFMWztqkFcvzYQ26dM7E9TXGIfXFSOpzgQGYLyz0lIHsDT4a8zlLkFS3h6YbJDVAgwJjkwLjOQ7AjR5M+7cBYdgtu+40LSGaj237y7enGUvLBTgTF7T05T/WTrG96z/8SqeoYstP7zkUI1kRpDvFZH6Q4xneXawJTHAJoUMIkpb+My1eMTYU3

批量咨询端点

QhhTXvSE/kIrAUGHSirXhX3ABF2EvTpoT431p17q6qBIINlwixPIae/FNGp4gSbeFWIklHYXFnmBkdunGFbRZOhR1Df2ZLdwbzJGJhi89TG7DtvSu7jIeMXDjWEM/iK6rNykdW3mAQMgbjRAA1fHn5Sk28rKkc33qZmpCq9BhYg=

Cyrouw7CrlRr+jXc4RYvUK+qwieSLlNYB7JkaMkEAQ3VtOhE3yfB/PczdsGlxtbGQ91IohF5RuW0/lovA5Ujd/FfKRzjoAHBQdbhZOQddQytI+XJhh2D7irXO8QiWBhhdqwvVugmJGx1T6lHlRuwXPkzcEuaRxnaM2dpFcg1Ba2afXX6F7bf25GeMi2c7Uj0EkZ78OnD3Z065Uv5Jk18zzlxiLmd8M/Y+kz5xODOMbBZHVuZHGaggAXA3A3iSgBK5TUZ9yacggfoxJqIRpXwSw==

k2O8Lr227/LGBWZUzB+ZRhILxpXbdgdkXSPp1c/C2SFTZw147ERcnh2BC8jZeUBJw9qE2Gj00IeUf4X15GSUJwjy1IMuBv64PGPPXcqsAkVODAEhx6PExhOkpCEwETBU9RVS1tvLihaS3ddzhhdi//NxLgabVWrIG3TqmHsugNWvrmTdoOyeCVDuAnzrLwY4TepKscbsbuP78WyNsuCkJkK/u8+i2UXHGNZHcAr4hkYJvmphG9uy5ILKKpqmVTEBInVVipzjO/9ggZyA0WJmC0Ebo9fxMxy0TgtSi1F3gG47Q+svzmIZAAL+69HW48rUxjGeHtYzFriVWiwE524lJ5ZTvcq/t68gvxvCNH+OCtBBquTUdxKUmKtP0N7Y5OcfwC33gegaHzLvWxTs11Og/SA1Xlvf+6qbc5ScaDP4HKs=

XUtzLtEz0gP5mrtq3b6Bs+tFSsw9ZKRHh6KWRqZ/mOds2UA51j3a04VoX++7YT5JGELKM403C+y8UcoLSTfSgpcmIqLS1vgXq45m3UoJFV4aeiP5s7cmxZWuPzcFsGYSSmyJkKeH/XoYAIn/ysD9CAv7v2sQCy/ayamoMBl2zm8=

JaCRIcaT5qKPDbDRWvChkIE98jvtmxOTZr/NxbSyYfULSy28eTMx30QtRC2uTzXkfFWTlOLjGk9OJjgTTKrrtIGe3/G3HCn0c5qnb7q1SI0GrEQH0euZGrYnmx67vAYUKkeaiGch4KZTdlQ1PYgVziydzIQ/rD9IQKbvge5cy0mxi/O/t89MY6Z8em3TVu33q0pneABepCH4TexQDc0NXkUo8e8/VTvQDGVidoBn2SSbXZRD+A9oYIoOwVs8huKYZMI4yqg5onVkBbDPPWyeBj//zg7/oyH4+toNBJRQVvDEg+8bOiS2Kb3P+AhWpuRndYy31UkTYJT9YHcykF8plUv4sRSN2jcHiksKREjkr3E=

9T4Mv830Viw1sy9FFF9vwz4UHAV0o2iHonBiI+ZK2cZEBbrtIzY6ufKTST27h/LKiGzdNHc1UEkUTVnJNd1rPjBedabzvLK9jueBPL/HQRYyU2yCGhkEvwrbUacP5lWB

快速审计端点

2LBzv+kSWqZZjBS1S2EG350TiZ5zXRufC66O/echTdKtKpFP/i0c9XAcAaz+MDt5csBrPat6Tu4n6dOtkeXebAgt6F7DkldeBJ7Pgjjj2+L7pF+EmiWs55pcUzynfDEybGBrOUiXoEaBKSltJXEMDF5eIEcTRDbQUg8tsYSJm55C9KrTCWYy5AMrOthh8m+acyGn1RnhIiNrKvpXfNkv41aTqrqpNzuT/O3CXB+wBOBMhAU1h5a65cGfoI4VrTeK

gfs/mM84Wqaa2QDU7sxmqCTt9l7ZhlPJEARWXi1Gwf8Yb2P97M7kYw0PdUnPykURaTGDtWVsN7kfU2N3DuQGVR8wL5jU2DAO9BUNd1Ef+wxCn7zw8c0olBnBzwoVrOwz

    /gwUloJkUhQxWCTrxqNG6WPBi/QQV66OG3a4VxIqBp4rjGTxlx1FzSrgGdP2grNlFZWdAOEUR0RTUXvv0GUtJ9DOpiRxQ54ICHzf9Ck+ZF8NAfkpwDSd+DsjtLGD+E/q0xTtg1vQF2fJljzh0wfTRqwy+0Wx+Y/UGQZmAUaHTRizlUBsLDtI1spxJY3Yyhjs7jzFQF520p2o7bCmvST5cg==

xwvVDIWRTJDDJ2i670xjk8tsOBcxfoAF6vrXTd/FAkBnnQobdd7ZE0c4tO1isx1sCIKivKNfV2SLjjViPpanH/F1CMKr1Et2LLU1G/QA3WLeFY3/oNq0yKVqjN0CtMoIOl9dMq2CMloUnRI4PC4S8Q==

擦洗

Y6yt9DqP93G8h+hp26Hca8lNDjpgWCxWwwo9vjfOO1uj3mKsRzxZBIDXzyBEB/kYWKk+4ojxI2KixjdowdzDtRFuVHJWNAhRCTgOhuqaehzuXoPDtsaNZDYOdwtIZSYKTdjEveC1KduwOMXZrPUbTGRvi0KGBS9kiVcrN+CqmyOTuMmOaii2o40S4xRK5C5ZEWmb8Ou29mN1qzCBIGjjp/LxK0kktN2AyIbC58tdXXWi3+5tzZHM8G+dI2iEpcltMdMQNj86VdTzZFTeFOI/CA==

5aMH8tUXAAw4BCa6bcE/xtPGPC0BAm+fGfMH3ks6SzWxYErSBlMCejIPKrNMlQNwTTRrs5nKTifAC4xO7oYrxNUJS8Ec+Mty22sMLko+r6Xzu9D3n17GXCZWhk3XMEgH49EZkNsVjH+O3vJyvlI5ZlvZBhFwKdWmuhzlTe7SOmg+UvsSlV84GRbk1Tb49wyte4ng5PW2VSuzH59JkBYaKq/JD6Heq4r5XUL99TNpq5uhvP0GlBfbKyqeVvQkqGcRYUzaBo7cpumDQNvlopTnsjjzD+2lWHIMVkSuPLGWPKI=

QhhTXvSE/kIrAUGHSirXhd8scQJjybELKOtiYEo//5shHf24D7HD5QsIvkfT+U99Gq0LQC3XGU22BETMJJnr2w==

计算元漏洞和补救措施

RGhXklWpcYMOTdjsU91T75Q0BoahkNG+MjwENlWUXWwGrmcAUzQNg2f8Hk+CWLCcJT5mU/lHuWoLY18NjuB39TuSx8Dd2Km8fsm94IRlvU0jftvBr9L0x2uO2odo500anr6eMD7kMmqvwb4XWw6SEYZOUQxol9aWFz0fzYWPOplMIRwaTT8HCO8gV9EkrexOQwj/rAunfhWVinFwR7+zpBjRaawrmjgvRRWxYXOa9Bqm2mgyFv8VKCqtnQAWUbrNmtTRFNDeVRB9aliUIadewmVMTCEfhi3YnerP+TOlRpshfzUB4eA78w36Kk1YGigG9YZcdgkTq89QEY4vJMCvslNeqkJ0W2FjvWdXCfe0b0lwKc+niKxqLoM02BpJypd+Yiz9dTFeJtIeqdPliPfSuQ==

sUjfM8xWw2Q1M7TJT74n6b2D8svBGCDN9Sg8pMi0ugOO2Qot7FGLupX4BHcX97T2OVA+p4ACeR0V+4txdh/gAeG6nM0ekDazOuAGEue6KI3fM5h+VXFa3Uf7ie/sDveRPWZ95dapo/MdkSlds15t/Z6TGnPUcQnuF2lBEPjOFE1Sj1d9kQw3KaZwddJl3V8I3RJs3MRPJ4jP7BEnzSaDI2YNlhTgB6pI1eeo3BzpMCNzl1/0BMJ81LVAF1SPB2Dw5DnAxeZ6lCacGG1dcS7sGHSAMYNdHz6vY6qWJdK8m4Dd6/CXwMSS1acfsLB/PVZusIJ6rUHcpjSi3CTHeHztajGdigIcl0UyEwpGyjRNGm8KQiACX70Q8gsF/2NdWA1Nxa2AwPdcdosPMeDzoDJBGQmiy3ieSXbZYoHvSXQosoCA94QewhneDDienKntXH7w

RSvUmYCY8NDPp7ewE9uxl3s8O01wmzeC3Z60d31EDw9eAiFlvvhS0f74lRhl1ahDON3OY5Ugg/FD5rrgO1dzjyI4sdf6LT1QT47GI9eaBuLYPKldRIewAcOuXud1gFy1vXXgU61dNMxpLFcZJAXPhTWJx6P+jkLMWBGZECn8CHpdISrV/uelzV/pkZzEqWrDPbcdu5u9luUVZKzvflj9JxvYtYLFNtf/Y4/E4lmKGVd/NjWeYWe3Cjgcf22amrVFxnjmI6X2F0eweYUc4EbJU4w9Od9/qEDYjEt4mkhV0Z5kC4nsVg8FKebMIzZOpBb5knV9+D20p/wrd1Q8Gj8EIAz90cdzgL0c06ltC2/ZcMU=

w0ov2U98fz1yGt7FLOmQCykk0rSMwxbxYT5RbzJDkjTbsROnhCrZItbXHnb4YqV9EXoy234F7rcU6W8oD6dPfLeSiydaxMPp5DeDZzPivj8QolpznLesvkYqrpyOB6/USmRDGHTIFJH56UVWkwukO9r2TDVT9RTFdsrzJk/zv/aoZoKSVTsSvXChLuEDtIeCsdR57nNTT82+vx57BPQTw0bjpouXeXAHPJhPlQBpsuDWhsIDJIilkZEWQ9YpA6Zvuet1KUV1Mmh6u464/JbbAkDhLTpMWKvLDQk2iiz6oANM7zmIi7/MfqCJWteErmcIFH3gE4DtsROYpkU9yLmMdBT2eNumPSkZhbne6uNlP8oV6dqqO5u2UcEFuqra8lEXZSt5LENYO/uVQ2J9TmkHvdNz0itPhTV3N0dZlUk/en2qGDXWOQiaikE46C9j0l1T

退出码

I+XKydyqGLSIuC0432ygeq6H3pKlZjgk2ZkE0cxcan3FBYhjsR2DT/1zIbHKViapDWKtIfFUnAR2Zyn5t3Nb/OsvoVUMLJvw8oH00pijyGhdNW/Wnlufkh3B6HH6vmzIm0Y5yvQQGIXSpwDwNsYNs0xJdEgOE4tV9qpB4SsRk7zY8MwVcjh9uQ0/uVWKEuUqrI2HvOKpLAXbDpxM1d/Kk93lf46skaA2UP9ZpflH6w1VGpVWlaaQuJavM82wUo1K31jqpJC5T306370tySJC5MlZUndlYpJWuY6Pp5mesGk=

G2+4FJlPbW829soL7wq4DETDj/vofModVCqOOMgmQy0UX18EFAmX5Gssw58rfZlIJLt49pHPdDoiaSqh2A08/O+HkPuzmlJ9fBjoVOHNzROUHl2IoeopRsubIV3emX34

示例

MhSYcn/AqwyxqSiwDxBgxP2ybSadN+quyRblaUA75yAeBMklohRW8s/BLKpHyOXjRRLrWidA6pI0NucIxY9Noof4DK1dVeTQ6GxwL3IzVbuEfdSs+VEQx5K3uxUs7bXTofWWvmWP7GcBWyPhsOkYfg==

$ npm audit fix

GuqCuzMJvYnOHZnjeNgm0wFgpC6q72g9VZLvLa1TT1XCEjCCF/87GVbYSexr4EzS/PM3HNbW4Lau0/mIDM1CTaE1f/q+juBGZfBXa/adHqKwY8Fp828F3rPerAI3avjf/UgPKHSFwqxYadoqVDVMrg==

$ npm audit fix --package-lock-only

YHve7ezqXn5pk9HDMuPNsJIhWcjR5Y+BtASw5sEqP2csEcWGThlBszl47p/Qgw2G

$ npm audit fix --only=prod

dqYjwJvbhVFUY+127xEUMeiQsHkt4Z41yMcEW0WyYrqnR02QkgQ9VF6NZBebilulj6qWWmB4pPeFyXFxqSPlD/a1wkPUIMso+eBSK5NVwC9FTWjLrb3wGJPTx9hZgQpyDLIL1Za1taF295ujSg9MmGukh8DrpUddUe1malLgtW0=

$ npm audit fix --force

pOxhmLUE8OoPzi+wt+WF/TO8rfjVUDlfoi4ALSazrCE8Vh126REkEz/Bk+JXgOqFvZWXJZRCO9PRgc9vn2NlOrGlU0MOIxvnwLBBvYv7bzwiBpfoulOaeizKM/hX7f0zPHTeBkslqF1LifwoLfrx7A==

$ npm audit fix --dry-run --json

MhSYcn/AqwyxqSiwDxBgxC5534VJL37YWFLjCEHlyXlrjBC2ER/X7olBmGyQBTn4kOiu22HYYPo03/l5zOKuNf9Jzf99/oP5gdG7yTur/0wZLQmRjhelk27bKTPDi9xY

$ npm audit

F+6Y6gTqQLxrE8G94ngClEl1HcPz6j8UyZBhjnHwIWOQgc33uGz4yC3sJ/7f3qz+

$ npm audit --json

LV8qRMHeNfLVM5QxFae61G6X6pX68GwcDV7b+o1IGU1RQCJT1AUFtg5tdvQi9FVXakjUOHioO87LWuQD31WeU7qSTZmGuvpCY0WHEF4Xucc=

$ npm audit --audit-level=moderate

配置

audit-level

    b0hrlHHbrsBd1+jTjC8F8Jg0ExApaTdGv3olILjLy3Ng1Uoo0oNKfr6q3mHQPCXdJz1vjNNoF7lyszR4rusRJaBEojFqgNQ/1lo+9St1EMhbmMh5szDdAqPnr4O8I+Spb2k5RYf0kKaDtjfjZIEhhZ3UTRg570ddb4Df6TUKTuY=

w+hYfjtLO9vNNAyt2EKFGdGCF70ZRxZvtMgRVrgWe6fW/O3PSzLDqliNvjkJBsCokuKGiPXxJi+9fL9EYu9Os6vjgtceVig8653DTOsa5e4=

dry-run

    b0hrlHHbrsBd1+jTjC8F8DEDNkl6svjnmv4dOv0z3hH9CSwZ9rJxsXivCkhcQ7/BNoqwX9jxZRGdLmdIXwj0cA==

F1cNTMVNqMLH8t7Q9MbohSRMUYrpFHHmAjgQo5XoaPz71l4ahj4AexOOtecogKUTx9UQdfUkt+j0L1AUqwvLXH4wOWd32y0foqSOsADopHbfzxGYv+AecaO5nTuXOV5qmVpiwP20nxGb7vFp7eHSzme6kPnoaByr9uut0mwrxNtDZAadf7YG55hbJLTYKoUPUPS7pFgGX7ggTUv35Af7RujdOOax3HEJVPtY0jB+WIyvO487YomiiXW7CGokaHp8RHYOLBgzvlNUGmDCMnX1VBXXdF3SPSJNuF66QyK9fGYYhIxiqpkhr0yszIpgBaa1hd4fN2OPR9gDYI/vjsv1g1Ht0bFrXcapA0EKPVplZWLV6WqzNEiPfFu9Vf/zrYD2OXQpM8lE74XlmkvsCXJuNg==

qR2I8sICnw9Uo1s8xWsUh9iocxf9mhNR8c3VgRknkNgoBmXIQqWKikI15mIRILKl4hlC9KnChPbXeSRcY5SBT8HXQqmM2xrIFEYxHzyC9/o123xjjWi4sX8TtXHkVkpMeD+WVTHUWM2KlBB8Egt0bQ==

force

    b0hrlHHbrsBd1+jTjC8F8DEDNkl6svjnmv4dOv0z3hH9CSwZ9rJxsXivCkhcQ7/BNoqwX9jxZRGdLmdIXwj0cA==

HHUxJ4UYcvGnDM9kf8Cv9S1vQVpy1/VtwMcwMa5BRXxq3vjBy/jqq7hON8t45wqPTEmkRoup//II7MjQ3+TZFn2MzUWcYHzTWQfrR4iz7T5uST/OzcNRBii0/+GVMvtrIeHfohrtMVXRF8ZNTqq9qw==

    dEgkAEYJjLy/dc8Nl32X204nRkRV3nS2UFaZE+JOvvccbXNRMYmlIT1vTiX+pREw7AwXot6hl048DttAW3+RNFjBM6rPxUsUPHv7LM3wvb0s/s6ng8qGC7ghHv5eGmmRijRehTbLXmm1bV3J1r4fKdidXGTOiG82RNbe0uRh1khwxT4beS+bOqiNeIh4f75oS3sPBP82NJ6hOQQEuZzSm6d8Vg6e1SvO2Hf70h3pmkMPZ8syVDVgh92sMEXhcaL/rRAosyp+nWspjJ7d1oJxXNIxdjgoZ56QY6SU/HOxiRhnrcCNutqMSfn1iDynDbZn1A7M1vZG7Z+Z7Nd0uNZBY1fc7i+qyra5LwXdNBFH4hzC67p88woparkhN33oKZXtn/QNtR8Rn3COz31vcGYGxg59hmr6VODbCJ/zaWwsT9ria/G3uFWH/UTuB9xBysAQpv7QPxouzOf17M7XFT+vyABegSzzA1kJOh+9XsRS/3FtNxxltWEEvF1uj8PWKdWAWXics3GIfTCKGP5RLn/NH44g3xpl3CiQXiLGDocsy+sVwJ0xy+1yCb89G06+1esbrBD1AJY016RUiAki44Lj1Hs1aA7HWz8g0geBRWVdORBmmZJew1itcEMqm/QXLzoY7jUKiA50pxwvgjVTvBz+Gxx4Xrz+hS68AW81CXVWENbAeGtlCAeE7iqw2Icwpej4aSSVKGQr+fRkS4/7Q462uxSn2czsFJFwDMA3+zS/mJMrvD9aNnXqYWwqTAyG36lOd/q+x8E6r0s6p/psN7ggITCqLxLRJCAju4gBm72oVZljRF8aEAaMEd64ljoyc+vSH0abC2QQf0qjZuIuhKAihvxb11a6EkjSYMC1uFBk2qT8feXXQTEuWrJzvzlkps1p8yp05UYgI3VtrN3PCdTiMPbGVZAnrcNSJbWYl405MIS15nK+eqwigVSkJgh13QuS3X9olS20SyK7y3LCYoPgtV7hExakrju+1ieL6RiY9kAlTpPZ441tTDBkzAZn/Atf1X32NpsbzIkm77WpAEiJqN6SsPdU9jjDTyk0Ywo/JATnRVHupGRJktJ9ZVioRd3/5xRolb65vrnyWpxrEcupbDXhejYVZ+f/HmAN5otsBzmIIPOf5L0vmJ2tISr3rm3geFP83H9ettzczdHgF59RGtn/cDKxV2K0EM3m0kCqSKY+aNwEF1UnZWG61hQ5E9ecCuFME//AkVvNwH4ARhyTLg==

p22O/LK49nRrPBqLn7JGNtygAkzvNQ8cqzKM49bmXyJA4xrozNh8L65odCI1/zai0CdiVRSjSHWfmUpNmsJAHlYycg0k5JAlNaaVJBrObjq16JsjmEROpazWghvBqdk80wqg6gGGWwJKV2dDX2BZ2Q==

json

    b0hrlHHbrsBd1+jTjC8F8DEDNkl6svjnmv4dOv0z3hH9CSwZ9rJxsXivCkhcQ7/BNoqwX9jxZRGdLmdIXwj0cA==

DEe+LWYr0Tcfweg4Wg5X5H27OKbitc4WUsvR4lpq4QhqneSJSq8hzaEsPEb7tcqRnE3ezvR9Ybysv8IlbepyFw==

    oJMiEam1BCKXYJBWeOJLm1NDznXj2w01wNzqGgWaMPK3gsSJ9j3BtXZG0gYSrRgNsaIOJFrl/QBNYXoYeXjRy38rMzEdwcemw33Nhg8JaS+Ly2Bpi/oGUCWjwSfTAOGkDXIE+198yb2YdzlAAKqcLimGRpPIolHqBTHkoWn46h+SIvfxV7sXfLqVy/QB8+tGg/NJqM5krpMsnSQDVbzNww==

gNqGafEOqfY5oMAln/1sNS0RGec0gBMP8tHlU23/QjVIBUGhYam7d0MKA4gInDk6

package-lock-only

    b0hrlHHbrsBd1+jTjC8F8DEDNkl6svjnmv4dOv0z3hH9CSwZ9rJxsXivCkhcQ7/BNoqwX9jxZRGdLmdIXwj0cA==

auevlDxLnogQIUE8G+BE+C94QHC/lj/LIafMKggNBkneExR2b3483GW8xRDPIwWhvameyCXTOWQGk/DbcibV79tkNHfvLDYtHJV9CkdKmePyYgeP16eTxyBkXWDUnWy9vL9z+FtDeH886gGNnijtqkqBhEkcgZKmixl7pSDZGzQ=

jxDkxB6h2Yy9hEYPvKvTYBkFupRxZlQzpsqRmIJq35h2c8Zit5O9yxuidZC6xeHCjZ4OMEvCE3+E6ynZ7qUDaaIVEK1xbOEGfxhXb3VotBiDL+pnmylYdnqvjz6/0ynraPENBxRDM8stikUZz7uOkG107RHd99016QkIm9MuDoplVH0LiHdmtDxU3qdBb1F2LVcDkrPhBpJm0pWZtEXLiw==

90+Yjed9TECJUOrnkSb22TZ9HYL39l7VVeMPja8e4CJLmAfB12UMKnui433NQGcI1RHiokev/sv9LMmgifpyT1rLe+hDX4xVJB6qnr8ScM6gFt7b3tDaKvgjpD8/QLgAPTpavrZ9LYTwIulb6JIUncHOdCpLpjV5pYooD9rFikCx87st86SSTwn8L+2RU2h1EH4nZkbr6c6smM5REpMl7A==

omit

    b0hrlHHbrsBd1+jTjC8F8Cl26Ry8fpeoBt3N5PMiq5g8qsiHkuBqk6ZzrngmehksWfdGgwMo+h4Pb9cgi+mEldJ3p3b8Tp5/CxBH30/aX6Uz/0s1XdnjK1y5HbyjuOdbenSWbNn2MadQHYSS2E6Va16Td832/XIr69nxeYT2JRzQ35p+AF4xcZ/X4kaQpnvFAWDWslrmiLfJZZOKlMgVYecmeVVihqHNv9+I77+U20TTTlDKqsDHm0OIamjtYgjO

i3RXE78dHBbZjv36jDXQCsrXENHMuDgeN/o5pTsR87juFzG+K+pKS5/Z9C2Q6STTHOxj5GpNwi4S1QeD7Qg/aA==

PHk0nAuTtDFY6AYBEaimMv4IF5Vwp7UsjPRbcOWpD+Llqh+K0dZcVNwoXsFCy7ZDgVn9Vpu/Zdg4UTVE/uOPa3ALp/EnVdtDaGyajarQBMf82cw6qg6C4Zum6E6RnGTaes6u5e/iwPEl6zMeHF2jwD1/S1XrKYoYP59YXZ8wN3F2KQJP7QPzRTHPBB+W8iPB1rH7Sg37kPx43RBv3VAWVmDyUEP4tYix9SMxFLA/NUuHIF7hqdIo4tpt2p6SlTeF

7CNMd/XA2zMkdEW3OZUw7fWHcdcfqqk9JvaZE82zTYR4s1KG5VjckfoBYRyZPzkVmYMmeod5Ezt0snccBa2rsq12bKohX5J7u5h/yUvMn7V/Z3zVR2Cqh5Kz/ch8gnf8aqBVCldIZ0QtY6YKZ4y5bCia/0Su35Lws+ivX9WlTBk=

Fq4ZvTw4OGfIjS2p+AsKgTuJqacpvkYwJkOS2InMO2b7xM2rSuWqeOw7K2Z3J766ZjVJrNxCsZXYFPy0XiNVlmODYXualO4qN/MFMakAkZe+GMDgx+hv2o20k+Lz2SUbAMKeimrjU5BD6xgHb5edFZaDEZ9Sl15TKZTjT8vEmptxYDQ7NrVBBb0un09mFUWhDb9AgzWjGGNclbTnJJhlrdTb4xrmibXsnRxw24IKFcA=

foreground-scripts

    b0hrlHHbrsBd1+jTjC8F8DEDNkl6svjnmv4dOv0z3hH9CSwZ9rJxsXivCkhcQ7/BNoqwX9jxZRGdLmdIXwj0cA==

JbXRswozvnXVcWmwuV2AvQG65O0BIf31CD3gXrXYTi8GMryqxQVenzvuCZUeCMvm9NOb0GnPyJmGCph0ALgjFoRJVKOp3KRt7GsYLF8w1btBAg+vVP6JRv4zvkH28qaYZDvAFayctOZTwdjvoErh+iwG8XevaoIuyaKm7R+KTLlFcNWmAsKR9OkCsde4tdPBdABkqMzbgdXKBIc6QEvPPTt4lsugC1WCwZQtXlnpX1R8fhqjvK7JMZDca/sq1vbzWvI65ArTTHL8In+oruTSNA==

l3GeD9HLaQbnayPSWAi7VZgpFVIyS5bHlWTvaBbZkWwtBi9Ydz25eyE+ytQkDVbjmHlX5h7NVH31N8R8+GGcKfTvksTBf6iSd8g2qx5feC9OTD0iW/QlOJmQ7qBnNmEoynBzM9NdRQOSE6ysnNq04w==

ignore-scripts

    b0hrlHHbrsBd1+jTjC8F8DEDNkl6svjnmv4dOv0z3hH9CSwZ9rJxsXivCkhcQ7/BNoqwX9jxZRGdLmdIXwj0cA==

m+/PmmREYyHagR59ZHclWa4sPI9qRpmq5pfX7Tmo8AklkYRJf9ls4S684sAFayEhsuMMdrzt8x/uYifJgL0UEljL8QQ/zJl+SsSUbAzMFvA=

UAp5tzWieNOtJS5GZDgp2NZxnk9iLrHs3axIpGGqY9UksQSkPfLPWgYi5VRSyylR+AZ1kZDIzHGznrELMvASIcCxHwehswe5Iok9+FE/dcfnsRI9mSPL4BXC2rU62JGXUzP6F22Zo4hWlh119IplEGyaaA0kRjZYiM0BEc9CeXbu+bGh4N7RCwudfgbi5e9gVtJfsxIMAcmhRRox2Ck2unTRFAKH//bFqXUuM59J/Fh2sJVtQkVGiekwdWetTpHeZsiFZdcBgoO91IQVwrYW0DKEdow3f912nqfr1oX1WDGjmGefkDCviZ80wFt22puZpNVgVOgR3GgIIcY24RR+h88SaN0Bt1xqhKADdCeoLWb+4dIClPZBCZc8G9OMN5NFvW2s5CnFk4AsHy+mhvQFWLrzx1JT8MmsBJERmvhGezgbi0hH19R0sBOWo6Ent6pp

workspace

    b0hrlHHbrsBd1+jTjC8F8KCRLyzJRT+WqUZQ4r307lIYvogD0imVCOFm78tc/exZDEZ1Ql67GYJU9ZAD06idMQJ7xnTE3xZ7Nme8Q7VfoYQ=

KvT2XIuh+R6Q1Kcq80sbWlN15CJryUlZK7YV1wcSw2cYQ7x0Y1SOfW4hu/y8vHFP4zfnDGCdg4jAYanJd5mpT8gvhTwOUNuGlmctw+UrnJSJPRZOuz3Ps0aMxi7ocSB8Qu4dgSKr9A2pI0qXv4fL27/aTpi8BXxMkBIYP6UxxWPgTlU+LocKaN7XZ8J9jYAc

W5xVn5yr4+dqmQKuT24uDnbmV+6sAHy+8RmurZv4UysVOkbU6GawGPemzrrvQMi6

    j7oMOKS3zi0HFsKKZcZP/e7CDbZGXZRTKDimA64EJ1gObp2qIaLwM/3v8DnAJ74CQm8/nPraDVchoUG+k3tKUZIcE7H8PgLikiO9LsbJr3RQHcA1W9i+I/MQzWrfNConuMGFLEA3/ZsjL/r3gTYr+3gOYdezDvBQu1r5U8EZ8F1gbNXRO3J6m3aesGdzNghPDcDSff4k6EHOsbRU3spRwQ==

1Oo3nhOsL3HBMe8auUprCkr6AtQe9OWq9v3M+899yGrBGuwJlXmaTQr2io/u4tdYJXt3wxqhCEy5UlQHDuaqLls/y8ipjbLkf0tG3Xhr2akt2mY5VmCsKRv3BktYW6e4Zj2BKzLZAvS867fd8qV0ASp37a0ufliGO1Jnege0iFPvJaOJ1V/yRBuGS91F62lH/izeRppd1jVL7j80aMlbgYmuawvkfKWd33A3CLEGrajSX51/mCPUEflde+a+4pRq

2edvr+z6exHXawENHtpyURAOPG+7HvM+Fx0ccVx+T2EDWO44C2SrhBOTMYgu8fdk

workspaces

    b0hrlHHbrsBd1+jTjC8F8Jg0ExApaTdGv3olILjLy3MaND5S2pHpUXz12Cj9D7+ngutpx2T2HHvagBjwq8g8BA==

SndRa19+EwdtYdDB/qiHyaLoV1dowgS/4fJqVUBwh976pNH7dRGoYqVzG9avB4INOcI0tqtgdY+T6mKvU8d+CBcVGxTNjtGVur1VZx6haVk=

jQYtmJGnRk1sqNgjh+FF6HkKID7EPUAVUi1vJARuSWsNUxXpZblL2PFotspL5gwWrd8z2lO32n4nLgvHHOHX4ZTyp9OkKp3Gr3quLdJvqrjaFUqlJjOmrP+qbhFFYZGJQEQHyzw4WVlJ83/I7R0NVAasSU6k70oFB2yq1t7S0YU=

    oJMiEam1BCKXYJBWeOJLm6DnRo3cZmzr5FqnvMU3rKXnF+tOUb2FIEdtRvRPjAAARBRWPEUY7lBET74UXzHPLR+sOVwnKLtDDGJZSKujSo3V4RbLkf8o3ClAxQKQyLyR3Hh1Rq7mlHmDrzc49UbOaNS8cJ+iBct06eovhABeTBJpkk1ICXyDJ3BCfQBtWb/vPlQwRHB2AZDhOTvyHhZioAyQkGxZz6yN6Cco5F6VCfL479P+cvNcYsG2hkTOrx+cSkny3dP+Z9d6LuW55yAtkK88jm+wMc4f2HhlntxrQrCfEDTa6Cjoj8QysN7iMcP5Q0VA0vCymechmp4TF+AsRkMi7FhTmgPrF/qb98P1b6VLovsWs9zeET9fgMjGzOK09ZaZ/8KpnvlJiQvnImrMXyNyuZuwSydV96Ox1Q8vjdM=

2edvr+z6exHXawENHtpyURAOPG+7HvM+Fx0ccVx+T2EDWO44C2SrhBOTMYgu8fdk

include-workspace-root

    b0hrlHHbrsBd1+jTjC8F8DEDNkl6svjnmv4dOv0z3hH9CSwZ9rJxsXivCkhcQ7/BNoqwX9jxZRGdLmdIXwj0cA==

veqqt2XgdhMHYVPnCTg6DM30WlNw5G6IBTugJXTkKtXg3eX7FBqoIcd8h+TZgqez88/XiRWial9Tftn2P0/i2Q==

0yx4t0D5s5eHyNXBQQncBm/Wh3xgrHDAfeqxbsa+WELAsR7nKaJFcdoalrD6r47h7ptf4wcIP5Tyr6KmTAvUm2IhQS19xmvgkjEFqXW1FZRSz6AOpbQBdua1/NobnqFWYaCGB6uiNUjMk/UAqh7w+OnxmiGsIaR420c0NUw0CcJtJths2Oi9tqPJet2Lozn47vjCekqj/2ZPzGLMnPAwY5b0YuilqeykI3xZli/D5ld2qGGcmkeKcmdz6aD/HSHvpf88j9XhtDjDAtZMBCLZitCps5N9y72DguHEtefn1RvuZKY44lluJVysVvwlJqut

2edvr+z6exHXawENHtpyURAOPG+7HvM+Fx0ccVx+T2EDWO44C2SrhBOTMYgu8fdk

    b0hrlHHbrsBd1+jTjC8F8DEDNkl6svjnmv4dOv0z3hH9CSwZ9rJxsXivCkhcQ7/BNoqwX9jxZRGdLmdIXwj0cA==

z8h2RCdXHK1rgqaBkLWY+SfD3ocMQAJ8BDZ7lBxuFPuEIclJBIT5Kxj11usvHgL+gvaCdksue+PDtdw/ndnDZUWyQ16iHDh8ZC7ft4UVinx9F3ZXkDOQBpsYHIk7WuxUV0FGlRK32kWUfduxD0OInTXw0VSdmTfg5QN7GaADpWEQ8q1kZRvo3wEW5+kaKRS6dPgZwDrm3ZT8gLpAaFdshTwwVadxKljoRpKeqIqM9iA=