CINXE.COM
Git
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <link rel="stylesheet" href="https://static-production.npmjs.com/styles.c617df3efc3b584cc1d7.css" /> <title data-react-helmet="true">jspurefix - npm</title> <meta data-react-helmet="true" http-equiv="cleartype" content="on"/><meta data-react-helmet="true" name="apple-mobile-web-app-capable" content="yes"/><meta data-react-helmet="true" name="mobile-web-app-capable" content="yes"/><meta data-react-helmet="true" name="viewport" content="width=device-width,minimum-scale=1.0,initial-scale=1,user-scalable=yes"/><meta data-react-helmet="true" property="og:image" content="https://static-production.npmjs.com/338e4905a2684ca96e08c7780fc68412.png"/><meta data-react-helmet="true" name="msapplication-TileColor" content="#cb3837"/><meta data-react-helmet="true" name="msapplication-TileImage" content="https://static-production.npmjs.com/7a7ffabbd910fc60161bc04f2cee4160.png"/><meta data-react-helmet="true" name="msapplication-config" content="https://static-production.npmjs.com/668aac888e52ae13cac9cfd71fabd31f.xml"/><meta data-react-helmet="true" name="theme-color" content="#cb3837"/><meta data-react-helmet="true" name="description" content="pure node js fix engine. Latest version: 4.0.0, last published: 3 months ago. Start using jspurefix in your project by running `npm i jspurefix`. There are no other projects in the npm registry using jspurefix."/><meta data-react-helmet="true" property="og:description" content="pure node js fix engine. Latest version: 4.0.0, last published: 3 months ago. Start using jspurefix in your project by running `npm i jspurefix`. There are no other projects in the npm registry using jspurefix."/><meta data-react-helmet="true" property="og:title" content="jspurefix"/><meta data-react-helmet="true" property="og:url" content="https://www.npmjs.com/package/jspurefix"/><meta data-react-helmet="true" property="og:site_name" content="npm"/><meta data-react-helmet="true" name="keywords" content="typescript,fix,engine,fixml,ascii,financial,protocol,trading"/><meta data-react-helmet="true" name="twitter:card" content="summary"/><meta data-react-helmet="true" name="twitter:url" content="https://www.npmjs.com/package/jspurefix"/><meta data-react-helmet="true" name="twitter:title" content="npm: jspurefix"/><meta data-react-helmet="true" name="twitter:description" content="pure node js fix engine. Latest version: 4.0.0, last published: 3 months ago. Start using jspurefix in your project by running `npm i jspurefix`. There are no other projects in the npm registry using jspurefix."/> <link data-react-helmet="true" href="https://static-production.npmjs.com/osd.xml" rel="search" title="npm package search" type="application/opensearchdescription+xml"/><link data-react-helmet="true" rel="apple-touch-icon" sizes="120x120" href="https://static-production.npmjs.com/58a19602036db1daee0d7863c94673a4.png"/><link data-react-helmet="true" rel="apple-touch-icon" sizes="144x144" href="https://static-production.npmjs.com/7a7ffabbd910fc60161bc04f2cee4160.png"/><link data-react-helmet="true" rel="apple-touch-icon" sizes="152x152" href="https://static-production.npmjs.com/34110fd7686e2c90a487ca98e7336e99.png"/><link data-react-helmet="true" rel="apple-touch-icon" sizes="180x180" href="https://static-production.npmjs.com/3dc95981de4241b35cd55fe126ab6b2c.png"/><link data-react-helmet="true" rel="icon" type="image/png" href="https://static-production.npmjs.com/b0f1a8318363185cc2ea6a40ac23eeb2.png" sizes="32x32"/><link data-react-helmet="true" rel="icon" type="image/png" href="https://static-production.npmjs.com/1996fcfdf7ca81ea795f67f093d7f449.png" sizes="230x230"/><link data-react-helmet="true" rel="icon" type="image/png" href="https://static-production.npmjs.com/f1786e9b7cba9753ca7b9c40e8b98f67.png" sizes="96x96"/><link data-react-helmet="true" rel="icon" type="image/png" href="https://static-production.npmjs.com/5f6e93af5bf0f5dcdd1eecdac99f51ee.png" sizes="192x192"/><link data-react-helmet="true" rel="icon" type="image/png" href="https://static-production.npmjs.com/c426a1116301d1fd178c51522484127a.png" sizes="228x228"/><link data-react-helmet="true" rel="icon" type="image/png" href="https://static-production.npmjs.com/da3ab40fb0861d15c83854c29f5f2962.png" sizes="16x16"/> </head> <body> <div id="app"><div class="_452c3ec4 d68c66a8"><div class="cf325dbd list ma0 pa0 tr z-999"><div class="c746cc21 list ma0 pa0 tr z-999"></div></div><div class="flex flex-column vh-100"><header class="_755f5b0f bg-white z-2 bb b--black-20"><div></div><div class="e7070742 pv3-ns ph1-ns bg-white"><div id="header" class="bbefbfcc">skip to:<a aria-label="skip to content" class="d6d0dbcf" href="#main">content</a><a aria-label="skip to package search" class="d6d0dbcf" href="#search">package search</a><a aria-label="skip to sign in" class="d6d0dbcf" href="#signin">sign in</a></div><div class="ef7c6e62 center mw9 border-box ph4-ns ph3 flex items-center"><span class="_0edb515f pr3 dn dib-ns link lh-title dim b--white-30">❤</span><nav class="_4a5f2a79 db w-100 w-auto-ns truncate" aria-label="Product Navigation"><ul id="main-menu" class="list pl0" role="menu" aria-label="Nav Menu"><li role="none" class="dib"><a href="/products/pro" role="menuitem" class="c6c55db4 no-underline f6-ns f7 fw5 dim pr2 pl2" id="nav-pro-link">Pro</a></li><li role="none"><a href="/products/teams" role="menuitem" class="c6c55db4 no-underline f6-ns f7 fw5 dim pr2 pl2" id="nav-teams-link">Teams</a></li><li role="none" class="dib"><a href="/products" role="menuitem" class="c6c55db4 no-underline f6-ns f7 fw5 dim pr2 pl2" id="nav-pricing-link">Pricing</a></li><li role="none" class="dib"><a href="https://docs.npmjs.com" role="menuitem" class="c6c55db4 no-underline f6-ns f7 fw5 dim pr2 pl2" id="nav-docs-link">Documentation</a></li></ul></nav></div></div><div class="_4ea0e50d bt b--black-10"><div class="c5b9953b center mw9 flex flex-wrap ph4-ns border-box"><span class="_657f443d">npm</span><div class="af43375d mt3 db mr4-ns pb3 pb0-ns flex-auto 2-ns ph3 ph0-ns"><a href="/" aria-label="Npm"><svg viewBox="0 0 780 250" aria-hidden="true"><path fill="#231F20" d="M240,250h100v-50h100V0H240V250z M340,50h50v100h-50V50z M480,0v200h100V50h50v150h50V50h50v150h50V0H480z M0,200h100V50h50v150h50V0H0V200z" stroke-width="5" stroke="#f7f7f7"></path></svg></a></div><div id="search" class="_581ebd89 relative flex-auto w-100 w-50-ns pv2-ns order-1-ns order-2"><form id="search" method="GET" action="/search" class="_13c93d41 relative flex bg-transparent ph3 ph2 pv2 ph0-ns pv0-ns bt b--black-10 bn-ns"><div class="e82b10fd relative dde91b96"><div class="_2f299eeb nowrap flex"><span class="_705cdf4f db fl pl3 pr1"><svg width="15px" height="15px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" aria-hidden="true"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g stroke="#777777" stroke-width="1.3"><g><path d="M13.4044,7.0274 C13.4044,10.5494 10.5494,13.4044 7.0274,13.4044 C3.5054,13.4044 0.6504,10.5494 0.6504,7.0274 C0.6504,3.5054 3.5054,0.6504 7.0274,0.6504 C10.5494,0.6504 13.4044,3.5054 13.4044,7.0274 Z"></path><path d="M11.4913,11.4913 L17.8683,17.8683"></path></g></g></g></svg></span><input type="search" role="combobox" name="q" hotkeys="[object Object]" placeholder="Search packages" aria-label="Search packages" aria-controls="typeahead-list-479576" aria-expanded="false" aria-activedescendant="" inputref="[object Object]" autoComplete="off" class="_390acbc5 f5 fw3 black relative" value="" element="input"/></div><div aria-live="polite" aria-atomic="true" class="_6f20b8d1"></div></div><button type="submit" class="_0da775bb bn pv2 ph4 f6 white pointer bn pv2 ph4 f6 white pointer" aria-label="Search">Search</button><input type="hidden" name="csrftoken" value="ZD_YOs7UNyUaEaFhgIAoZSQKTZ_vidV4BhePt86ZPjR"/></form></div><div class="_6f31c82b ml3 mt2 mt0-ns pv2-ns flex-auto tr nowrap relative pointer fw6 order-1 order-2-ns"><div class="_1066d9e7 flex items-center self-center pl3"><a href="/signup" id="signup" class="_9752c8b3 pa2 lh-copy br2 f6 no-underline fw5 black dim ph3 mr3">Sign Up</a><a href="/login" id="signin" class="_352269a0 pa1 lh-copy br2 f6 no-underline fw5 black dim">Sign In</a></div></div></div></div></header><main id="main"> <div class="_36ae70e9 flex flex-row flex-wrap pb5 ph3-l mw-100 mt4-ns mt1 center-ns mh1" id="top"><div class="w-100 ph0-l ph3 ph4-m"><h2 class="cd6ce1fd flex flex-row justify-start items-center w-100 fw6 mt3 black dib ma0 tracked-tight no-underline hover-black f3-ns"><span class="_50685029 truncate">jspurefix</span><div data-nosnippet="true"><img src="https://static-production.npmjs.com/255a118f56f5346b97e56325a1217a16.svg" height="20px" title="This package contains built-in TypeScript declarations" alt="TypeScript icon, indicating that this package has built-in type declarations" class="aa30d277 pl3" data-nosnippet="true"/></div></h2><span class="_76473bea f6 dib ph0 pv2 mb2-ns black-80 nowrap f5 fw4 lh-copy">4.0.0<!-- --> • </span><span class="_813b53b2 _76473bea f6 dib ph0 pv2 mb2-ns black-80 nowrap f5 fw4 lh-copy">Public</span><span class="_76473bea f6 dib ph0 pv2 mb2-ns black-80 nowrap f5 fw4 lh-copy"> • Published <time dateTime="2024-08-26T10:16:19.750Z" title="8/26/2024, 10:16:19 AM">3 months ago</time></span></div><ul class="cfb2a888 flex flex-column flex-row-l w-100 ma0 pa0 mr2 mr0-l list" role="tablist" aria-owns="package-tab-readme package-tab-code package-tab-dependencies package-tab-dependents package-tab-versions"><li class="_8055e658 f5 fw5 tc pointer d9f99065 ac5f7ef8 f4 fw6 black-50" role="presentation"><a class="_38ce9a85 link db ph4 fw6" href="?activeTab=readme" aria-selected="true" role="tab" aria-controls="tabpanel-readme" id="package-tab-readme" tabindex="0"><span><svg aria-hidden="true" focusable="false" data-prefix="far" data-icon="file-alt" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M288 248v28c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-28c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm-12 72H108c-6.6 0-12 5.4-12 12v28c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-28c0-6.6-5.4-12-12-12zm108-188.1V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48C0 21.5 21.5 0 48 0h204.1C264.8 0 277 5.1 286 14.1L369.9 98c9 8.9 14.1 21.2 14.1 33.9zm-128-80V128h76.1L256 51.9zM336 464V176H232c-13.3 0-24-10.7-24-24V48H48v416h288z"></path></svg> Readme</span></a></li><li class="_8055e658 f5 fw5 tc pointer _7aa1ee94" role="presentation"><a class="_38ce9a85 link db ph4 fw6" href="?activeTab=code" aria-selected="false" role="tab" aria-controls="tabpanel-explore" id="package-tab-code" tabindex="-1"><span><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="file-archive" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zM128.4 336c-17.9 0-32.4 12.1-32.4 27 0 15 14.6 27 32.5 27s32.4-12.1 32.4-27-14.6-27-32.5-27zM224 136V0h-63.6v32h-32V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM95.9 32h32v32h-32zm32.3 384c-33.2 0-58-30.4-51.4-62.9L96.4 256v-32h32v-32h-32v-32h32v-32h-32V96h32V64h32v32h-32v32h32v32h-32v32h32v32h-32v32h22.1c5.7 0 10.7 4.1 11.8 9.7l17.3 87.7c6.4 32.4-18.4 62.6-51.4 62.6z"></path></svg>Code <span class="a17280e0"><span class="Label-sc-1t3ykp0-0 hopnJv _22665c13">Beta</span></span></span></a></li><li class="_8055e658 f5 fw5 tc pointer c1f85151" role="presentation"><a class="_38ce9a85 link db ph4 fw6" href="?activeTab=dependencies" aria-selected="false" role="tab" aria-controls="tabpanel-dependencies" id="package-tab-dependencies" tabindex="-1"><span><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="cube" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M239.1 6.3l-208 78c-18.7 7-31.1 25-31.1 45v225.1c0 18.2 10.3 34.8 26.5 42.9l208 104c13.5 6.8 29.4 6.8 42.9 0l208-104c16.3-8.1 26.5-24.8 26.5-42.9V129.3c0-20-12.4-37.9-31.1-44.9l-208-78C262 2.2 250 2.2 239.1 6.3zM256 68.4l192 72v1.1l-192 78-192-78v-1.1l192-72zm32 356V275.5l160-65v133.9l-160 80z"></path></svg>16 Dependencies</span></a></li><li class="_8055e658 f5 fw5 tc pointer _7cec0316" role="presentation"><a class="_38ce9a85 link db ph4 fw6" href="?activeTab=dependents" aria-selected="false" role="tab" aria-controls="tabpanel-dependents" id="package-tab-dependents" tabindex="-1"><span><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="cubes" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M488.6 250.2L392 214V105.5c0-15-9.3-28.4-23.4-33.7l-100-37.5c-8.1-3.1-17.1-3.1-25.3 0l-100 37.5c-14.1 5.3-23.4 18.7-23.4 33.7V214l-96.6 36.2C9.3 255.5 0 268.9 0 283.9V394c0 13.6 7.7 26.1 19.9 32.2l100 50c10.1 5.1 22.1 5.1 32.2 0l103.9-52 103.9 52c10.1 5.1 22.1 5.1 32.2 0l100-50c12.2-6.1 19.9-18.6 19.9-32.2V283.9c0-15-9.3-28.4-23.4-33.7zM358 214.8l-85 31.9v-68.2l85-37v73.3zM154 104.1l102-38.2 102 38.2v.6l-102 41.4-102-41.4v-.6zm84 291.1l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6zm240 112l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6z"></path></svg>0 Dependents</span></a></li><li class="_8055e658 f5 fw5 tc pointer b4fcfd19" role="presentation"><a class="_38ce9a85 link db ph4 fw6" href="?activeTab=versions" aria-selected="false" role="tab" aria-controls="tabpanel-versions" id="package-tab-versions" tabindex="-1"><span><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="tags" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path fill="currentColor" d="M497.941 225.941L286.059 14.059A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v204.118a48 48 0 0 0 14.059 33.941l211.882 211.882c18.744 18.745 49.136 18.746 67.882 0l204.118-204.118c18.745-18.745 18.745-49.137 0-67.882zM112 160c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm513.941 133.823L421.823 497.941c-18.745 18.745-49.137 18.745-67.882 0l-.36-.36L527.64 323.522c16.999-16.999 26.36-39.6 26.36-63.64s-9.362-46.641-26.36-63.64L331.397 0h48.721a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882z"></path></svg>39 Versions</span></a></li></ul><div class="_6620a4fd mw8-l mw-100 w-100 w-two-thirds-l ph3-m pt2 pl0-ns pl2"><span><section class="e22ba268 ph2 ph0-ns ml0-ns mr3-ns black-80" id="tabpanel-readme" aria-labelledby="package-tab-readme" role="tabpanel" data-attribute=""><div class=""><article><div id="readme" class="_704c034e _6d9832ac pr4-ns pl0-ns ph1-m pr3-m pr2"><div class="markdown-heading"><h1 class="heading-element">jspurefix</h1><a id="user-content-jspurefix" class="anchor" aria-label="Permalink: jspurefix" href="#jspurefix"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <p><a href="https://ci.appveyor.com/project/TimelordUK/jsfix" rel="nofollow"><img src="https://camo.githubusercontent.com/39dba2c15f07695e8c61be88fb7060e53e7aec087d05b07b2f6b47a81f52d545/68747470733a2f2f63692e6170707665796f722e636f6d2f6170692f70726f6a656374732f7374617475732f3277326561673474726e696a673564333f7376673d74727565" alt="Build status" data-canonical-src="https://ci.appveyor.com/api/projects/status/2w2eag4trnijg5d3?svg=true" style="max-width: 100%;"></a> <a href="https://travis-ci.org/TimelordUK/jspurefix" rel="nofollow"><img src="https://camo.githubusercontent.com/3188881ea0171318b41b7886a0174ce232c0c9d5a0228672871140f6e2058957/68747470733a2f2f7472617669732d63692e6f72672f54696d656c6f7264554b2f6a73707572656669782e7376673f6272616e63683d6d6173746572" alt="Build Status" data-canonical-src="https://travis-ci.org/TimelordUK/jspurefix.svg?branch=master" style="max-width: 100%;"></a> <a href="https://standardjs.com" rel="nofollow"><img src="https://camo.githubusercontent.com/eec9ddc8b4c75fec16ca8907960c876e6d6c4dabcd71bbb4a8e8f9dfb23ef10d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636f64655f7374796c652d7374616e646172642d627269676874677265656e2e737667" alt="JavaScript Style Guide" data-canonical-src="https://img.shields.io/badge/code_style-standard-brightgreen.svg" style="max-width: 100%;"></a></p> <ol> <li>fast 100% native clean fix engine for Node JS</li> <li>supports tls encrypted sessions over tcp</li> <li>represent data dictionary as quickfix or repo notation</li> <li>compile interface types against definitions</li> <li>ascii / fixml supported</li> <li>parses repeat groups, components and raw data fields</li> <li>views make convinient ways of accessing data</li> <li>complete trade capture sample to get started</li> <li>a skeleton example shows connection, login and session only</li> <li>parse fix logs into human readable format - JSON, tokens</li> <li>socket session management for login, heartbeat etc</li> <li>implement httpInitiator or acceptor</li> </ol> <div class="markdown-heading"><h2 class="heading-element">Typescript FIX Engine for Node JS</h2><a id="user-content-typescript-fix-engine-for-node-js" class="anchor" aria-label="Permalink: Typescript FIX Engine for Node JS" href="#typescript-fix-engine-for-node-js"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <p>This fix engine provides a fast easy API to parse or send finacial protocol FIX messages. It is implemented entirely in typescript and runs in Node JS. Messages of any complexity can be handled providing they are backed by a suitable data dictionary. All structures within a message will be resolved for easy access - groups of components containing groups etc.</p> <div class="markdown-heading"><h2 class="heading-element">Installing</h2><a id="user-content-installing" class="anchor" aria-label="Permalink: Installing" href="#installing"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <p>compiled typescript is now included. Install the package from npm:</p> <div class="highlight highlight-source-shell"><pre> npm install jspurefix <span class="pl-c1">cd</span> node_modules/jspurefix <span class="pl-k">&&</span> npm run unzip-repo</pre></div> <p>see our <a href="https://github.com/TimelordUK/jspf-demo/">demo application</a></p> <div class="highlight highlight-source-shell"><pre> https://github.com/TimelordUK/jspf-demo</pre></div> <p>if you wish to generate custom messages this is easily doing using quick fix XML format - see <a href="https://github.com/TimelordUK/jspf-md-demo">quickfix demo</a></p> <p>edit the dictionary file data/generate and run the generator.</p> <div class="highlight highlight-source-shell"><pre> npm run generate</pre></div> <p>check the messages generated in src\types</p> <div class="highlight highlight-source-shell"><pre> https://github.com/TimelordUK/jspf-md-demo</pre></div> <p>import types for usage with a client</p> <div class="highlight highlight-source-ts"><pre><span class="pl-k">import</span> <span class="pl-kos">{</span> <span class="pl-smi">AsciiSession</span><span class="pl-kos">,</span> <span class="pl-smi">MsgView</span><span class="pl-kos">,</span> <span class="pl-smi">IJsFixConfig</span><span class="pl-kos">,</span> <span class="pl-smi">IJsFixLogger</span><span class="pl-kos">,</span> <span class="pl-smi">Dictionary</span><span class="pl-kos">,</span> <span class="pl-smi">MsgType</span><span class="pl-kos">,</span> <span class="pl-smi">IJsFixConfig</span><span class="pl-kos">,</span> <span class="pl-s1">initiator</span><span class="pl-kos">,</span> <span class="pl-s1">acceptor</span><span class="pl-kos">,</span> <span class="pl-s1">makeConfig</span> <span class="pl-kos">}</span> <span class="pl-k">from</span> <span class="pl-s">'jspurefix'</span> <span class="pl-c">// types for the specific FIX dialect</span> <span class="pl-k">import</span> <span class="pl-kos">{</span> <span class="pl-smi">ITradeCaptureReport</span><span class="pl-kos">,</span> <span class="pl-smi">ITradeCaptureReportRequest</span><span class="pl-kos">,</span> <span class="pl-smi">ITradeCaptureReportRequestAck</span> <span class="pl-kos">}</span> <span class="pl-k">from</span> <span class="pl-s">'jspurefix/dist/types/FIX4.4/repo'</span></pre></div> <p>see example trade-capture-client - use</p> <div class="markdown-heading"><h3 class="heading-element">getting started</h3><a id="user-content-getting-started" class="anchor" aria-label="Permalink: getting started" href="#getting-started"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <p>clone from git</p> <p>unix</p> <div class="highlight highlight-source-shell"><pre> git clone https://github.com/TimelordUK/jspurefix.git <span class="pl-c1">cd</span> jspurefix script/build.sh</pre></div> <div class="highlight highlight-source-shell"><pre> npm install npm run unzip-repo ./node_modules/.bin/tsc --version ./node_modules/.bin/tsc npm run tcp-tc</pre></div> <p>windows</p> <div class="highlight highlight-source-shell"><pre> git clone https://github.com/TimelordUK/jspurefix.git <span class="pl-c1">cd</span> jspurefix script<span class="pl-cce">\b</span>uild.cmd</pre></div> <p>or</p> <div class="highlight highlight-source-shell"><pre> git clone https://github.com/TimelordUK/jspurefix.git <span class="pl-c1">cd</span> jspurefix npm install npm run unzip-repo node_modules/.bin/tsc npm run tcp-tc</pre></div> <div class="markdown-heading"><h2 class="heading-element">Run Sample</h2><a id="user-content-run-sample" class="anchor" aria-label="Permalink: Run Sample" href="#run-sample"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <p>The code provided in src/sample/tcp/trade_capture is a good place to start in building an application with this library. In this case both client and server are run together communicating over a socket. In reality a client is more likely connecting to an external acceptor such as CME, ICE.</p> <p>There is also a skeleton application which shows all application code stripped away to just enough to create a connection, login and see the session.</p> <p>Both examples will automatically close down after ~1 minute or can be terminated CTRL-C</p> <p>ensure the repo dictionary has been unpacked above. This provides the data dictionary used to parse messages.</p> <p>run examples such as the trade capture, simple skeleton or http.</p> <div class="highlight highlight-source-shell"><pre>npm run tcp-tc</pre></div> <div class="highlight highlight-source-shell"><pre>npm run tcp-sk</pre></div> <p>included is an example fixml over http application where an order is submitted and execution report returned.</p> <div class="highlight highlight-source-shell"><pre>npm run http-oms</pre></div> <div class="markdown-heading"><h2 class="heading-element">tls SSL encryption</h2><a id="user-content-tls-ssl-encryption" class="anchor" aria-label="Permalink: tls SSL encryption" href="#tls-ssl-encryption"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <p>see example data\session\test-initiator-tls.json</p> <p>to run the provided example tls trade capture a script such as script\getKey.ps1 can be run to generate self certified certificates. This is a powershell script that requires openssl in the tunnel e.g. /mingw64/bin/openssl. the ca field below is only required when using self certified and will not be needed for a third party vendor where certificates are provided. Set enableTrace flag whilst diagnosing the session.</p> <div class="highlight highlight-source-json"><pre>{ <span class="pl-ent">"application"</span>: { <span class="pl-ent">"reconnectSeconds"</span>: <span class="pl-c1">10</span>, <span class="pl-ent">"type"</span>: <span class="pl-s"><span class="pl-pds">"</span>initiator<span class="pl-pds">"</span></span>, <span class="pl-ent">"name"</span>: <span class="pl-s"><span class="pl-pds">"</span>test_client<span class="pl-pds">"</span></span>, <span class="pl-ent">"tcp"</span>: { <span class="pl-ent">"host"</span> : <span class="pl-s"><span class="pl-pds">"</span>localhost<span class="pl-pds">"</span></span>, <span class="pl-ent">"port"</span>: <span class="pl-c1">2344</span>, <span class="pl-ent">"tls"</span>: { <span class="pl-ent">"timeout"</span>: <span class="pl-c1">10000</span>, <span class="pl-ent">"sessionTimeout"</span>: <span class="pl-c1">10000</span>, <span class="pl-ent">"enableTrace"</span>: <span class="pl-c1">true</span>, <span class="pl-ent">"key"</span>: <span class="pl-s"><span class="pl-pds">"</span>data/session/certs/client/client.key<span class="pl-pds">"</span></span>, <span class="pl-ent">"cert"</span>: <span class="pl-s"><span class="pl-pds">"</span>data/session/certs/client/client.crt<span class="pl-pds">"</span></span>, <span class="pl-ent">"ca"</span>: [ <span class="pl-s"><span class="pl-pds">"</span>data/session/certs/ca/ca.crt<span class="pl-pds">"</span></span> ] } }, <span class="pl-ent">"protocol"</span>: <span class="pl-s"><span class="pl-pds">"</span>ascii<span class="pl-pds">"</span></span>, <span class="pl-ent">"dictionary"</span>: <span class="pl-s"><span class="pl-pds">"</span>repo44<span class="pl-pds">"</span></span> }, <span class="pl-ent">"Username"</span>: <span class="pl-s"><span class="pl-pds">"</span>js-tls-client<span class="pl-pds">"</span></span>, <span class="pl-ent">"Password"</span>: <span class="pl-s"><span class="pl-pds">"</span>pwd-tls-client<span class="pl-pds">"</span></span>, <span class="pl-ent">"EncryptMethod"</span>: <span class="pl-c1">0</span>, <span class="pl-ent">"ResetSeqNumFlag"</span>: <span class="pl-c1">true</span>, <span class="pl-ent">"LastSentSeqNum"</span>: <span class="pl-c1">10</span>, <span class="pl-ent">"LastReceivedSeqNum"</span>: <span class="pl-c1">11</span>, <span class="pl-ent">"HeartBtInt"</span>: <span class="pl-c1">30</span>, <span class="pl-ent">"SenderCompId"</span>: <span class="pl-s"><span class="pl-pds">"</span>init-tls-comp<span class="pl-pds">"</span></span>, <span class="pl-ent">"TargetCompID"</span>: <span class="pl-s"><span class="pl-pds">"</span>accept-tls-comp<span class="pl-pds">"</span></span>, <span class="pl-ent">"TargetSubID"</span>: <span class="pl-s"><span class="pl-pds">"</span>fix<span class="pl-pds">"</span></span>, <span class="pl-ent">"BeginString"</span>: <span class="pl-s"><span class="pl-pds">"</span>FIX4.4<span class="pl-pds">"</span></span>, <span class="pl-ent">"BodyLengthChars"</span>: <span class="pl-c1">6</span> }</pre></div> <div class="markdown-heading"><h2 class="heading-element">configure the body length field padding width</h2><a id="user-content-configure-the-body-length-field-padding-width" class="anchor" aria-label="Permalink: configure the body length field padding width" href="#configure-the-body-length-field-padding-width"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <p>see example initiator file data\session\test-initiator-tls.json.</p> <p>i.e. include field BodyLengthChars which defaults to 7 characters if omitted.</p> <div class="highlight highlight-source-json"><pre>{ <span class="pl-ent">"BodsyLengthChars"</span>: <span class="pl-c1">6</span> }</pre></div> <div class="markdown-heading"><h2 class="heading-element">launching without resetting message sequences</h2><a id="user-content-launching-without-resetting-message-sequences" class="anchor" aria-label="Permalink: launching without resetting message sequences" href="#launching-without-resetting-message-sequences"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <p>If the message sequences are persisted over multiple sessions and are not reset on logon (ie. <code>"ResetSeqNumFlag": false,</code>), then the previously used sequence numbers can be set as follows:</p> <div class="highlight highlight-source-json"><pre>{ <span class="pl-ent">"ResetSeqNumFlag"</span>: <span class="pl-c1">false</span>, <span class="pl-ent">"LastSentSeqNum"</span>: <span class="pl-c1">10</span>, <span class="pl-ent">"LastReceivedSeqNum"</span>: <span class="pl-c1">11</span> }</pre></div> <div class="markdown-heading"><h2 class="heading-element">resending messages</h2><a id="user-content-resending-messages" class="anchor" aria-label="Permalink: resending messages" href="#resending-messages"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <p>By default, the library will not resend past messages as this requires persisting messages which depending on the volume, may also require a database. If you want to support resending you must override <code>AsciiSession.onResendRequest()</code> with a resending logic. Additionally, make sure to include the original message sequence and the duplicate message flag in the FIX object:</p> <div class="highlight highlight-source-ts"><pre><span class="pl-kos">{</span> ...<span class="pl-s1">messageBodyData</span><span class="pl-kos">,</span> <span class="pl-c1">StandardHeader</span>: <span class="pl-kos">{</span> <span class="pl-c1">PossDupFlag</span>: <span class="pl-c1">true</span><span class="pl-kos">,</span> <span class="pl-c1">MsgSeqNum</span>: <span class="pl-s1">sequenceNumber</span><span class="pl-kos">}</span><span class="pl-kos">,</span> <span class="pl-kos">}</span></pre></div> <div class="markdown-heading"><h3 class="heading-element">Example</h3><a id="user-content-example" class="anchor" aria-label="Permalink: Example" href="#example"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <div class="highlight highlight-source-json"><pre>{ <span class="pl-ent">"ClOrdID"</span>: <span class="pl-s"><span class="pl-pds">"</span>acceptor-order-id<span class="pl-pds">"</span></span>, <span class="pl-ent">"HandlInst"</span>: <span class="pl-s"><span class="pl-pds">"</span>2<span class="pl-pds">"</span></span>, <span class="pl-ent">"OrdType"</span>: <span class="pl-s"><span class="pl-pds">"</span>2<span class="pl-pds">"</span></span>, <span class="pl-ent">"Side"</span>: <span class="pl-s"><span class="pl-pds">"</span>2<span class="pl-pds">"</span></span>, <span class="pl-ent">"TransactTime"</span>: <span class="pl-s"><span class="pl-pds">"</span>2021-08-03T08:23:57.041Z<span class="pl-pds">"</span></span>, <span class="pl-ent">"Symbol"</span>: <span class="pl-s"><span class="pl-pds">"</span>some ticker<span class="pl-pds">"</span></span>, <span class="pl-ent">"StandardHeader"</span>: { <span class="pl-ent">"PossDupFlag"</span>: <span class="pl-c1">true</span>, <span class="pl-ent">"MsgSeqNum"</span>: <span class="pl-c1">2</span> } }</pre></div> <div class="markdown-heading"><h2 class="heading-element">Unit Tests</h2><a id="user-content-unit-tests" class="anchor" aria-label="Permalink: Unit Tests" href="#unit-tests"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <p>there is a comprehensive suite of tests which can be run</p> <div class="highlight highlight-source-shell"><pre>npm t</pre></div> <div class="highlight highlight-source-shell"><pre>PASS src/test/elastic-buffer.test.ts RUNS src/test/session.test.ts PASS src/test/encode-proxy.test.tsst.ts PASS src/test/execution-report.test.ts PASS src/test/view-decode.test.ts PASS src/test/ascii-encoder.test.ts PASS src/test/ascii-parser.test.ts PASS src/test/includes.test.ts PASS src/test/fixml-alloc-parse.test.ts (9.433s) PASS src/test/repo-full-fixml-msg.test.ts (6.025s) PASS src/test/fixml-mkt-data-settle-parse.test.ts (6.021s) PASS src/test/qf-full-msg.test.ts PASS src/test/logon.test.ts PASS src/test/fixml-mkt-data-fut-parse.test.ts (7.761s) PASS src/test/time-formatter.test.ts PASS src/test/ascii-segment.test.ts PASS src/test/session-state.test.ts PASS src/test/fixml-tc-bi-lateral-parse.test.ts (7.534s) PASS src/test/ascii-tag-pos.test.ts PASS src/test/fix-log-replay.test.ts PASS src/test/repo-full-ascii-msg.test.ts PASS src/test/session.test.ts (52.637s) Test Suites: 21 passed, 21 total Tests: 204 passed, 204 total Snapshots: 0 total Time: 54.606s, estimated 65s Ran all <span class="pl-c1">test</span> suites.</pre></div> <div class="markdown-heading"><h2 class="heading-element">Dictionary Definitions</h2><a id="user-content-dictionary-definitions" class="anchor" aria-label="Permalink: Dictionary Definitions" href="#dictionary-definitions"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <p>base definitions on existing template e.g. quickfix format FIX44.xml create an alias in data/dictionary.json compile interfaces</p> <div class="highlight highlight-source-shell"><pre>npm run cmd -- --dict=repo42 --compile</pre></div> <p>use the alias in a session file e.g. data/session/test-httpInitiator.json</p> <div class="markdown-heading"><h2 class="heading-element">sample trade-capture-client.ts</h2><a id="user-content-sample-trade-capture-clientts" class="anchor" aria-label="Permalink: sample trade-capture-client.ts" href="#sample-trade-capture-clientts"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <p>the method onApplicationMsg is called when a message is received. In this case the client has inherited from AsciiSession which carries out the session management.</p> <div class="highlight highlight-source-ts"><pre> <span class="pl-en">constructor</span> <span class="pl-kos">(</span><span class="pl-k">public</span> <span class="pl-s1">readonly</span> <span class="pl-s1">config</span>: <span class="pl-smi">IJsFixConfig</span><span class="pl-kos">)</span><span class="pl-kos"></span> <span class="pl-kos">{</span> <span class="pl-smi">super</span><span class="pl-kos">(</span><span class="pl-s1">config</span><span class="pl-kos">)</span> <span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-c1">logReceivedMsgs</span> <span class="pl-c1">=</span> <span class="pl-c1">true</span> <span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-c1">reports</span> <span class="pl-c1">=</span> <span class="pl-k">new</span> <span class="pl-smi">Dictionary</span><span class="pl-kos"><</span><span class="pl-smi">ITradeCaptureReport</span><span class="pl-kos">></span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-c1">fixLog</span> <span class="pl-c1">=</span> <span class="pl-s1">config</span><span class="pl-kos">.</span><span class="pl-c1">logFactory</span><span class="pl-kos">.</span><span class="pl-en">plain</span><span class="pl-kos">(</span><span class="pl-s">`jsfix.<span class="pl-s1"><span class="pl-kos">${</span><span class="pl-s1">config</span><span class="pl-kos">.</span><span class="pl-c1">description</span><span class="pl-kos">.</span><span class="pl-c1">application</span><span class="pl-kos">.</span><span class="pl-c1">name</span><span class="pl-kos">}</span></span>.txt`</span><span class="pl-kos">)</span> <span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-c1">logger</span> <span class="pl-c1">=</span> <span class="pl-s1">config</span><span class="pl-kos">.</span><span class="pl-c1">logFactory</span><span class="pl-kos">.</span><span class="pl-en">logger</span><span class="pl-kos">(</span><span class="pl-s">`<span class="pl-s1"><span class="pl-kos">${</span><span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-c1">me</span><span class="pl-kos">}</span></span>:TradeCaptureClient`</span><span class="pl-kos">)</span> <span class="pl-kos">}</span> <span class="pl-s1">protected</span><span class="pl-kos"></span> <span class="pl-en">onApplicationMsg</span> <span class="pl-kos">(</span><span class="pl-s1">msgType</span>: string<span class="pl-kos">,</span> <span class="pl-s1">view</span>: <span class="pl-smi">MsgView</span><span class="pl-kos">)</span>: <span class="pl-k">void</span> <span class="pl-kos">{</span> <span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-c1">logger</span><span class="pl-kos">.</span><span class="pl-en">info</span><span class="pl-kos">(</span><span class="pl-s">`<span class="pl-s1"><span class="pl-kos">${</span><span class="pl-s1">view</span><span class="pl-kos">.</span><span class="pl-en">toJson</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">}</span></span>`</span><span class="pl-kos">)</span> <span class="pl-k">switch</span> <span class="pl-kos">(</span><span class="pl-s1">msgType</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-k">case</span> <span class="pl-smi">MsgType</span><span class="pl-kos">.</span><span class="pl-c1">TradeCaptureReport</span>: <span class="pl-kos">{</span> <span class="pl-c">// create an object and cast to the interface</span> <span class="pl-k">const</span> <span class="pl-s1">tc</span>: <span class="pl-smi">ITradeCaptureReport</span> <span class="pl-c1">=</span> <span class="pl-s1">view</span><span class="pl-kos">.</span><span class="pl-en">toObject</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-c1">reports</span><span class="pl-kos">.</span><span class="pl-en">addUpdate</span><span class="pl-kos">(</span><span class="pl-s1">tc</span><span class="pl-kos">.</span><span class="pl-c1">TradeReportID</span><span class="pl-kos">,</span> <span class="pl-s1">tc</span><span class="pl-kos">)</span> <span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-c1">logger</span><span class="pl-kos">.</span><span class="pl-en">info</span><span class="pl-kos">(</span><span class="pl-s">`[reports: <span class="pl-s1"><span class="pl-kos">${</span><span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-c1">reports</span><span class="pl-kos">.</span><span class="pl-en">count</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">}</span></span>] received tc ExecID = <span class="pl-s1"><span class="pl-kos">${</span><span class="pl-s1">tc</span><span class="pl-kos">.</span><span class="pl-c1">ExecID</span><span class="pl-kos">}</span></span> TradeReportID = <span class="pl-s1"><span class="pl-kos">${</span><span class="pl-s1">tc</span><span class="pl-kos">.</span><span class="pl-c1">TradeReportID</span><span class="pl-kos">}</span></span> Symbol = <span class="pl-s1"><span class="pl-kos">${</span><span class="pl-s1">tc</span><span class="pl-kos">.</span><span class="pl-c1">Instrument</span><span class="pl-kos">.</span><span class="pl-c1">Symbol</span><span class="pl-kos">}</span></span> <span class="pl-s1"><span class="pl-kos">${</span><span class="pl-s1">tc</span><span class="pl-kos">.</span><span class="pl-c1">LastQty</span><span class="pl-kos">}</span></span> @ <span class="pl-s1"><span class="pl-kos">${</span><span class="pl-s1">tc</span><span class="pl-kos">.</span><span class="pl-c1">LastPx</span><span class="pl-kos">}</span></span>`</span><span class="pl-kos">)</span> <span class="pl-k">break</span> <span class="pl-kos">}</span> <span class="pl-k">case</span> <span class="pl-smi">MsgType</span><span class="pl-kos">.</span><span class="pl-c1">TradeCaptureReportRequestAck</span>: <span class="pl-kos">{</span> <span class="pl-k">const</span> <span class="pl-s1">tc</span>: <span class="pl-smi">ITradeCaptureReportRequestAck</span> <span class="pl-c1">=</span> <span class="pl-s1">view</span><span class="pl-kos">.</span><span class="pl-en">toObject</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-c1">logger</span><span class="pl-kos">.</span><span class="pl-en">info</span><span class="pl-kos">(</span><span class="pl-s">`received tcr ack <span class="pl-s1"><span class="pl-kos">${</span><span class="pl-s1">tc</span><span class="pl-kos">.</span><span class="pl-c1">TradeRequestID</span><span class="pl-kos">}</span></span> <span class="pl-s1"><span class="pl-kos">${</span><span class="pl-s1">tc</span><span class="pl-kos">.</span><span class="pl-c1">TradeRequestStatus</span><span class="pl-kos">}</span></span>`</span><span class="pl-kos">)</span> <span class="pl-k">break</span> <span class="pl-kos">}</span> <span class="pl-kos">}</span> <span class="pl-kos">}</span></pre></div> <p>the client onReady method is called when a connection is made and logon established and confirmed. In this case, client sends a trade capture request to the server.</p> <div class="highlight highlight-source-ts"><pre> <span class="pl-en">protected</span> <span class="pl-s1">onReady</span> <span class="pl-kos">(</span><span class="pl-s1">view</span>: <span class="pl-smi">MsgView</span><span class="pl-kos">)</span>: <span class="pl-k">void</span> <span class="pl-kos">{</span> <span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-c1">logger</span><span class="pl-kos">.</span><span class="pl-en">info</span><span class="pl-kos">(</span><span class="pl-s">'ready'</span><span class="pl-kos">)</span> <span class="pl-k">const</span> <span class="pl-s1">tcr</span>: <span class="pl-smi">ITradeCaptureReportRequest</span> <span class="pl-c1">=</span> <span class="pl-smi">TradeFactory</span><span class="pl-kos">.</span><span class="pl-en">tradeCaptureReportRequest</span><span class="pl-kos">(</span><span class="pl-s">'all-trades'</span><span class="pl-kos">,</span> <span class="pl-k">new</span> <span class="pl-smi">Date</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">)</span> <span class="pl-c">// send request to server</span> <span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-en">send</span><span class="pl-kos">(</span><span class="pl-smi">MsgType</span><span class="pl-kos">.</span><span class="pl-c1">TradeCaptureReportRequest</span><span class="pl-kos">,</span> <span class="pl-s1">tcr</span><span class="pl-kos">)</span> <span class="pl-k">const</span> <span class="pl-s1">logoutSeconds</span> <span class="pl-c1">=</span> <span class="pl-c1">32</span> <span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-c1">logger</span><span class="pl-kos">.</span><span class="pl-en">info</span><span class="pl-kos">(</span><span class="pl-s">`will logout after <span class="pl-s1"><span class="pl-kos">${</span><span class="pl-s1">logoutSeconds</span><span class="pl-kos">}</span></span>`</span><span class="pl-kos">)</span> <span class="pl-en">setTimeout</span><span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=></span> <span class="pl-kos">{</span> <span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-en">done</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">}</span><span class="pl-kos">,</span> <span class="pl-s1">logoutSeconds</span> <span class="pl-c1">*</span> <span class="pl-c1">1000</span><span class="pl-kos">)</span> <span class="pl-kos">}</span></pre></div> <div class="markdown-heading"><h2 class="heading-element">working with Views</h2><a id="user-content-working-with-views" class="anchor" aria-label="Permalink: working with Views" href="#working-with-views"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <p>see src/test/view-decode.test.ts</p> <p>note that a view can only be used within a callback context unless it is cloned. Once returned, the memory is re-used for next message. It is intended to convert to an object or parsed into an application specific message.</p> <p>fetch a group view</p> <div class="highlight highlight-source-ts"><pre> <span class="pl-k">const</span> <span class="pl-s1">noMDEntriesView</span>: <span class="pl-smi">MsgView</span> <span class="pl-c1">=</span> <span class="pl-s1">view</span><span class="pl-kos">.</span><span class="pl-en">getView</span><span class="pl-kos">(</span><span class="pl-s">'NoMDEntries'</span><span class="pl-kos">)</span> <span class="pl-k">const</span> <span class="pl-s1">mmEntryView</span>: <span class="pl-smi">MsgView</span> <span class="pl-c1">=</span> <span class="pl-s1">noMDEntriesView</span><span class="pl-kos">.</span><span class="pl-en">getGroupInstance</span><span class="pl-kos">(</span><span class="pl-c1">1</span><span class="pl-kos">)</span> <span class="pl-k">const</span> <span class="pl-s1">mmEntryExpireTimeAsString</span>: <span class="pl-smi">string</span> <span class="pl-c1">=</span> <span class="pl-s1">mmEntryView</span><span class="pl-kos">.</span><span class="pl-en">getString</span><span class="pl-kos">(</span><span class="pl-s">'ExpireTime'</span><span class="pl-kos">)</span> <span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">mmEntryExpireTimeAsString</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toEqual</span><span class="pl-kos">(</span><span class="pl-s">'20180608-20:53:14.000'</span><span class="pl-kos">)</span> <span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">mmEntryView</span><span class="pl-kos">.</span><span class="pl-en">getString</span><span class="pl-kos">(</span><span class="pl-c1">126</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toEqual</span><span class="pl-kos">(</span><span class="pl-s">'20180608-20:53:14.000'</span><span class="pl-kos">)</span></pre></div> <p>fetch single tags</p> <div class="highlight highlight-source-ts"><pre> <span class="pl-k">const</span> <span class="pl-s1">erView</span>: <span class="pl-smi">MsgView</span> <span class="pl-c1">=</span> <span class="pl-s1">views</span><span class="pl-kos">[</span><span class="pl-c1">0</span><span class="pl-kos">]</span> <span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">erView</span><span class="pl-kos">.</span><span class="pl-en">getString</span><span class="pl-kos">(</span><span class="pl-c1">35</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toEqual</span><span class="pl-kos">(</span><span class="pl-s">'8'</span><span class="pl-kos">)</span> <span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">erView</span><span class="pl-kos">.</span><span class="pl-en">getString</span><span class="pl-kos">(</span><span class="pl-s">'MsgType'</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toEqual</span><span class="pl-kos">(</span><span class="pl-s">'8'</span><span class="pl-kos">)</span> <span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">erView</span><span class="pl-kos">.</span><span class="pl-en">getString</span><span class="pl-kos">(</span><span class="pl-c1">8</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toEqual</span><span class="pl-kos">(</span><span class="pl-s">'FIX4.4'</span><span class="pl-kos">)</span> <span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">erView</span><span class="pl-kos">.</span><span class="pl-en">getTyped</span><span class="pl-kos">(</span><span class="pl-c1">9</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toEqual</span><span class="pl-kos">(</span><span class="pl-c1">6542</span><span class="pl-kos">)</span> <span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">erView</span><span class="pl-kos">.</span><span class="pl-en">getTyped</span><span class="pl-kos">(</span><span class="pl-s">'TotNumReports'</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toEqual</span><span class="pl-kos">(</span><span class="pl-c1">19404</span><span class="pl-kos">)</span> <span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">erView</span><span class="pl-kos">.</span><span class="pl-en">getTyped</span><span class="pl-kos">(</span><span class="pl-s">'StrikePrice'</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toEqual</span><span class="pl-kos">(</span><span class="pl-c1">52639</span><span class="pl-kos">)</span></pre></div> <p>fetch repeated tag</p> <div class="highlight highlight-source-ts"><pre> <span class="pl-k">const</span> <span class="pl-s1">erView</span>: <span class="pl-smi">MsgView</span> <span class="pl-c1">=</span> <span class="pl-s1">views</span><span class="pl-kos">[</span><span class="pl-c1">0</span><span class="pl-kos">]</span> <span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">erView</span><span class="pl-kos">.</span><span class="pl-en">getStrings</span><span class="pl-kos">(</span><span class="pl-s">'PartyID'</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toEqual</span><span class="pl-kos">(</span><span class="pl-kos">[</span><span class="pl-s">'magna.'</span><span class="pl-kos">,</span> <span class="pl-s">'iaculis'</span><span class="pl-kos">,</span> <span class="pl-s">'vitae,'</span><span class="pl-kos">]</span><span class="pl-kos">)</span></pre></div> <p>fetch a set of tags</p> <div class="highlight highlight-source-ts"><pre> <span class="pl-k">const</span> <span class="pl-kos">[</span><span class="pl-s1">a</span><span class="pl-kos">,</span> <span class="pl-s1">b</span><span class="pl-kos">,</span> <span class="pl-s1">c</span><span class="pl-kos">,</span> <span class="pl-s1">d</span><span class="pl-kos">]</span> <span class="pl-c1">=</span> <span class="pl-s1">view</span><span class="pl-kos">.</span><span class="pl-en">getTypedTags</span><span class="pl-kos">(</span><span class="pl-kos">[</span><span class="pl-c1">8</span><span class="pl-kos">,</span> <span class="pl-c1">9</span><span class="pl-kos">,</span> <span class="pl-c1">35</span><span class="pl-kos">,</span> <span class="pl-c1">49</span><span class="pl-kos">]</span><span class="pl-kos">)</span> <span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">a</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toEqual</span><span class="pl-kos">(</span><span class="pl-s">'FIX4.4'</span><span class="pl-kos">)</span> <span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">b</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toEqual</span><span class="pl-kos">(</span><span class="pl-c1">2955</span><span class="pl-kos">)</span> <span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">c</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toEqual</span><span class="pl-kos">(</span><span class="pl-s">'W'</span><span class="pl-kos">)</span> <span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">d</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toEqual</span><span class="pl-kos">(</span><span class="pl-s">'sender-10'</span><span class="pl-kos">)</span></pre></div> <p>convert view into an object which can be used alongside an interface for intellisense.</p> <div class="highlight highlight-source-ts"><pre> <span class="pl-k">import</span> <span class="pl-kos">{</span> <span class="pl-smi">ITradeCaptureReport</span> <span class="pl-kos">}</span> <span class="pl-k">from</span> <span class="pl-s">'../../../types/FIX4.4/repo/trade_capture_report'</span> <span class="pl-k">import</span> <span class="pl-kos">{</span> <span class="pl-smi">ITradeCaptureReportRequest</span> <span class="pl-kos">}</span> <span class="pl-k">from</span> <span class="pl-s">'../../../types/FIX4.4/repo/trade_capture_report_request'</span> <span class="pl-k">const</span> <span class="pl-s1">tc</span>: <span class="pl-smi">ITradeCaptureReport</span> <span class="pl-c1">=</span> <span class="pl-s1">view</span><span class="pl-kos">.</span><span class="pl-en">toObject</span><span class="pl-kos">(</span><span class="pl-kos">)</span></pre></div> <p>from data/examples/FIX.4.4/quickfix/execution-report</p> <p>get first in group fetched from object where group is array</p> <div class="highlight highlight-source-ts"><pre> <span class="pl-k">import</span> <span class="pl-kos">{</span> <span class="pl-smi">IUndInstrmtGrp</span> <span class="pl-kos">}</span> <span class="pl-k">from</span> <span class="pl-s">'../types/FIX4.4/quickfix/set/und_instrmt_grp'</span> <span class="pl-k">import</span> <span class="pl-kos">{</span> <span class="pl-smi">IUnderlyingInstrument</span> <span class="pl-kos">}</span> <span class="pl-k">from</span> <span class="pl-s">'../types/FIX4.4/quickfix/set/underlying_instrument'</span> <span class="pl-k">const</span> <span class="pl-s1">erView</span>: <span class="pl-smi">MsgView</span> <span class="pl-c1">=</span> <span class="pl-s1">views</span><span class="pl-kos">[</span><span class="pl-c1">0</span><span class="pl-kos">]</span> <span class="pl-k">const</span> <span class="pl-s1">undInstrmtGrpView</span>: <span class="pl-smi">MsgView</span> <span class="pl-c1">=</span> <span class="pl-s1">erView</span><span class="pl-kos">.</span><span class="pl-en">getView</span><span class="pl-kos">(</span><span class="pl-s">'UndInstrmtGrp'</span><span class="pl-kos">)</span> <span class="pl-k">const</span> <span class="pl-s1">undInstrmtGrpViewAsObject</span>: <span class="pl-smi">IUndInstrmtGrp</span> <span class="pl-c1">=</span> <span class="pl-s1">undInstrmtGrpView</span><span class="pl-kos">.</span><span class="pl-en">toObject</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">undInstrmtGrpViewAsObject</span><span class="pl-kos">.</span><span class="pl-c1">NoUnderlyings</span><span class="pl-kos">.</span><span class="pl-c1">length</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toEqual</span><span class="pl-kos">(</span><span class="pl-c1">2</span><span class="pl-kos">)</span> <span class="pl-k">const</span> <span class="pl-s1">underlying0</span>: <span class="pl-smi">IUnderlyingInstrument</span> <span class="pl-c1">=</span> <span class="pl-s1">undInstrmtGrpViewAsObject</span><span class="pl-kos">.</span><span class="pl-c1">NoUnderlyings</span><span class="pl-kos">[</span><span class="pl-c1">0</span><span class="pl-kos">]</span><span class="pl-kos">.</span><span class="pl-c1">UnderlyingInstrument</span> <span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">underlying0</span><span class="pl-kos">.</span><span class="pl-c1">UnderlyingSymbol</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toEqual</span><span class="pl-kos">(</span><span class="pl-s">'massa.'</span><span class="pl-kos">)</span></pre></div> <p>fetch nested structure in one call</p> <div class="highlight highlight-source-ts"><pre> <span class="pl-k">const</span> <span class="pl-s1">legGrpView</span> <span class="pl-c1">=</span> <span class="pl-s1">view</span><span class="pl-kos">.</span><span class="pl-en">getView</span><span class="pl-kos">(</span><span class="pl-s">'InstrmtLegGrp.NoLegs'</span><span class="pl-kos">)</span> <span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">legGrpView</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toBeTruthy</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-k">const</span> <span class="pl-s1">legGrp</span>: <span class="pl-smi">IInstrumentLeg</span><span class="pl-kos">[</span><span class="pl-kos">]</span> <span class="pl-c1">=</span> <span class="pl-s1">legGrpView</span><span class="pl-kos">.</span><span class="pl-en">toObject</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">legGrp</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toBeTruthy</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-smi">Array</span><span class="pl-kos">.</span><span class="pl-en">isArray</span><span class="pl-kos">(</span><span class="pl-s1">legGrp</span><span class="pl-kos">)</span><span class="pl-kos">)</span> <span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">legGrp</span><span class="pl-kos">.</span><span class="pl-c1">length</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toEqual</span><span class="pl-kos">(</span><span class="pl-c1">2</span><span class="pl-kos">)</span></pre></div> <p>get a tokenised view of tags in view</p> <div class="highlight highlight-source-ts"><pre><span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">log</span><span class="pl-kos">(</span><span class="pl-s1">view</span><span class="pl-kos">.</span><span class="pl-en">toString</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">)</span></pre></div> <p>get a component from parent - this is very low cost</p> <div class="highlight highlight-source-ts"><pre> <span class="pl-k">const</span> <span class="pl-s1">instrumentView</span>: <span class="pl-smi">MsgView</span> <span class="pl-c1">=</span> <span class="pl-s1">view</span><span class="pl-kos">.</span><span class="pl-en">getView</span><span class="pl-kos">(</span><span class="pl-s">'Instrument'</span><span class="pl-kos">)</span> <span class="pl-k">const</span> <span class="pl-s1">instrumentObject</span>: <span class="pl-smi">IInstrument</span> <span class="pl-c1">=</span> <span class="pl-s1">view</span><span class="pl-kos">.</span><span class="pl-en">getView</span><span class="pl-kos">(</span><span class="pl-s">'Instrument'</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toObject</span><span class="pl-kos">(</span><span class="pl-kos">)</span></pre></div> <div class="markdown-heading"><h2 class="heading-element">FIXML</h2><a id="user-content-fixml" class="anchor" aria-label="Permalink: FIXML" href="#fixml"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <p>Please see sample code src/sample/http for an example of how fixml can be used. Note regardless of using AsciiChars or Fixml application code looks very similar for example the client in this case.</p> <div class="highlight highlight-source-ts"><pre> <span class="pl-en">protected</span> <span class="pl-s1">onReady</span> <span class="pl-kos">(</span><span class="pl-s1">view</span>: <span class="pl-smi">MsgView</span><span class="pl-kos">)</span>: <span class="pl-k">void</span> <span class="pl-kos">{</span> <span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-c1">logger</span><span class="pl-kos">.</span><span class="pl-en">info</span><span class="pl-kos">(</span><span class="pl-s">'onReady'</span><span class="pl-kos">)</span> <span class="pl-k">const</span> <span class="pl-s1">logoutSeconds</span> <span class="pl-c1">=</span> <span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-c1">logoutSeconds</span> <span class="pl-k">const</span> <span class="pl-s1">req</span> <span class="pl-c1">=</span> <span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-c1">factory</span><span class="pl-kos">.</span><span class="pl-en">createOrder</span><span class="pl-kos">(</span><span class="pl-s">'IBM'</span><span class="pl-kos">,</span> <span class="pl-smi">Side</span><span class="pl-kos">.</span><span class="pl-c1">Buy</span><span class="pl-kos">,</span> <span class="pl-c1">10000</span><span class="pl-kos">,</span> <span class="pl-c1">100.12</span><span class="pl-kos">)</span> <span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-en">send</span><span class="pl-kos">(</span><span class="pl-s">'NewOrderSingle'</span><span class="pl-kos">,</span> <span class="pl-s1">req</span><span class="pl-kos">)</span> <span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-c1">logger</span><span class="pl-kos">.</span><span class="pl-en">info</span><span class="pl-kos">(</span><span class="pl-s">`will logout after <span class="pl-s1"><span class="pl-kos">${</span><span class="pl-s1">logoutSeconds</span><span class="pl-kos">}</span></span>`</span><span class="pl-kos">)</span> <span class="pl-en">setTimeout</span><span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=></span> <span class="pl-kos">{</span> <span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-en">done</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">}</span><span class="pl-kos">,</span> <span class="pl-c1">11</span> <span class="pl-c1">*</span> <span class="pl-c1">1000</span><span class="pl-kos">)</span> <span class="pl-kos">}</span> <span class="pl-s1">public</span><span class="pl-kos"></span> <span class="pl-en">createOrder</span> <span class="pl-kos">(</span><span class="pl-s1">symbol</span>: <span class="pl-s1">string</span><span class="pl-kos">,</span> <span class="pl-s1">side</span>: <span class="pl-smi">Side</span><span class="pl-kos">,</span> <span class="pl-s1">qty</span>: <span class="pl-s1">number</span><span class="pl-kos">,</span> <span class="pl-s1">price</span>: <span class="pl-s1">number</span><span class="pl-kos">)</span>: <span class="pl-smi">INewOrderSingle</span> <span class="pl-kos">{</span> <span class="pl-k">const</span> <span class="pl-s1">id</span>: <span class="pl-smi">number</span> <span class="pl-c1">=</span> <span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-c1">id</span><span class="pl-c1">++</span> <span class="pl-k">return</span> <span class="pl-kos">{</span> <span class="pl-c1">ClOrdID</span>: <span class="pl-s">`Cli<span class="pl-s1"><span class="pl-kos">${</span><span class="pl-s1">id</span><span class="pl-kos">}</span></span>`</span><span class="pl-kos">,</span> <span class="pl-c1">Account</span>: <span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-c1">account</span><span class="pl-kos">,</span> <span class="pl-c1">Side</span>: <span class="pl-s1">side</span><span class="pl-kos">,</span> <span class="pl-c1">Price</span>: <span class="pl-s1">price</span><span class="pl-kos">,</span> <span class="pl-c1">OrdType</span>: <span class="pl-smi">OrdType</span><span class="pl-kos">.</span><span class="pl-c1">Limit</span><span class="pl-kos">,</span> <span class="pl-c1">OrderQtyData</span>: <span class="pl-kos">{</span> <span class="pl-c1">OrderQty</span>: <span class="pl-s1">qty</span> <span class="pl-kos">}</span> <span class="pl-k">as</span> <span class="pl-smi">IOrderQtyData</span><span class="pl-kos">,</span> <span class="pl-c1">Instrument</span>: <span class="pl-kos">{</span> <span class="pl-c1">Symbol</span>: <span class="pl-s1">symbol</span><span class="pl-kos">,</span> <span class="pl-c1">SecurityID</span>: <span class="pl-s">'459200101'</span><span class="pl-kos">,</span> <span class="pl-c1">SecurityIDSource</span>: <span class="pl-smi">SecurityIDSource</span><span class="pl-kos">.</span><span class="pl-c1">IsinNumber</span> <span class="pl-kos">}</span> <span class="pl-k">as</span> <span class="pl-smi">IInstrument</span><span class="pl-kos">,</span> <span class="pl-c1">TimeInForce</span>: <span class="pl-smi">TimeInForce</span><span class="pl-kos">.</span><span class="pl-c1">GoodTillCancelGtc</span> <span class="pl-kos">}</span> <span class="pl-k">as</span> <span class="pl-smi">INewOrderSingle</span> <span class="pl-kos">}</span></pre></div> <p>this renders to this message sent over http</p> <div class="highlight highlight-text-xml"><pre><<span class="pl-ent">FIXML</span>> <<span class="pl-ent">Order</span> <span class="pl-e">ID</span>=<span class="pl-s"><span class="pl-pds">"</span>Cli1<span class="pl-pds">"</span></span> <span class="pl-e">Acct</span>=<span class="pl-s"><span class="pl-pds">"</span>TradersRUs<span class="pl-pds">"</span></span> <span class="pl-e">Side</span>=<span class="pl-s"><span class="pl-pds">"</span>1<span class="pl-pds">"</span></span> <span class="pl-e">Typ</span>=<span class="pl-s"><span class="pl-pds">"</span>2<span class="pl-pds">"</span></span> <span class="pl-e">Px</span>=<span class="pl-s"><span class="pl-pds">"</span>100.12<span class="pl-pds">"</span></span> <span class="pl-e">TmInForce</span>=<span class="pl-s"><span class="pl-pds">"</span>1<span class="pl-pds">"</span></span>> <<span class="pl-ent">Hdr</span> <span class="pl-e">SID</span>=<span class="pl-s"><span class="pl-pds">"</span>accept-comp<span class="pl-pds">"</span></span> <span class="pl-e">TID</span>=<span class="pl-s"><span class="pl-pds">"</span>init-comp<span class="pl-pds">"</span></span> <span class="pl-e">SSub</span>=<span class="pl-s"><span class="pl-pds">"</span>user123<span class="pl-pds">"</span></span> <span class="pl-e">TSub</span>=<span class="pl-s"><span class="pl-pds">"</span>INC<span class="pl-pds">"</span></span>/> <<span class="pl-ent">Instrmt</span> <span class="pl-e">Sym</span>=<span class="pl-s"><span class="pl-pds">"</span>IBM<span class="pl-pds">"</span></span> <span class="pl-e">ID</span>=<span class="pl-s"><span class="pl-pds">"</span>459200101<span class="pl-pds">"</span></span> <span class="pl-e">Src</span>=<span class="pl-s"><span class="pl-pds">"</span>4<span class="pl-pds">"</span></span>/> <<span class="pl-ent">OrdQty</span> <span class="pl-e">Qty</span>=<span class="pl-s"><span class="pl-pds">"</span>10000<span class="pl-pds">"</span></span>/> </<span class="pl-ent">Order</span>> </<span class="pl-ent">FIXML</span>></pre></div> <p>the server receives this message and sends back an execution report :-</p> <div class="highlight highlight-source-ts"><pre> <span class="pl-k">protected</span> <span class="pl-en">onApplicationMsg</span> <span class="pl-kos">(</span><span class="pl-s1">msgType</span>: string<span class="pl-kos">,</span> <span class="pl-s1">view</span>: <span class="pl-smi">MsgView</span><span class="pl-kos">)</span>: <span class="pl-k">void</span> <span class="pl-kos">{</span> <span class="pl-c">// dispatch messages</span> this<span class="pl-kos"></span><span class="pl-kos">.</span><span class="pl-c1">logger</span><span class="pl-kos">.</span><span class="pl-en">info</span><span class="pl-kos">(</span><span class="pl-s1">view</span><span class="pl-kos">.</span><span class="pl-en">toJson</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">)</span> <span class="pl-k">switch</span> <span class="pl-kos">(</span><span class="pl-s1">msgType</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> <span class="pl-k">case</span> <span class="pl-s">'Order'</span>: <span class="pl-kos">{</span> <span class="pl-k">const</span> <span class="pl-s1">order</span>: <span class="pl-smi">INewOrderSingle</span> <span class="pl-c1">=</span> <span class="pl-s1">view</span><span class="pl-kos">.</span><span class="pl-en">toObject</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-c1">logger</span><span class="pl-kos">.</span><span class="pl-en">info</span><span class="pl-kos">(</span><span class="pl-s">`received order id <span class="pl-s1"><span class="pl-kos">${</span><span class="pl-s1">order</span><span class="pl-kos">.</span><span class="pl-c1">ClOrdID</span><span class="pl-kos">}</span></span>`</span><span class="pl-kos">)</span> <span class="pl-k">const</span> <span class="pl-s1">fill</span>: <span class="pl-smi">IExecutionReport</span> <span class="pl-c1">=</span> <span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-c1">factory</span><span class="pl-kos">.</span><span class="pl-en">fillOrder</span><span class="pl-kos">(</span><span class="pl-s1">order</span><span class="pl-kos">)</span> <span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-en">send</span><span class="pl-kos">(</span><span class="pl-s">'ExecutionReport'</span><span class="pl-kos">,</span> <span class="pl-s1">fill</span><span class="pl-kos">)</span> <span class="pl-kos">}</span> <span class="pl-kos">}</span> <span class="pl-kos">}</span> <span class="pl-en">public</span> <span class="pl-s1">fillOrder</span> <span class="pl-kos">(</span><span class="pl-s1">order</span>: <span class="pl-smi">INewOrderSingle</span><span class="pl-kos">)</span>: <span class="pl-smi">IExecutionReport</span> <span class="pl-kos">{</span> <span class="pl-k">const</span> <span class="pl-s1">id</span>: <span class="pl-smi">number</span> <span class="pl-c1">=</span> <span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-c1">execId</span><span class="pl-c1">++</span> <span class="pl-k">return</span> <span class="pl-kos">{</span> <span class="pl-c1">ClOrdID</span>: <span class="pl-s1">order</span><span class="pl-kos">.</span><span class="pl-c1">ClOrdID</span><span class="pl-kos">,</span> <span class="pl-c1">OrdType</span>: <span class="pl-s1">order</span><span class="pl-kos">.</span><span class="pl-c1">OrdType</span><span class="pl-kos">,</span> <span class="pl-c1">TransactTime</span>: <span class="pl-k">new</span> <span class="pl-smi">Date</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">,</span> <span class="pl-c1">AvgPx</span>: <span class="pl-s1">order</span><span class="pl-kos">.</span><span class="pl-c1">Price</span><span class="pl-kos">,</span> <span class="pl-c1">LeavesQty</span>: <span class="pl-c1">0</span><span class="pl-kos">,</span> <span class="pl-c1">LastPx</span>: <span class="pl-s1">order</span><span class="pl-kos">.</span><span class="pl-c1">Price</span><span class="pl-kos">,</span> <span class="pl-c1">ExecType</span>: <span class="pl-smi">ExecType</span><span class="pl-kos">.</span><span class="pl-c1">OrderStatus</span><span class="pl-kos">,</span> <span class="pl-c1">OrdStatus</span>: <span class="pl-smi">OrdStatus</span><span class="pl-kos">.</span><span class="pl-c1">Filled</span><span class="pl-kos">,</span> <span class="pl-c1">ExecID</span>: <span class="pl-s">`exec<span class="pl-s1"><span class="pl-kos">${</span><span class="pl-s1">id</span><span class="pl-kos">}</span></span>`</span><span class="pl-kos">,</span> <span class="pl-c1">Side</span>: <span class="pl-s1">order</span><span class="pl-kos">.</span><span class="pl-c1">Side</span><span class="pl-kos">,</span> <span class="pl-c1">Price</span>: <span class="pl-s1">order</span><span class="pl-kos">.</span><span class="pl-c1">Price</span><span class="pl-kos">,</span> <span class="pl-c1">OrderQtyData</span>: <span class="pl-kos">{</span> <span class="pl-c1">OrderQty</span>: <span class="pl-s1">order</span><span class="pl-kos">.</span><span class="pl-c1">OrderQtyData</span><span class="pl-kos">.</span><span class="pl-c1">OrderQty</span> <span class="pl-kos">}</span> <span class="pl-k">as</span> <span class="pl-smi">IOrderQtyData</span><span class="pl-kos">,</span> <span class="pl-c1">Instrument</span>: <span class="pl-kos">{</span> <span class="pl-c1">Symbol</span>: <span class="pl-s1">order</span><span class="pl-kos">.</span><span class="pl-c1">Instrument</span><span class="pl-kos">.</span><span class="pl-c1">Symbol</span><span class="pl-kos">,</span> <span class="pl-c1">SecurityID</span>: <span class="pl-s1">order</span><span class="pl-kos">.</span><span class="pl-c1">Instrument</span><span class="pl-kos">.</span><span class="pl-c1">SecurityID</span><span class="pl-kos">,</span> <span class="pl-c1">SecurityIDSource</span>: <span class="pl-smi">SecurityIDSource</span><span class="pl-kos">.</span><span class="pl-c1">IsinNumber</span> <span class="pl-kos">}</span> <span class="pl-k">as</span> <span class="pl-smi">IInstrument</span> <span class="pl-kos">}</span> <span class="pl-k">as</span> <span class="pl-smi">IExecutionReport</span> <span class="pl-kos">}</span></pre></div> <p>the fixml is sent back to the client :-</p> <div class="highlight highlight-text-xml"><pre><<span class="pl-ent">FIXML</span>> <<span class="pl-ent">ExecRpt</span> <span class="pl-e">ID</span>=<span class="pl-s"><span class="pl-pds">"</span>Cli1<span class="pl-pds">"</span></span> <span class="pl-e">ExecID</span>=<span class="pl-s"><span class="pl-pds">"</span>exec1<span class="pl-pds">"</span></span> <span class="pl-e">ExecTyp</span>=<span class="pl-s"><span class="pl-pds">"</span>I<span class="pl-pds">"</span></span> <span class="pl-e">Stat</span>=<span class="pl-s"><span class="pl-pds">"</span>2<span class="pl-pds">"</span></span> <span class="pl-e">Side</span>=<span class="pl-s"><span class="pl-pds">"</span>1<span class="pl-pds">"</span></span> <span class="pl-e">Typ</span>=<span class="pl-s"><span class="pl-pds">"</span>2<span class="pl-pds">"</span></span> <span class="pl-e">Px</span>=<span class="pl-s"><span class="pl-pds">"</span>100.12<span class="pl-pds">"</span></span> <span class="pl-e">LastPx</span>=<span class="pl-s"><span class="pl-pds">"</span>100.12<span class="pl-pds">"</span></span> <span class="pl-e">LeavesQty</span>=<span class="pl-s"><span class="pl-pds">"</span>0<span class="pl-pds">"</span></span> <span class="pl-e">AvgPx</span>=<span class="pl-s"><span class="pl-pds">"</span>100.12<span class="pl-pds">"</span></span> <span class="pl-e">TxnTm</span>=<span class="pl-s"><span class="pl-pds">"</span>2018-10-07T12:16:12.584<span class="pl-pds">"</span></span>> <<span class="pl-ent">Hdr</span> <span class="pl-e">SID</span>=<span class="pl-s"><span class="pl-pds">"</span>accept-comp<span class="pl-pds">"</span></span> <span class="pl-e">TID</span>=<span class="pl-s"><span class="pl-pds">"</span>init-comp<span class="pl-pds">"</span></span> <span class="pl-e">TSub</span>=<span class="pl-s"><span class="pl-pds">"</span>fix<span class="pl-pds">"</span></span>/> <<span class="pl-ent">Instrmt</span> <span class="pl-e">Sym</span>=<span class="pl-s"><span class="pl-pds">"</span>IBM<span class="pl-pds">"</span></span> <span class="pl-e">ID</span>=<span class="pl-s"><span class="pl-pds">"</span>459200101<span class="pl-pds">"</span></span> <span class="pl-e">Src</span>=<span class="pl-s"><span class="pl-pds">"</span>4<span class="pl-pds">"</span></span>/> <<span class="pl-ent">OrdQty</span> <span class="pl-e">Qty</span>=<span class="pl-s"><span class="pl-pds">"</span>10000<span class="pl-pds">"</span></span>/> </<span class="pl-ent">ExecRpt</span>> </<span class="pl-ent">FIXML</span>></pre></div> <div class="markdown-heading"><h2 class="heading-element">Performance</h2><a id="user-content-performance" class="anchor" aria-label="Permalink: Performance" href="#performance"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <p>These messages have been randomly generated with command line tool. They are syntactically valid.</p> <div class="markdown-heading"><h3 class="heading-element">data/examples/FIX.4.4/repo/execution-report/fix.txt</h3><a id="user-content-dataexamplesfix44repoexecution-reportfixtxt" class="anchor" aria-label="Permalink: data/examples/FIX.4.4/repo/execution-report/fix.txt" href="#dataexamplesfix44repoexecution-reportfixtxt"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <div class="highlight highlight-source-shell"><pre>npm run repo44-bench-er</pre></div> <div class="markdown-heading"><h3 class="heading-element">performance on Windows Intel Core I7-4770 @ 3.5 GHz</h3><a id="user-content-performance-on-windows-intel-core-i7-4770--35-ghz" class="anchor" aria-label="Permalink: performance on Windows Intel Core I7-4770 @ 3.5 GHz" href="#performance-on-windows-intel-core-i7-4770--35-ghz"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <div class="highlight highlight-source-shell"><pre>[8]: repeats = 250000, fields = 58, length = 604 chars, elapsed ms 3658, 14.632 micros per msg [8]: iterations = 80000, fields = 646, length = 6572 chars, elapsed ms 16499, 206.23749999999998 micros per msg</pre></div> <div class="markdown-heading"><h3 class="heading-element">performance on Windows 12th Gen Intel(R) Core(TM) i7-12700H 2.30 GHz</h3><a id="user-content-performance-on-windows-12th-gen-intelr-coretm-i7-12700h-230-ghz" class="anchor" aria-label="Permalink: performance on Windows 12th Gen Intel(R) Core(TM) i7-12700H 2.30 GHz" href="#performance-on-windows-12th-gen-intelr-coretm-i7-12700h-230-ghz"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <div class="highlight highlight-source-shell"><pre>[8]: iterations = 80000, fields = 646, length = 6572 chars, elapsed ms 7476, 93.45 micros per msg</pre></div> <div class="markdown-heading"><h3 class="heading-element">data/examples/FIX.4.4/repo/security-definition/fix.txt</h3><a id="user-content-dataexamplesfix44reposecurity-definitionfixtxt" class="anchor" aria-label="Permalink: data/examples/FIX.4.4/repo/security-definition/fix.txt" href="#dataexamplesfix44reposecurity-definitionfixtxt"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <div class="highlight highlight-source-shell"><pre>npm run repo44-bench-sd</pre></div> <div class="markdown-heading"><h3 class="heading-element">performance on Windows Intel Core I7-4770 @ 3.5 GHz</h3><a id="user-content-performance-on-windows-intel-core-i7-4770--35-ghz-1" class="anchor" aria-label="Permalink: performance on Windows Intel Core I7-4770 @ 3.5 GHz" href="#performance-on-windows-intel-core-i7-4770--35-ghz-1"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <div class="highlight highlight-source-shell"><pre>[d]: repeats = 150000, fields = 223, length = 2233 chars, elapsed ms 7962, 53.080000000000005 micros per msg d]: iterations = 150000, fields = 229, length = 2466 chars, elapsed ms 8672, 57.81333333333333 micros per msg</pre></div> <div class="markdown-heading"><h3 class="heading-element">performance on Windows 12th Gen Intel(R) Core(TM) i7-12700H 2.30 GHz</h3><a id="user-content-performance-on-windows-12th-gen-intelr-coretm-i7-12700h-230-ghz-1" class="anchor" aria-label="Permalink: performance on Windows 12th Gen Intel(R) Core(TM) i7-12700H 2.30 GHz" href="#performance-on-windows-12th-gen-intelr-coretm-i7-12700h-230-ghz-1"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <pre><code>[d]: iterations = 150000, fields = 229, length = 2466 chars, elapsed ms 4628, 30.85333333333333 micros per msg </code></pre> <div class="markdown-heading"><h3 class="heading-element">data/examples/FIX.4.4/repo/trade-capture/fix.txt</h3><a id="user-content-dataexamplesfix44repotrade-capturefixtxt" class="anchor" aria-label="Permalink: data/examples/FIX.4.4/repo/trade-capture/fix.txt" href="#dataexamplesfix44repotrade-capturefixtxt"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <div class="highlight highlight-source-shell"><pre>npm run repo44-bench-tc</pre></div> <div class="markdown-heading"><h3 class="heading-element">performance on Windows Intel Core I7-4770 @ 3.5 GHz</h3><a id="user-content-performance-on-windows-intel-core-i7-4770--35-ghz-2" class="anchor" aria-label="Permalink: performance on Windows Intel Core I7-4770 @ 3.5 GHz" href="#performance-on-windows-intel-core-i7-4770--35-ghz-2"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <div class="highlight highlight-source-shell"><pre>[AE]: repeats = 30000, fields = 613, length = 5818 chars, elapsed ms 5206, 173.53333333333333 micros per msg [AE]: iterations = 30000, fields = 578, length = 5741 chars, elapsed ms 5245, 174.83333333333334 micros per msg<span class="pl-s"><span class="pl-pds">`</span><span class="pl-pds">`</span><span class="pl-pds">`</span></span></pre></div> <div class="markdown-heading"><h3 class="heading-element">performance on Windows 12th Gen Intel(R) Core(TM) i7-12700H 2.30 GHz</h3><a id="user-content-performance-on-windows-12th-gen-intelr-coretm-i7-12700h-230-ghz-2" class="anchor" aria-label="Permalink: performance on Windows 12th Gen Intel(R) Core(TM) i7-12700H 2.30 GHz" href="#performance-on-windows-12th-gen-intelr-coretm-i7-12700h-230-ghz-2"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <div class="highlight highlight-source-shell"><pre>[AE]: iterations = 30000, fields = 578, length = 5741 chars, elapsed ms 2725, 90.83333333333333 micros per msg<span class="pl-s"><span class="pl-pds">`</span><span class="pl-pds">`</span><span class="pl-pds">`</span></span></pre></div> <div class="markdown-heading"><h3 class="heading-element">data/examples/FIX.4.4/quickfix/heartbeat/fix.txt</h3><a id="user-content-dataexamplesfix44quickfixheartbeatfixtxt" class="anchor" aria-label="Permalink: data/examples/FIX.4.4/quickfix/heartbeat/fix.txt" href="#dataexamplesfix44quickfixheartbeatfixtxt"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <div class="highlight highlight-source-shell"><pre>npm run qf-bench-hb</pre></div> <div class="markdown-heading"><h3 class="heading-element">performance on Windows Intel Core I7-4770 @ 3.5 GHz</h3><a id="user-content-performance-on-windows-intel-core-i7-4770--35-ghz-3" class="anchor" aria-label="Permalink: performance on Windows Intel Core I7-4770 @ 3.5 GHz" href="#performance-on-windows-intel-core-i7-4770--35-ghz-3"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <div class="highlight highlight-source-shell"><pre>[0]: iterations = 250000, fields = 10, length = 131 chars, elapsed ms 950, 3.8 micros per msg</pre></div> <div class="markdown-heading"><h3 class="heading-element">performance on Windows 12th Gen Intel(R) Core(TM) i7-12700H 2.30 GHz</h3><a id="user-content-performance-on-windows-12th-gen-intelr-coretm-i7-12700h-230-ghz-3" class="anchor" aria-label="Permalink: performance on Windows 12th Gen Intel(R) Core(TM) i7-12700H 2.30 GHz" href="#performance-on-windows-12th-gen-intelr-coretm-i7-12700h-230-ghz-3"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <div class="highlight highlight-source-shell"><pre>[0]: iterations = 250000, fields = 10, length = 131 chars, elapsed ms 468, 1.8719999999999999 micros per msg</pre></div> <div class="markdown-heading"><h3 class="heading-element">data/examples/FIX.4.4/quickfix/logon/fix.txt</h3><a id="user-content-dataexamplesfix44quickfixlogonfixtxt" class="anchor" aria-label="Permalink: data/examples/FIX.4.4/quickfix/logon/fix.txt" href="#dataexamplesfix44quickfixlogonfixtxt"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <div class="highlight highlight-source-shell"><pre>npm run qf-bench-lo</pre></div> <div class="markdown-heading"><h3 class="heading-element">performance on Windows Intel Core I7-4770 @ 3.5 GHz</h3><a id="user-content-performance-on-windows-intel-core-i7-4770--35-ghz-4" class="anchor" aria-label="Permalink: performance on Windows Intel Core I7-4770 @ 3.5 GHz" href="#performance-on-windows-intel-core-i7-4770--35-ghz-4"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <div class="highlight highlight-source-shell"><pre>[A]: iterations = 250000, fields = 22, length = 214 chars, elapsed ms 1466, 5.864 micros per msg</pre></div> <div class="markdown-heading"><h3 class="heading-element">performance on Windows 12th Gen Intel(R) Core(TM) i7-12700H 2.30 GHz</h3><a id="user-content-performance-on-windows-12th-gen-intelr-coretm-i7-12700h-230-ghz-4" class="anchor" aria-label="Permalink: performance on Windows 12th Gen Intel(R) Core(TM) i7-12700H 2.30 GHz" href="#performance-on-windows-12th-gen-intelr-coretm-i7-12700h-230-ghz-4"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <div class="highlight highlight-source-shell"><pre>[A]: iterations = 250000, fields = 22, length = 214 chars, elapsed ms 693, 2.7720000000000002 micros per msg</pre></div> <div class="markdown-heading"><h2 class="heading-element">Log parsing</h2><a id="user-content-log-parsing" class="anchor" aria-label="Permalink: Log parsing" href="#log-parsing"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <p>the command line tool jsfix can be used to parse any fix log providing an appropriate dictionary is provided.</p> <div class="markdown-heading"><h2 class="heading-element">parsing fields</h2><a id="user-content-parsing-fields" class="anchor" aria-label="Permalink: parsing fields" href="#parsing-fields"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <div class="highlight highlight-source-shell"><pre>npm run cmd -- --dict=repo44 --fix=data/examples/FIX.4.4/jsfix.test_client.txt --delimiter=<span class="pl-s"><span class="pl-pds">"</span>|<span class="pl-pds">"</span></span> --type=AD --tokens</pre></div> <div class="highlight highlight-source-shell"><pre>[0] 8 (BeginString) = FIX4.4, [1] 9 (BodyLength) = 0000135 [2] 35 (MsgType) = AD[TradeCaptureReportRequest], [3] 49 (SenderCompID) = init-comp [4] 56 (TargetCompID) = accept-comp, [5] 34 (MsgSeqNum) = 2 [6] 57 (TargetSubID) = fix, [7] 52 (SendingTime) = 20180923-16:07:04.763 [8] 568 (TradeRequestID) = all-trades, [9] 569 (TradeRequestType) = 0[AllTrades] [10] 263 (SubscriptionRequestType) = 1[SnapshotAndUpdates], [11] 580 (NoDates) = 1 [12] 75 (TradeDate) = 20180923, [13] 10 (CheckSum) = 250</pre></div> <div class="markdown-heading"><h2 class="heading-element">stats on entire file</h2><a id="user-content-stats-on-entire-file" class="anchor" aria-label="Permalink: stats on entire file" href="#stats-on-entire-file"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <div class="highlight highlight-source-shell"><pre>npm run cmd -- --dict=repo44 --fix=data/examples/FIX.4.4/jsfix.test_client.txt --delimiter=<span class="pl-s"><span class="pl-pds">"</span>|<span class="pl-pds">"</span></span> --stats</pre></div> <div class="highlight highlight-source-json"><pre><span class="pl-ii">messages 13 elapsed ms 8</span> { <span class="pl-ent">"0"</span>: <span class="pl-c1">1</span>, <span class="pl-ent">"5"</span>: <span class="pl-c1">2</span>, <span class="pl-ent">"A"</span>: <span class="pl-c1">2</span>, <span class="pl-ent">"AD"</span>: <span class="pl-c1">1</span>, <span class="pl-ent">"AQ"</span>: <span class="pl-c1">2</span>, <span class="pl-ent">"AE"</span>: <span class="pl-c1">5</span> }</pre></div> <div class="markdown-heading"><h2 class="heading-element">benchmark parsing repeated reads of file</h2><a id="user-content-benchmark-parsing-repeated-reads-of-file" class="anchor" aria-label="Permalink: benchmark parsing repeated reads of file" href="#benchmark-parsing-repeated-reads-of-file"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <div class="highlight highlight-source-batchfile"><pre>npm run <span class="pl-k">cmd</span> -- --dict=repo44 --fix=data/examples/FIX.4.4/jsfix.test_client.txt --delimiter=<span class="pl-s"><span class="pl-pds">"</span>|<span class="pl-pds">"</span></span> --stats --repeats=<span class="pl-c1">20</span></pre></div> <div class="highlight highlight-source-json"><pre><span class="pl-ii">messages 13 elapsed ms 0</span> { <span class="pl-ent">"0"</span>: <span class="pl-c1">1</span>, <span class="pl-ent">"5"</span>: <span class="pl-c1">2</span>, <span class="pl-ent">"A"</span>: <span class="pl-c1">2</span>, <span class="pl-ent">"AD"</span>: <span class="pl-c1">1</span>, <span class="pl-ent">"AQ"</span>: <span class="pl-c1">2</span>, <span class="pl-ent">"AE"</span>: <span class="pl-c1">5</span> }</pre></div> <div class="markdown-heading"><h2 class="heading-element">parse message type in a file</h2><a id="user-content-parse-message-type-in-a-file" class="anchor" aria-label="Permalink: parse message type in a file" href="#parse-message-type-in-a-file"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <div class="highlight highlight-source-batchfile"><pre>npm run <span class="pl-k">cmd</span> -- --dict=repo44 --fix=data/examples/FIX.4.4/jsfix.test_client.txt --delimiter=<span class="pl-s"><span class="pl-pds">"</span>|<span class="pl-pds">"</span></span> --type=AD --objects</pre></div> <div class="highlight highlight-source-json"><pre>{ <span class="pl-ent">"StandardHeader"</span>: { <span class="pl-ent">"BeginString"</span>: <span class="pl-s"><span class="pl-pds">"</span>FIX4.4<span class="pl-pds">"</span></span>, <span class="pl-ent">"BodyLength"</span>: <span class="pl-c1">135</span>, <span class="pl-ent">"MsgType"</span>: <span class="pl-s"><span class="pl-pds">"</span>AD<span class="pl-pds">"</span></span>, <span class="pl-ent">"SenderCompID"</span>: <span class="pl-s"><span class="pl-pds">"</span>init-comp<span class="pl-pds">"</span></span>, <span class="pl-ent">"TargetCompID"</span>: <span class="pl-s"><span class="pl-pds">"</span>accept-comp<span class="pl-pds">"</span></span>, <span class="pl-ent">"MsgSeqNum"</span>: <span class="pl-c1">2</span>, <span class="pl-ent">"TargetSubID"</span>: <span class="pl-s"><span class="pl-pds">"</span>fix<span class="pl-pds">"</span></span>, <span class="pl-ent">"SendingTime"</span>: <span class="pl-s"><span class="pl-pds">"</span>2018-09-23T16:07:04.763Z<span class="pl-pds">"</span></span> }, <span class="pl-ent">"TradeRequestID"</span>: <span class="pl-s"><span class="pl-pds">"</span>all-trades<span class="pl-pds">"</span></span>, <span class="pl-ent">"TradeRequestType"</span>: <span class="pl-c1">0</span>, <span class="pl-ent">"SubscriptionRequestType"</span>: <span class="pl-s"><span class="pl-pds">"</span>1<span class="pl-pds">"</span></span>, <span class="pl-ent">"TrdCapDtGrp"</span>: [ { <span class="pl-ent">"TradeDate"</span>: <span class="pl-s"><span class="pl-pds">"</span>2018-09-22T23:00:00.000Z<span class="pl-pds">"</span></span> } ], <span class="pl-ent">"StandardTrailer"</span>: { <span class="pl-ent">"CheckSum"</span>: <span class="pl-s"><span class="pl-pds">"</span>250<span class="pl-pds">"</span></span> } }</pre></div> <p>as above where --type=AE --objects</p> <div class="highlight highlight-source-json"><pre>{ <span class="pl-ent">"StandardHeader"</span>: { <span class="pl-ent">"BeginString"</span>: <span class="pl-s"><span class="pl-pds">"</span>FIX4.4<span class="pl-pds">"</span></span>, <span class="pl-ent">"BodyLength"</span>: <span class="pl-c1">213</span>, <span class="pl-ent">"MsgType"</span>: <span class="pl-s"><span class="pl-pds">"</span>AE<span class="pl-pds">"</span></span>, <span class="pl-ent">"SenderCompID"</span>: <span class="pl-s"><span class="pl-pds">"</span>accept-comp<span class="pl-pds">"</span></span>, <span class="pl-ent">"TargetCompID"</span>: <span class="pl-s"><span class="pl-pds">"</span>init-comp<span class="pl-pds">"</span></span>, <span class="pl-ent">"MsgSeqNum"</span>: <span class="pl-c1">4</span>, <span class="pl-ent">"TargetSubID"</span>: <span class="pl-s"><span class="pl-pds">"</span>fix<span class="pl-pds">"</span></span>, <span class="pl-ent">"SendingTime"</span>: <span class="pl-s"><span class="pl-pds">"</span>2018-09-23T16:07:04.986Z<span class="pl-pds">"</span></span> }, <span class="pl-ent">"TradeReportID"</span>: <span class="pl-s"><span class="pl-pds">"</span>100001<span class="pl-pds">"</span></span>, <span class="pl-ent">"TradeReportTransType"</span>: <span class="pl-c1">0</span>, <span class="pl-ent">"TradeReportType"</span>: <span class="pl-c1">0</span>, <span class="pl-ent">"TrdType"</span>: <span class="pl-c1">0</span>, <span class="pl-ent">"ExecID"</span>: <span class="pl-s"><span class="pl-pds">"</span>600001<span class="pl-pds">"</span></span>, <span class="pl-ent">"OrdStatus"</span>: <span class="pl-s"><span class="pl-pds">"</span>2<span class="pl-pds">"</span></span>, <span class="pl-ent">"PreviouslyReported"</span>: <span class="pl-c1">false</span>, <span class="pl-ent">"Instrument"</span>: { <span class="pl-ent">"Symbol"</span>: <span class="pl-s"><span class="pl-pds">"</span>Gold<span class="pl-pds">"</span></span>, <span class="pl-ent">"SecurityID"</span>: <span class="pl-s"><span class="pl-pds">"</span>Gold.INC<span class="pl-pds">"</span></span> }, <span class="pl-ent">"LastQty"</span>: <span class="pl-c1">107</span>, <span class="pl-ent">"LastPx"</span>: <span class="pl-c1">45.38</span>, <span class="pl-ent">"TradeDate"</span>: <span class="pl-s"><span class="pl-pds">"</span>2018-09-22T23:00:00.000Z<span class="pl-pds">"</span></span>, <span class="pl-ent">"TransactTime"</span>: <span class="pl-s"><span class="pl-pds">"</span>2018-09-23T16:07:04.776Z<span class="pl-pds">"</span></span>, <span class="pl-ent">"StandardTrailer"</span>: { <span class="pl-ent">"CheckSum"</span>: <span class="pl-s"><span class="pl-pds">"</span>54<span class="pl-pds">"</span></span> } }</pre></div> <div class="markdown-heading"><h2 class="heading-element">show all structures within a message</h2><a id="user-content-show-all-structures-within-a-message" class="anchor" aria-label="Permalink: show all structures within a message" href="#show-all-structures-within-a-message"><span aria-hidden="true" class="octicon octicon-link"></span></a></div> <div class="highlight highlight-source-shell"><pre>npm run cmd -- --dict=repo44 --fix=data/examples/FIX.4.4/jsfix.test_client.txt --delimiter=<span class="pl-s"><span class="pl-pds">"</span>|<span class="pl-pds">"</span></span> --type=AD --structures</pre></div> <div class="highlight highlight-source-json"><pre>[ { <span class="pl-ent">"name"</span>: <span class="pl-s"><span class="pl-pds">"</span>StandardHeader<span class="pl-pds">"</span></span>, <span class="pl-ent">"depth"</span>: <span class="pl-c1">2</span>, <span class="pl-ent">"startTag"</span>: <span class="pl-c1">8</span>, <span class="pl-ent">"startPosition"</span>: <span class="pl-c1">0</span>, <span class="pl-ent">"endTag"</span>: <span class="pl-c1">52</span>, <span class="pl-ent">"endPosition"</span>: <span class="pl-c1">7</span>, <span class="pl-ent">"delimiterTag"</span>: <span class="pl-c1">0</span>, <span class="pl-ent">"delimiterPositions"</span>: [] }, { <span class="pl-ent">"name"</span>: <span class="pl-s"><span class="pl-pds">"</span>TrdCapDtGrp<span class="pl-pds">"</span></span>, <span class="pl-ent">"depth"</span>: <span class="pl-c1">1</span>, <span class="pl-ent">"startTag"</span>: <span class="pl-c1">580</span>, <span class="pl-ent">"startPosition"</span>: <span class="pl-c1">11</span>, <span class="pl-ent">"endTag"</span>: <span class="pl-c1">75</span>, <span class="pl-ent">"endPosition"</span>: <span class="pl-c1">12</span>, <span class="pl-ent">"delimiterTag"</span>: <span class="pl-c1">75</span>, <span class="pl-ent">"delimiterPositions"</span>: [ <span class="pl-c1">12</span> ] }, { <span class="pl-ent">"name"</span>: <span class="pl-s"><span class="pl-pds">"</span>StandardTrailer<span class="pl-pds">"</span></span>, <span class="pl-ent">"depth"</span>: <span class="pl-c1">1</span>, <span class="pl-ent">"startTag"</span>: <span class="pl-c1">10</span>, <span class="pl-ent">"startPosition"</span>: <span class="pl-c1">13</span>, <span class="pl-ent">"endTag"</span>: <span class="pl-c1">10</span>, <span class="pl-ent">"endPosition"</span>: <span class="pl-c1">13</span>, <span class="pl-ent">"delimiterTag"</span>: <span class="pl-c1">0</span>, <span class="pl-ent">"delimiterPositions"</span>: [] }, { <span class="pl-ent">"name"</span>: <span class="pl-s"><span class="pl-pds">"</span>TradeCaptureReportRequest<span class="pl-pds">"</span></span>, <span class="pl-ent">"depth"</span>: <span class="pl-c1">1</span>, <span class="pl-ent">"startTag"</span>: <span class="pl-c1">8</span>, <span class="pl-ent">"startPosition"</span>: <span class="pl-c1">0</span>, <span class="pl-ent">"endTag"</span>: <span class="pl-c1">10</span>, <span class="pl-ent">"endPosition"</span>: <span class="pl-c1">13</span>, <span class="pl-ent">"delimiterTag"</span>: <span class="pl-c1">0</span>, <span class="pl-ent">"delimiterPositions"</span>: [] }, { <span class="pl-ent">"name"</span>: <span class="pl-s"><span class="pl-pds">"</span>StandardTrailer<span class="pl-pds">"</span></span>, <span class="pl-ent">"depth"</span>: <span class="pl-c1">0</span>, <span class="pl-ent">"startTag"</span>: <span class="pl-c1">10</span>, <span class="pl-ent">"startPosition"</span>: <span class="pl-c1">14</span>, <span class="pl-ent">"endTag"</span>: <span class="pl-c1">10</span>, <span class="pl-ent">"endPosition"</span>: <span class="pl-c1">13</span>, <span class="pl-ent">"delimiterTag"</span>: <span class="pl-c1">0</span>, <span class="pl-ent">"delimiterPositions"</span>: [] } ]</pre></div> </div></article></div><div class="pv4"><h2 class="c7520c26">Readme</h2><h3 id="user-content-keywords" class="a0dff0b1 mt2 pt2 mb3 pb3 f4 fw6 b--black-10">Keywords</h3><ul class="list pl0"><li class="dib mr2"><a class="_75a5f581 f4 fw6 fl db pv1 ma1 black-70 link hover-black animate" href="/search?q=keywords:typescript">typescript</a></li><li class="dib mr2"><a class="_75a5f581 f4 fw6 fl db pv1 ma1 black-70 link hover-black animate" href="/search?q=keywords:fix">fix</a></li><li class="dib mr2"><a class="_75a5f581 f4 fw6 fl db pv1 ma1 black-70 link hover-black animate" href="/search?q=keywords:engine">engine</a></li><li class="dib mr2"><a class="_75a5f581 f4 fw6 fl db pv1 ma1 black-70 link hover-black animate" href="/search?q=keywords:fixml">fixml</a></li><li class="dib mr2"><a class="_75a5f581 f4 fw6 fl db pv1 ma1 black-70 link hover-black animate" href="/search?q=keywords:ascii">ascii</a></li><li class="dib mr2"><a class="_75a5f581 f4 fw6 fl db pv1 ma1 black-70 link hover-black animate" href="/search?q=keywords:financial">financial</a></li><li class="dib mr2"><a class="_75a5f581 f4 fw6 fl db pv1 ma1 black-70 link hover-black animate" href="/search?q=keywords:protocol">protocol</a></li><li class="dib mr2"><a class="_75a5f581 f4 fw6 fl db pv1 ma1 black-70 link hover-black animate" href="/search?q=keywords:trading">trading</a></li></ul></div></section><section class="e22ba268 ph2 ph0-ns ml0-ns mr3-ns black-80" id="tabpanel-explore" aria-labelledby="package-tab-explore" role="tabpanel" data-attribute="hidden"></section><section class="e22ba268 ph2 ph0-ns ml0-ns mr3-ns black-80" id="tabpanel-admin" aria-labelledby="package-tab-admin" role="tabpanel" data-attribute="hidden"></section><section class="e22ba268 ph2 ph0-ns ml0-ns mr3-ns black-80" id="tabpanel-dependencies" aria-labelledby="package-tab-dependencies" role="tabpanel" data-attribute="hidden"></section><section class="e22ba268 ph2 ph0-ns ml0-ns mr3-ns black-80" id="tabpanel-dependents" aria-labelledby="package-tab-dependents" role="tabpanel" data-attribute="hidden"></section><div class="e22ba268 ph2 ph0-ns ml0-ns mr3-ns black-80" id="tabpanel-versions" aria-labelledby="package-tab-versions" role="tabpanel" data-attribute="hidden"></div></span><span aria-live="polite"></span></div><div class="fdbf4038 w-third-l mt3 w-100 ph3 ph4-m pv3 pv0-l"><h2 class="c7520c26">Package Sidebar</h2><h3 class="c84e15be f5 mt2 pt2 mb0">Install</h3><div class="d767adf4 lh-copy truncate ph0 mb3 black-80 b5be2af6 f6 flex flex-row"><svg viewBox="0 0 12.32 9.33" aria-hidden="true"><g><line class="st1" x1="7.6" y1="8.9" x2="7.6" y2="6.9"></line><rect width="1.9" height="1.9"></rect><rect x="1.9" y="1.9" width="1.9" height="1.9"></rect><rect x="3.7" y="3.7" width="1.9" height="1.9"></rect><rect x="1.9" y="5.6" width="1.9" height="1.9"></rect><rect y="7.5" width="1.9" height="1.9"></rect></g></svg><p class="flex-auto truncate db ma0"><code>npm i <!-- -->jspurefix</code><button class="fbd04dd1" type="button" aria-label="Copy install command line"><svg aria-hidden="true" focusable="false" data-prefix="far" data-icon="copy" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z" fill="#808080"></path></svg></button></p></div><div class="_702d723c dib w-50 fl bb b--black-10 pr2 w-100"><h3 id="repository" class="c84e15be f5 mt2 pt2 mb0">Repository</h3><p class="_40aff104 fw6 mb3 mt2 truncate black-80 f5"><a aria-labelledby="repository repository-link" class="b2812e30 f2874b88 fw6 mb3 mt2 truncate black-80 f4 no-underline pr1" href="https://github.com/TimelordUK/jspurefix" target="_blank" rel="noopener noreferrer nofollow"><span class="_513426a8 dib v-mid"><svg width="16" height="16" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><title>Git</title><g fill="#0A0B09" fill-rule="nonzero"><path d="M15.6981994,7.28744895 L8.71251571,0.3018063 C8.3102891,-0.1006021 7.65784619,-0.1006021 7.25527133,0.3018063 L5.80464367,1.75263572 L7.64478689,3.59281398 C8.07243561,3.44828825 8.56276901,3.5452772 8.90352982,3.88604451 C9.24638012,4.22907547 9.34249661,4.72359725 9.19431703,5.15282127 L10.9679448,6.92630874 C11.3971607,6.77830046 11.8918472,6.8738964 12.2346975,7.21727561 C12.7135387,7.69595181 12.7135387,8.47203759 12.2346975,8.95106204 C11.755508,9.43026062 10.9796112,9.43026062 10.5002476,8.95106204 C10.140159,8.59061834 10.0510075,8.06127108 10.2336636,7.61759448 L8.57948492,5.9635584 L8.57948492,10.3160467 C8.69614805,10.3738569 8.80636859,10.4509954 8.90352982,10.5479843 C9.38237103,11.0268347 9.38237103,11.8027463 8.90352982,12.2822931 C8.42468862,12.7609693 7.64826937,12.7609693 7.16977641,12.2822931 C6.69093521,11.8027463 6.69093521,11.0268347 7.16977641,10.5479843 C7.28818078,10.4297518 7.42521643,10.3402504 7.57148065,10.2803505 L7.57148065,5.88746473 C7.42521643,5.82773904 7.28852903,5.73893407 7.16977641,5.62000506 C6.80707597,5.25747183 6.71983981,4.72499027 6.90597844,4.27957241 L5.09195384,2.465165 L0.301800552,7.25506126 C-0.100600184,7.65781791 -0.100600184,8.31027324 0.301800552,8.71268164 L7.28783254,15.6983243 C7.69005915,16.1005586 8.34232793,16.1005586 8.74507691,15.6983243 L15.6981994,8.74506934 C16.1006002,8.34266094 16.1006002,7.68968322 15.6981994,7.28744895" id="Path"></path></g></svg></span><span id="repository-link">github.com/TimelordUK/jspurefix</span></a></p></div><div class="_702d723c dib w-50 fl bb b--black-10 pr2 w-100"><h3 id="homePage" class="c84e15be f5 mt2 pt2 mb0">Homepage</h3><p class="_40aff104 fw6 mb3 mt2 truncate black-80 f5"><a aria-labelledby="homePage homePage-link" class="b2812e30 f2874b88 fw6 mb3 mt2 truncate black-80 f4 no-underline pr1" rel="noopener noreferrer nofollow" href="https://github.com/TimelordUK/jspurefix"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="link" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"></path></svg><span id="homePage-link">github.com/TimelordUK/jspurefix</span></a></p></div><div><div class="_702d723c dib w-50 fl bb b--black-10 pr2 w-100" role="button" tabindex="0" aria-label="Showing weekly downloads"><h3 class="c84e15be f5 mt2 pt2 mb0 _5cfc0900"><svg viewBox="0 0 7.22 11.76" aria-hidden="true"><title>Downloads</title><g><polygon points="4.59 4.94 4.59 0 2.62 0 2.62 4.94 0 4.94 3.28 9.53 7.22 4.94 4.59 4.94" aria-label="Downloads icon"></polygon><rect x="0.11" y="10.76" width="7" height="1"></rect></g></svg>Weekly Downloads</h3><div class="_000ae427 flex flex-row-reverse items-end"><svg class="_418c4939 flex-none" width="200" height="40" stroke-width="3" stroke="#8956FF" fill="rgba(137, 86, 255, .2)" aria-hidden="true"></svg><p class="_9ba9a726 f4 tl flex-auto fw6 black-80 ma0 pr2 pb1">1,038</p></div></div></div><div class="_702d723c dib w-50 fl bb b--black-10 pr2"><h3 class="c84e15be f5 mt2 pt2 mb0">Version</h3><div class="abe380b3 flex flex-row items-center"><p class="f2874b88 fw6 mb3 mt2 truncate black-80 f4">4.0.0</p></div></div><div class="_702d723c dib w-50 fl bb b--black-10 pr2"><h3 class="c84e15be f5 mt2 pt2 mb0">License</h3><p class="f2874b88 fw6 mb3 mt2 truncate black-80 f4">MIT</p></div><div class="_702d723c dib w-50 fl bb b--black-10 pr2"><h3 class="c84e15be f5 mt2 pt2 mb0">Unpacked Size</h3><p class="f2874b88 fw6 mb3 mt2 truncate black-80 f4">39.1 MB</p></div><div class="_702d723c dib w-50 fl bb b--black-10 pr2"><h3 class="c84e15be f5 mt2 pt2 mb0">Total Files</h3><p class="f2874b88 fw6 mb3 mt2 truncate black-80 f4">16713</p></div><div class="_702d723c dib w-50 fl bb b--black-10 pr2 w-100"><h3 class="c84e15be f5 mt2 pt2 mb0">Last publish</h3><p class="f2874b88 fw6 mb3 mt2 truncate black-80 f4"><time dateTime="2024-08-26T10:16:19.750Z" title="8/26/2024, 10:16:19 AM">3 months ago</time></p></div><div class="_702d723c dib w-50 fl bb b--black-10 pr2 bb-0 w-100"><h3 id="collaborators" class="c84e15be f5 mt2 pt2 mb0">Collaborators</h3><ul aria-labelledby="collaborators" class="list pl0 cf"><li class="_426b8533 fl dib mr2 mb2"><div><a href="/~timelorduk"><img src="/npm-avatar/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdmF0YXJVUkwiOiJodHRwczovL3MuZ3JhdmF0YXIuY29tL2F2YXRhci8wYjNlMmMwNjRlMjdlNjc3YWExODhjNGRhNTM2OWVhZD9zaXplPTEwMCZkZWZhdWx0PXJldHJvIn0._q3I0DxGXT1T8GKS24lvDvyPQyHAqPe5XR_IZMm1vL8" style="width:42px;height:42px;min-width:42px;border-radius:4%" alt="timelorduk" title="timelorduk"/></a></div></li></ul></div><div class="w-100"><a class="c37751f6 _24a1e9c7 dab9924c br2 pv2 ph3 fw5 f5 tc button button-reset pointer ma2 truncate ml0 no-underline mt2 dib w-100" rel="noopener noreferrer nofollow" href="https://runkit.com/npm/jspurefix"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="terminal" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path fill="currentColor" d="M257.981 272.971L63.638 467.314c-9.373 9.373-24.569 9.373-33.941 0L7.029 444.647c-9.357-9.357-9.375-24.522-.04-33.901L161.011 256 6.99 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L257.981 239.03c9.373 9.372 9.373 24.568 0 33.941zM640 456v-32c0-13.255-10.745-24-24-24H312c-13.255 0-24 10.745-24 24v32c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24z"></path></svg><strong>Try</strong> on RunKit</a></div><div class="_33c89934 w-100"><a class="_4a3f8f21 _24a1e9c7 dab9924c br2 pv2 ph3 fw5 f5 tc button button-reset pointer ma2 truncate ml0 no-underline mt2 dib w-100" href="/support?inquire=security&security-inquire=malware&package=jspurefix&version=4.0.0"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="flag" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M349.565 98.783C295.978 98.783 251.721 64 184.348 64c-24.955 0-47.309 4.384-68.045 12.013a55.947 55.947 0 0 0 3.586-23.562C118.117 24.015 94.806 1.206 66.338.048 34.345-1.254 8 24.296 8 56c0 19.026 9.497 35.825 24 45.945V488c0 13.255 10.745 24 24 24h16c13.255 0 24-10.745 24-24v-94.4c28.311-12.064 63.582-22.122 114.435-22.122 53.588 0 97.844 34.783 165.217 34.783 48.169 0 86.667-16.294 122.505-40.858C506.84 359.452 512 349.571 512 339.045v-243.1c0-23.393-24.269-38.87-45.485-29.016-34.338 15.948-76.454 31.854-116.95 31.854z"></path></svg><strong>Report</strong> malware</a></div></div></div> </main><footer class="cd2827bb bt b--black-10 mt4"><h2 class="e13b5dae">Footer</h2><div id="footer" class="center mw9 pa3 flex flex-column flex-wrap-m flex-row-ns"><div class="flex-auto pa4-ns pa3 w-100 w-10-l"><div class="_802b5507 pt3"><a target="_blank" rel="noopener noreferrer nofollow" href="https://github.com/npm" aria-label="Visit npm GitHub page"><svg viewBox="0 0 27.23 27.23" aria-hidden="true"><rect fill="#333333" width="27.23" height="27.23" rx="2"></rect><polygon fill="#fff" points="5.8 21.75 13.66 21.75 13.67 9.98 17.59 9.98 17.58 21.76 21.51 21.76 21.52 6.06 5.82 6.04 5.8 21.75"></polygon></svg></a></div><div class="_802b5507 pt3"><a target="_blank" rel="noopener noreferrer nofollow" href="https://github.com" aria-label="GitHub"><svg aria-hidden="true" focusable="false" class="" viewBox="0 0 24 24" width="50" height="50" fill="black" style="display:inline-block;user-select:none;vertical-align:top;overflow:visible"><path d="M12.5.75C6.146.75 1 5.896 1 12.25c0 5.089 3.292 9.387 7.863 10.91.575.101.79-.244.79-.546 0-.273-.014-1.178-.014-2.142-2.889.532-3.636-.704-3.866-1.35-.13-.331-.69-1.352-1.18-1.625-.402-.216-.977-.748-.014-.762.906-.014 1.553.834 1.769 1.179 1.035 1.74 2.688 1.25 3.349.948.1-.747.402-1.25.733-1.538-2.559-.287-5.232-1.279-5.232-5.678 0-1.25.445-2.285 1.178-3.09-.115-.288-.517-1.467.115-3.048 0 0 .963-.302 3.163 1.179.92-.259 1.897-.388 2.875-.388.977 0 1.955.13 2.875.388 2.2-1.495 3.162-1.179 3.162-1.179.633 1.581.23 2.76.115 3.048.733.805 1.179 1.825 1.179 3.09 0 4.413-2.688 5.39-5.247 5.678.417.36.776 1.05.776 2.128 0 1.538-.014 2.774-.014 3.162 0 .302.216.662.79.547C20.709 21.637 24 17.324 24 12.25 24 5.896 18.854.75 12.5.75Z"></path></svg></a></div></div><div class="flex-auto pa4-ns pa3 w-30-ns w-50-m"><h3 id="support" class="_1b8c0a9f">Support</h3><ul class="list pl0" aria-labelledby="support"><li class="pv1"><a class="df995acb no-underline pr1" href="https://docs.npmjs.com">Help</a></li><li class="pv1"><a class="df995acb no-underline pr1" href="https://github.com/advisories">Advisories</a></li><li class="pv1"><a class="df995acb no-underline pr1" href="http://status.npmjs.org/">Status</a></li><li class="pv1"><a class="df995acb no-underline pr1" href="/support">Contact npm</a></li></ul></div><div class="flex-auto pa4-ns pa3 w-30-ns w-50-m"><h3 id="company" class="_1b8c0a9f">Company</h3><ul class="list pl0" aria-labelledby="company"><li class="pv1"><a class="df995acb no-underline pr1" href="/about">About</a></li><li class="pv1"><a class="df995acb no-underline pr1" href="https://github.blog/tag/npm/">Blog</a></li><li class="pv1"><a class="df995acb no-underline pr1" href="/press">Press</a></li></ul></div><div class="flex-auto pa4-ns pa3 w-30-ns w-50-m"><h3 id="terms" class="_1b8c0a9f">Terms & Policies</h3><ul class="list pl0" aria-labelledby="terms"><li class="pv1"><a class="df995acb no-underline pr1" href="/policies/">Policies</a></li><li class="pv1"><a class="df995acb no-underline pr1" href="/policies/terms">Terms of Use</a></li><li class="pv1"><a class="df995acb no-underline pr1" href="/policies/conduct">Code of Conduct</a></li><li class="pv1"><a class="df995acb no-underline pr1" href="/policies/privacy">Privacy</a></li></ul></div></div></footer></div><div class="_8a62ca63 fixed top-0 left-0 z-999" style="opacity:0;transform:scaleX(1);-webkit-transform:scaleX(1);-moz-transform:scaleX(1)"></div></div></div><script integrity="sha512-JNVaoSLuQb3GTO7Yltzekjtb3plMwbywVhdyyG3PHOA5vV5QKiO5Cm9NX095VL9WTdaHo8zdVgXDGrkABITjdQ==">window.__context__ = {"context":{"notifications":[],"csrftoken":"ZD_YOs7UNyUaEaFhgIAoZSQKTZ_vidV4BhePt86ZPjR","userEmailVerified":null,"isV3SearchEnabled":false,"auditLogEnabled":false,"user":null,"documentContext":{"readme.data":"readme"},"undefined":true,"readme":{"ref":"readme","data":null},"versionsDownloads":{"4.0.0":117,"2.2.1":56,"2.2.0":3,"3.1.0":563,"3.4.0":2,"3.0.0":100,"2.0.5":36,"3.5.0":138,"1.4.1":34,"3.2.0":1,"1.2.1":1,"2.1.0":1,"2.0.4":1},"starAction":"/package/jspurefix/star","provenance":{"enabled":false,"feedbackUrl":" https://github.com/npm/feedback"},"isSecurityPlaceholder":false,"private":false,"packument":{"description":"pure node js fix engine","homepage":"https://github.com/TimelordUK/jspurefix","repository":"https://github.com/TimelordUK/jspurefix","distTags":{"latest":"4.0.0"},"keywords":["typescript","fix","engine","fixml","ascii","financial","protocol","trading"],"maintainers":[{"name":"timelorduk","avatars":{"small":"/npm-avatar/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdmF0YXJVUkwiOiJodHRwczovL3MuZ3JhdmF0YXIuY29tL2F2YXRhci8wYjNlMmMwNjRlMjdlNjc3YWExODhjNGRhNTM2OWVhZD9zaXplPTUwJmRlZmF1bHQ9cmV0cm8ifQ.4cGDuUJXC-VnYRa_fMqOIgFZKxKzN87RG3zBdEpMhOg","medium":"/npm-avatar/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdmF0YXJVUkwiOiJodHRwczovL3MuZ3JhdmF0YXIuY29tL2F2YXRhci8wYjNlMmMwNjRlMjdlNjc3YWExODhjNGRhNTM2OWVhZD9zaXplPTEwMCZkZWZhdWx0PXJldHJvIn0._q3I0DxGXT1T8GKS24lvDvyPQyHAqPe5XR_IZMm1vL8","large":"/npm-avatar/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdmF0YXJVUkwiOiJodHRwczovL3MuZ3JhdmF0YXIuY29tL2F2YXRhci8wYjNlMmMwNjRlMjdlNjc3YWExODhjNGRhNTM2OWVhZD9zaXplPTQ5NiZkZWZhdWx0PXJldHJvIn0.ay41Mb0p5TM795qFbnoFOjAQS_GfhtjCxfqivlRPEKI"}}],"name":"jspurefix","license":"MIT","version":"4.0.0","versions":[{"version":"4.0.0","date":{"ts":1724667379750,"rel":"3 months ago"},"dist":{"integrity":"sha512-TMM/LZNAJpro9ELrT7cD2FYPsf4Qd/uizZD7bS77IEouETOzvC9e+wfJepUbAxnfzjGoMXGji2dPjDCu5vxFgQ==","shasum":"52a9a7f1b5d3bc517f473f0d3fb0978f2f672f5f","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-4.0.0.tgz","fileCount":16713,"unpackedSize":39084213,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCX9E3BqZ0iWMauj1aeF/KCPC+8XucODBV9uneibLymnQIgXIiV9puOMo1NLWp8Fo3twgz/rB4AE45jbU2Ti6yYqRk="}]}},{"version":"3.5.0","date":{"ts":1705755570255,"rel":"10 months ago"},"dist":{"shasum":"bc49b05798c087bfdf889359cfc9f0a8f6b28d55","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-3.5.0.tgz","fileCount":16723,"integrity":"sha512-SDVYtN/zHo/CEeENRgEn5AL3HXgPKh/j10zVYpjFO9HrN0/Dq2D8IT1Q1rD4AeaC0heFO4NUVgxJ/vCNKzhm6w==","signatures":[{"sig":"MEUCIQC4WeWLuI8HMwQoAaod9xL1fu6Y5nV2VYch944aOH2CpwIgRLjR2wqM8VtYNJV+z42aaqo+gxg1I9wWzY6sSVvIMRA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":39088243}},{"version":"3.4.0","date":{"ts":1701635758019,"rel":"a year ago"},"dist":{"shasum":"4a0f6a79dafd88c73ff704f931454eb3be2c2b0a","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-3.4.0.tgz","fileCount":16723,"integrity":"sha512-xS2IX5kRLsDWF2hGmdGrG7T2kIP7Llf/JW9X7LAmVi397Yx0aKjR9qbA4GtjKbhnNfiNN0eYdXeaNoJ3+N57Hg==","signatures":[{"sig":"MEYCIQDWJorJdxKKnBs0Wp5X7DEx3z0NUVH3XeTsT5KbMUBBDgIhAObAZpBgIHpLCwSFnet4O/ojIus0cr037kupFdxx6/CL","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":39069653}},{"version":"3.2.0","date":{"ts":1699712118322,"rel":"a year ago"},"dist":{"shasum":"328adeb4d5ec65bad9a071053c0aeb76f7a11ac2","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-3.2.0.tgz","fileCount":15247,"integrity":"sha512-E7LNtcUaZ3/xa/atlzt7dNURXcQ4OWoOfmMyPgu0EPIOEwBtdiuy29S5HvmxdOLMkyovlrhtj+kgWaEWCERN+Q==","signatures":[{"sig":"MEQCIEa9bXsKFmnseHIQbBJZyiCOtpzofxP0iDOertHe+PqJAiBGrurxiQKUfOnks5Lj53pFREw9w19pSY2rPz+Nj2QKtg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":37576314}},{"version":"3.1.0","date":{"ts":1694291399618,"rel":"a year ago"},"dist":{"shasum":"fb6279ed958e3aeb95eb2eef5cc0dfdf6f045ed7","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-3.1.0.tgz","fileCount":9387,"integrity":"sha512-H/jK4aDqY9Nuh94n8qSxnWUx2bVLS1OW8bfQc+wfezfmW+rznIE390h5maRD7kbmR5wnOIrcdaY3CiADWf0zRw==","signatures":[{"sig":"MEUCIC+Zmx9r8PlOxApRtMXPU0ncJqlX7/7gtEpz/ZwGeABNAiEA1lynP3IfQ6JOFNzgPIjByjLBYNjtTxuBVjFLylGHJqg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":28407659}},{"version":"3.0.0","date":{"ts":1672843677424,"rel":"2 years ago"},"dist":{"shasum":"d1ec6a513bc2391546e8b878631231d0268e04b1","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-3.0.0.tgz","fileCount":9384,"integrity":"sha512-mCecvA+ANjBSZ+iyZoV1VzrBHFUbrpvNov90uF1039TebZKvbQ2SRJ5XYEpCc+vB960tRkLvAiIl/L92Aez9hg==","signatures":[{"sig":"MEYCIQDHKzqGJyW8H1lisnihnnUKHfUxEds4czzc5TUzC99U9gIhAPv5cM6MDhvxP+Rracw/3LWKk2CF7wSHxUyJo4Xe+lLo","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":28641773,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjtZGdACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr4cg//depyS6LhHZDB0o2QEQnydugq6jrRhXLiEU2D+aPNSXPphCqX\r\n72DPLM/4pWpf3NxMkT7GVgErFqakZe57eyYyWzS5SsGFq3GXc/2BrhSE+otU\r\n7kPprKaHLCkXhEiI1dfdfaaQg5QOLoFpiN9bMwynsF8BQkuZyeo20dqCKvkr\r\n5LEZyJD6LMa0zW5rEYTLfgg2fUUu8axCAKzpBy+Hl7mEpcbmHjHdO2dSyEEO\r\nhXcPR1A+SoCJi03itnveNHCiacQ5LTH4bA51QXiiEyYzBDDkyv7cwZ1SbvqH\r\noxroWvYRxLi+Wa+khtqDqTPDnNQ6Zcmys1tdI4FknnFXnWhLyBUN2C7DNVna\r\nD8HMD8KQFn4SK1Vn6yn+UphRzvXvL7N3l0Z1ol+WEqNV2ArmfP2zAiZcdWNt\r\nvwcW4f45+TIz1dfWWCkpyBGS9ZLlWnEvhwJr76avaSUgWNSOLERCjj3N2xbh\r\nJ3uFm/Z7LCqhq2UGlQ4jXkmgD287jeJa/8BJnYB72vyRAqT0WVvoYCFj5FO3\r\nFZ8M8VTaiQVg/crEpjJkeP91yVHLGW6pqfmPExZo3hmyWaDgdlPJg1MAiWN5\r\nHK4bYJCfWav92cvMnTbtMPwm6r+9NKhyiZYK2AxiqXWOF8g1bq8FPspG9MT7\r\n3qfYWR3zSIrSoGLtvcy9bg/iclav5ObgN0w=\r\n=k5rf\r\n-----END PGP SIGNATURE-----\r\n"}},{"version":"2.2.1","date":{"ts":1666527577798,"rel":"2 years ago"},"dist":{"shasum":"8ee6df92f993894c704186e06a641b20d95ac201","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-2.2.1.tgz","fileCount":9529,"integrity":"sha512-zX6YGg8/r4Lq1WSOq9A7z3E8IaFThIazPSuKAFv/tj5Y0awu+m3mHbaK42y6hoEn+TZkKdpVwYvSDP3ZZIeC7w==","signatures":[{"sig":"MEUCIQCYfrwN8iz6GhsVr4Yz3Lo7y9Qtz++5Bgs5NnJJFZZWYAIgdz8VrD1MA1uy4oJNr7mp7dyGgt3Xw1QCyd9BNKGehbM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":29163705,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjVTFZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp06BAAmPqi+PTzqlcZfDlrOq44DL7TjckbsmrRcJotLDIBNSZeCVGa\r\noqpREnN1el0lPS/C2q6KPfnjpQED614DkZxN8f2eBovdwtYhv4qV2myLyJIR\r\nRA5gTRIdXayBDJJUWWUPtPxSzqmVtPRw8xK4xSgqoplgSDEkQnvcsaCvN254\r\ndChJxnUhvU6xW2M3pRYPJFpQ+mRtWsg4ppM1IC49fWyNMG+mI34RPGvRjH6w\r\npF1B1v9AM/4LqIUqqzb8dQeaSnCu5MZVULZvcq53xB+h2vF+paek2n68GTOS\r\nG0N5C4nEUnfNJj2Ns81tPtzKatS2vNjK6RUXyr2vdSw2kuOSwSZajxLJpW8Z\r\nzYfDPUw5548XirVT0MkvU6nz9pUKx5TAsVP6+EHxIsvJ1w0UXYoFXOBVAqNI\r\nuK4OE8I9r9nekTC4QzaPKU+7N0XvlUGa3u23nOIDu4XezUhUYpTTeWqzfEjO\r\n/vakuotwAtgs1J4tK0XFCgMJVaGrt1XkSiTxKYB5evYqoZc1evwIYVxY6CLA\r\ndliHdATxcK8eZRxYqJMulsvfQzW3tW7fIgwX5wSXDwVAbLO2gYXdyKNRLGe0\r\nLBlrY/HM4TUp1x9hgdsf2pptU78V0d14TNLFxsUemn5fb4dSOzbAtx9iewrW\r\nQNVjJUOvT2FpsL7MGkPg/FfCYweHmUQD0/w=\r\n=jPbl\r\n-----END PGP SIGNATURE-----\r\n"}},{"version":"2.2.0","date":{"ts":1660469807062,"rel":"2 years ago"},"dist":{"shasum":"dd35636fe5f650847195fc01052d610abb690692","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-2.2.0.tgz","fileCount":8388,"integrity":"sha512-7VeyHraY3PHdvKHBpD8Q3s/DnL75Tr1RvpSrq9cN0ZJbDUyrYBE2pejK0TvCo6oO+BiLTJ63dG4z1dSVO4+nBg==","signatures":[{"sig":"MEQCICubvPRcRyk7352Ern0UzTdAQ52xDcv7VHvpfF3TxGOoAiAkXVEyRCIhUKTVAnXR9/ql7qz57C0I93YXKnbW7Cva2w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":26455223,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi+MIvACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrIHg//R3zLpMPcFZ4XgA3+Bv8UEnKXDBcgWiQ9zGm08Ji7sPdYg/M2\r\nvO24mwnoqTTY0xGTFzq3NuK6PVGsVY4LI1ZIHgiG8SmSt4hbolG8hp+6s4dv\r\njuMYnea5EYQdIq6jBHED5RDo2i6QYRa3gju64+dbjy1bYnPPXggz23/Ttmfd\r\njLTn7nmHtCPjfZuXhWDHRBMszxLSdRDnra1IY7ZT+fp/Wj5WS/ZLTxH/F/54\r\nft0ga5QEgVMV/Hjqx+0TfY6qF/lmIllWTPTES9yR6QeF0yU1cMMp518+1n7A\r\n0eCHfGsZzdVHs0qw+B56kjCcxTs2BpZ2+DX/2npLqD7nMJfLQ4UTGBe9P9UL\r\nHDtYGIUoEGS20voMBI3d5yI4i6udExzF5i5/WVsf9OQswSooM2mkew0Q/6dQ\r\nlxr4wpxHtcB37qHlELZy19pcVXC0GsEucV5/06tu3Acusq+UZaNesZGzN+Rj\r\n+fzmu2l12v1tDkguq+82/KOhOnwfoWdvUlSKFZbdngra1RSPPQDXd3oQ6+oU\r\nRFr/OkJlaCEaCC/UroiLjklQP4i+pgTZBjAJEU1wihLAlPO5ElhZcOz3Etdw\r\ntuNFEE3A/HLDgzvcnoDIk64m746wlHqqdvQL/LOO/RlNYDcFA+ng8nENULFt\r\n/NnpFnQegisPm/Xf0+L7sd/aWWjUWVJ5WsM=\r\n=Ltbg\r\n-----END PGP SIGNATURE-----\r\n"}},{"version":"2.1.0","date":{"ts":1659780407199,"rel":"2 years ago"},"dist":{"shasum":"14ba0427aa0f120e529db403d8847f427a426ae5","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-2.1.0.tgz","fileCount":8388,"integrity":"sha512-d5xb44+f7U75+Nz+yFhpROcUgSlvGDK+70zXmIPnSe9Y5TEfCtl8+TiyZGU6bfcstarGSgL4Z/aVG3EtSt4V4A==","signatures":[{"sig":"MEUCIQDVmX8GkdGGPA8ajJ3F3WpbuBBMQ2DxXP0LGIIcy43KugIgVgLczK2n2ebxe9d+LVebuZhrTQghX+9EZoVKYELF2WM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":26456959,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi7j03ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoCKw/+NnM3vxKBDTHZAL9vNA7MGIJPKbpljxd2YcZRfMNrduQ1AJm+\r\n396oEUWoPpIphNJR5xSP40Ja6ox/MSPZs9f+3VQ1UOzHlU1GfUYwAbJEfu+V\r\nlxaUuKLfZBOH7qpx9u3+1Jvpe/Bv0gEsR9d47MbC3Ulf6hZnS5lw+U5unadz\r\nP4xq/3OaYPAL1uO33SI/IR+5H+auEZodPavkkCF55+y0bbg52couBcnwJb6O\r\nq1G9ImQTOgZCNycPz+E4yrdn5CEe5DanC9IHBhSbldPhiyUA5Dz+QSkoUA5+\r\nyJjPN4JsOPpKvAEiuyARV9e4Clj4ENHroKI/QrfLYc7+StUgQHrBC8DKn6X+\r\nWZBip/UkCSivBGDAwrP1mWJeujpwIGRhajEhb3/FVtD+kwxC1oRe3hrfA9j0\r\npPX/WMIsmTkkce0BTYXMMbdGWRIYnnNSQd6J0vHjOvOwwV87PSqNXy7cvEj2\r\nnmNZ8+s/CbiYy56aitn3eZHUeU5ucZDC+6l4n4TmGYqB3G4JFh1QQg+rcgaA\r\nuWWSLmB35TuAvP+exyUIscikVH0JcgtVUzy/B04qP6HANtkKxPrcBax0gvtu\r\nB0NYVGE5j6UjpyV0vNoWj4oiY5WcF+3/UdqjmA+lx0T7xUEoNDTrzA6EIxDE\r\nNDVuVRJs+Dh1obEfJEqs8q44Ep9D7TDmkaY=\r\n=BagT\r\n-----END PGP SIGNATURE-----\r\n"}},{"version":"2.0.5","date":{"ts":1649095688146,"rel":"3 years ago"},"dist":{"shasum":"eebe2d03b9c24dec91b4e3241921b0e4403d4f72","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-2.0.5.tgz","fileCount":8387,"integrity":"sha512-qBZQ013nAaBp+SYNgmx9AYM6wn3Fm1fb5vK2T72fDOgtPVANEuRXxNGAwBpA0qsp0M0wd1P+wpySfVdTu/5fhw==","signatures":[{"sig":"MEQCIDuPlEkJNN5M6oW6Hgl1jkaKjrKQzuVc+h/V/u3Dh0v2AiAsLOzk5GH5k8zKTTTmi62aJi3tfGuYvNZxug5UElZojA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":26454095,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiSzQIACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmox8w//dOnfikmP67u9tl5TXuI9X4GkMKdb5ukT8dCcMBkY6ZNr8gHy\r\n2c/NwlOEmS77NLDisSIuFfxMxhOlLVO/bVIy7BLklUqPTqGmAV55dLgbqQHz\r\nVHYLZXcrN1e8G1EXp9L7LAwhzjKlj/cnYz3U1X/8ny/V35xhwPmVfBibGp0L\r\n5V4xeC7iG4xuhK6TeqKyHPEI9gvqcO83qy4zoctZt2/8g6jAuorPsmV2lOcy\r\nn3vDDezHjuN5ZUxLV82E5qbwy3Kc2FIVOOWMSNd+dXrfNkucbK641NLM+uCE\r\nclSVWwCAOxzVUmPtkFfPmFYTxb/tzYFn6nDKmK8wg77BopsE/tx1vGYJVPgl\r\ngpGe/zeONo/+gp0CwvnAd0iz0w/zte2OHwJvzjcUTs5ntg/hkDpPnDtWypYe\r\nqMF9c8TaMLEBN0teTFOiXy6WnMZWptQfMph+sBVgQ4ORAy1tOTj8k4ZRGz/q\r\n7LRIcWzNtqAqxHerpxYEqy4M/ardY1I2hBmX50GNa+FsUnW5kMKRfEnc2hVJ\r\nzaivzCW0ojjhh2niGl1u2Mz5CUoyhWKQfNIynJFtbZw2S6NDrr7yWL4NMSJU\r\nATMt0KTVOTB90KiCZGJxXdm4X8EnecqHBQkwxVYQz6YKNjxJQfxaMwFvCmpC\r\n869H3Z9zrKRLg8jjCBfRonQQjesILTph1+k=\r\n=SBAq\r\n-----END PGP SIGNATURE-----\r\n"}},{"version":"2.0.4","date":{"ts":1646257045165,"rel":"3 years ago"},"dist":{"shasum":"02e9e5151f854fc5dcbb6302a793d88f2f1f8090","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-2.0.4.tgz","fileCount":8388,"integrity":"sha512-kEC/EnOmiHJUr97ZyJu5tAoAROx4cWgEiNcxBHVa6BnBtUSxaEep+7TISZSVYYoIb6AKM6esSjroOXtRtMMpBw==","signatures":[{"sig":"MEUCIEx75Wqaw6ygV7377jCEuX0k9CQPvqlx1/AlPrToGpRnAiEAlK558DoFmoRIjF9OPocpyFHlTuhIYZFhao8MOydgwXI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":26453981,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiH+OVACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoSbxAAmYgp1YpzpjNv6DdYdlEKClxt+NvkQsQ78mQ/x60QF2HUMSn8\r\nxyjJIdQ0BN1tfDUuGJ2FUHgYZFlz0cvYAVImX4HQMTDRliNnqm+yLk+jD2dg\r\nCwjb5Nw6o1ehoPkNPhxpWesKK+1nPcV3rap75hs4coquIRYUxKHGmWUE3Y1h\r\nFAbGVwwKacSYfOJRYLtL5dne6gumkONCcVmJriCBGWcasswHRQcGji1ZZsiN\r\nE+Z464TG3qsrDVhzq2mC5vORCUF6hex2FXy8CrbFCJ9HUi346Vv4sdQHi94A\r\nf3Gm7rCrzNxysuG81iyFN/80rQ5G9DNU2gT/xEHvNrhzH9hoFOjps7a94Wl+\r\nldgvjftoWHHMqlD2R57WGR3zAZbbqK7O9brh5YUl5b1R0odWRXW8WhEHEVLe\r\nJ6z1al0slOqwKJcPmnR2ft0nROt2aQqPxhNrOKq+OBzNSVVm72g7NocNrzL/\r\nQTeytEwiwaUSP2eV/Z5//e4erLzdIP6TS1XHWdDKeDTU4hKciK2pRfljTYDx\r\n7UO0yzHB3IazDePaPbjB34HESoDqLex4Fk11I/7d2mjY36xodMhOdD5k0o+i\r\nuQwoyc0lMgN6OKYZoaDsC8XnrYiEAbwUbetUhpfQDH2leAl9G9s1CnVwflvj\r\nsBluUDzKkzWUjY6/9EkLAV050SPAzTLHezY=\r\n=ADdx\r\n-----END PGP SIGNATURE-----\r\n"}},{"version":"2.0.3","date":{"ts":1641839239256,"rel":"3 years ago"},"dist":{"shasum":"b707a0a6e0929ac660f895cb32f8480b2255ab43","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-2.0.3.tgz","fileCount":8384,"integrity":"sha512-Qx0ojsZnR2RMbFFs11Se5D9yyMYRtJzyK1qRPsTdPrcQ0VxZX5U97j1ypO/8xDoIitSg0bcqtRYG/MxtxAPdhw==","signatures":[{"sig":"MEYCIQDG1IktlIxZXCCcLhh002gcdp7uorRAzoeu6fg8xHs14QIhAJwL/5G+b3TPbsnX8/T4EkWGS6LsBAhxe341XC6ULWa0","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":26438892,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh3HqHCRA9TVsSAnZWagAAmFAP/3xjo7QB6Ijhmplmyfno\n3zUm4Web30uU2AnI//v3vOmCfghq2VIoJBZ3fkmnCczEZJV5Xn5FJ7mF2kml\n5jYLMyNlKpZajdkUXMOjaYkom/q2EzQWZqEdrdAzEIR81uPIXR0FaIaF8vV3\nj+iUvIBkPyR7BNaCbijpI7FMrc0gOF3eRvneDkyKc55hrxSjWSmJyHwqOkxS\ndgQ2aVOMT4baTVNm0Sw8/0BTLkM5/jQzHu9yugmOMJ8K3YfDz1A5RzJNZGcM\nVIJiVUJHFMEqAE+DEti/QaYaxpZOflZrbroOYAcgKJH7T5f+VApyarWV5JlC\nZ3VuFpZrvxIOPE9AxGpP9Bh+sqYwBIs9PSXQeb0YbmTNg10jyLEQNZYH9iUB\nG6nPGfScnbGii+24GNjKBm3ulkY1a6lQ/70fJ7Yh0ROCk1ciZZDh/2hUYkhA\nTKJ1KAwEOtu69RWTBufA706SOPF7xqBQw0qy4DBctMMLdMtrNeK3cPPTTjD+\nPEd5Oypeitz6xkPiQTOtUhJO7Alx0G0BAZzyMOSQKQMWIt9bFdPNEGWuYCi1\n+Spz1rwWtHeEMUGx7Wlc0MiAZ2aR0VjxylUQAuQIW9sTYFXcAPmq+e6t8px9\nAfbCot+m4vGnDqiL/JHIjtSIx5K6hS0n68avS4/w1rFOzQcRwpK3OLQ0/pPC\nwJ3R\r\n=PkhB\r\n-----END PGP SIGNATURE-----\r\n"}},{"version":"2.0.2","date":{"ts":1640626919398,"rel":"3 years ago"},"dist":{"shasum":"2fa8b9134e0059e9fa5a84f9b55264052ba98e85","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-2.0.2.tgz","fileCount":8651,"integrity":"sha512-A9tVgbH49AKeCXYB4xrCyOBCzU0RKHVDtSKfe+DTuS4kLcau0MYlhqOPF6wD5PS6PcytR1HDI+0RrK47r6h5SA==","signatures":[{"sig":"MEYCIQCSfMqOlh5WXCASxmzCkZT2NBeYw7tZare/IjV7UGnGngIhANyMoiao/hSs7Q72i+4kJaKz34PAL7Qmhddqt50L2NU8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":27152061,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhyfrnCRA9TVsSAnZWagAAR3QP/3RjX5oeiXZc7Fw2OjhN\ncF3xf1uen/NrWKULCuCqM3UxirF1atpGxkxrAbebpnmVJdzCg1QferKpHPYl\nu4cO1nEZDL1MgSS9XgYIJtQ2InUs6RLPD/r1z3NBTOScX9FMpRCHxz8/kTpw\nvdZRpS29ooc7MtIUsxun2MxkYR6lqgoSDsBj+mn3GHI/rhQuTsdg9wA5C9Tn\ncKsBcTVRfLVq5gkL0NkLbSyTQwHHRZThX0I7RsR8hb9NWuIsxk0nAQ7z1OVv\n8IV1DYaie0ovP+ILKLu9KRHJc3ZB4WqqcnvS2O5fadcgCBTpABI0y8C/cJUU\ntJr9Vy+rfKc5qNTY5zkKhWVKpPNnzjc+rfAf8egokU4GguzOAyiRP8axajbe\nsLh5o2pUjgnIDDInHBb39UFnwelqxt6VZZZHmjfqvKPDQ6VDl1OgRLw+x9vk\nCEks33j+NNmk7BFh5iuYyHUJqcRwAYfLz+oiJDZ45wCUKyA5n+/jxjhN4fB6\nDQXWYUqYOJFcV3fwIWCmLZLxDgYa4vFh4k5CX6/dxWo/M6KGu5RvROoCCN5v\n+25ZhWLqXbPy3twGhgvww98io2WIiZl1DyiZtOgEZdmxaAmpRgQP9p6hcyY6\ncPND6fggaTzNTvUsvvWHL6pNGjFdRESOJE6k74dOdIBHiGC4pxcWDYWBdGUy\nuuR0\r\n=LcQ/\r\n-----END PGP SIGNATURE-----\r\n"}},{"version":"2.0.1","date":{"ts":1640625714484,"rel":"3 years ago"},"dist":{"shasum":"19c78dc093f310efef29ab4fa410213f31ab9572","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-2.0.1.tgz","fileCount":2219,"integrity":"sha512-9KV06Suck8w34yB8Q4+3GfGFAgKzskQ2I9iGRYkhzi0PlO2lHr79DEgsdkqlxhRc9fDPdxAL/6/kvd36rGZioQ==","signatures":[{"sig":"MEYCIQD5f9nz3nVc2xKeH37nwcg+jS6DFC7WWBtIE34YqbO89AIhAPU7eNgBq93By0Fzr5FzKAHEVMricK+2S6GaHciUUFPV","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25365808,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhyfYyCRA9TVsSAnZWagAA0Q8P/2DKPCo+pdZlUREopgUe\nu8BtAMql0Qlb6beHd79/1xvrBmXhxF7ojIqoQYSIwh3hB9egqheRzOkH+vqt\n8WGll6d7J6p+dvTK45jOfzckwNv44S9PMpQx82CnADY94MuDQcFp7iSbHRFW\nhjfaneB3XSlcp3LHGwuO7cwFpezvUIXIhDF7EvFAsOEy0Eov6B705F+LM/Xn\nXo1JiKZ4YEq/VanYaOTBdfv0DpRHBfMvwzhfI0W/Se3PhhZcpTONV3sNM/tM\nKqfslpuUtU0M9iBuK8/tBsM6y3O6+1tRbhC1ASMKIFmWMnXs70MY86WDgaay\nyDHmQ+h8rBCIfZvS+DiNUp0BqUJaKv+4TblfXQp37gTNNveDvgkRJ5ShHRIb\nqZ83lancW8zgBFezINMnsTWHQpbspFxr3V8xgoX7KlB319EKk+R4g9yF4lD/\nX2+9sV9/drBTDhpvuUJj1dDJXeX2Cxzs8Z9XvigDyEtd7YUdjyAEAZPbBWSn\nr8k7gZaeyzCRlHNrnjA1E7RhWB7j1CEV6THaNXSg+QovMXa++3Lm7TLIVyhO\nzXf/s4SlMruDvhZe751BOWglmNhyVJeK7sVfnndCoyrP60w3zYWp8HimV30+\nsZi1YEauNYlo5sNaVTx3wrksJNJsaCTZ8tGLCiKBBZTOncLOhuuaphpsB/Ah\nDG5O\r\n=pClS\r\n-----END PGP SIGNATURE-----\r\n"}},{"version":"2.0.0","date":{"ts":1640621217151,"rel":"3 years ago"},"dist":{"shasum":"99e7862340df835e7a8913ad52373e08e35531ad","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-2.0.0.tgz","fileCount":8656,"integrity":"sha512-38jVg5jurO2etxNfcCPtsh5RXKSs12q/BcN3DrJpfJdfGE+YOZkFmiZRAhk6Z0eSWOicU0va3MGPvzl6z3WpFw==","signatures":[{"sig":"MEUCICMQNU1mRlH7fMWBexaXUeBKmuB4JmWKCZtKWeV8XqNfAiEAwZPoHgBluRCfWXyraRg3BaQa11n3fyqs27RwY3kStdY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":27167699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhyeShCRA9TVsSAnZWagAAmYYP/iitBrJKr/0MbmH8v1dF\n38i2USZtdR7qSfZPbjqK912V8fidQDJS7eMWxx6+7OhyglJLoCm4I/BEzOTG\nTEGGfZYzolSsCx5jPwfMgVUQPjRZ7TjsyUV/5woz4M6JtuRe2w8L7iKy1dmI\n1pPE0U5YcWf0zPkiAX1Leyko5VbchZthWZU+U1OCXrHYY7Ad2oErnc2J4NGJ\n3lkjxAWrbf4xh9HTrrE6wqk6e1dk3NZNNPz9PVQkehWDJvZuGzEnd7rV0nCq\nrAGoHW2cEleWEBzDMAycLQl4V8jeHiQzS6fUGxASt5xwAsTjJlzwDTRhicn+\ntzfr2yOaiCYJWxYhZc8PDw54LxHS9bzo/eMaljM9gqbGNnV5lOw9rwewNDkd\ngGO22FIDP8G4ZUjJy83I20/ZX5g0GZQySuNt0T0noIMzNR1j/vUL86Bue+47\nOiqvKN3R29imycXMKt93caCZ42oqTMVKp2BjAuX9ekgW8NcaLVPHBOOBVreD\n3a2y8LD1p6h4mOmSUNV/5HicIHx2+czl8YAkc79x8jlEM1HLrge+ZhAXeB6m\nmZIFBphcm2cDx37EX4qJCvN5W0EklwrzyJyyQ6O/q11DVgRZ+0nVrZ3bBxiU\npoHKKwebsGbQ7JpbMAyanGSe4D3ud8QOTqhxWaWU9jkiHTTMxxkze0nTQfge\n+pcL\r\n=NIL1\r\n-----END PGP SIGNATURE-----\r\n"}},{"version":"1.4.1","date":{"ts":1638713904331,"rel":"3 years ago"},"dist":{"shasum":"1f009f18f65919c5ba6a09524c61c8441b6c767f","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-1.4.1.tgz","fileCount":8262,"integrity":"sha512-4LURG/BGXEbbEgzAkjtri+suh5lEvgjEncKrjJZh6Ltma9fWTcYwpzXgso9gNgHFcdsbzpmrEwf33GU35wnHFw==","signatures":[{"sig":"MEUCIHZOjefy+779TnClcBcvQpWf7RgpFP0kQK2VoFRfRKOvAiEAjIuFpcbIFRaoL8AkGomz8IVXBdw0/Yf8uZW816ETg1E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":26407354,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhrMowCRA9TVsSAnZWagAAl0AQAItgoTwFQJb8owoAroyD\nApXSCqMTBZ2RqGw8vF6vVRxLcXA/dMm01PcUrVGzdBNyCmnXur3I/VJdS+MB\nXJneRqdRYJ//iclOKENq8HAjIQR+jimao+mkroQQO3pd2uYTTAC9/0ZZlh5b\n73/cSu2D9iaFwfi7+hsQVu586BP9TR5uUsgtD6oYm/1XLNQyxcliX3g1j1TM\nh075ICzCazEB7rEtXbwWIR2MH6Cq4E4kX262rBqV0uhmtZ0YSvsWzqfoGfI2\nFLg7dFVcpc+us87g3dmlSiCh9wGZsx66lhEtiF931xSAhLKewGpE3ccvfAOE\nfJGCKQG7QBH5IkCCCnorbR5cgTXB3VObMh2YA/zHnYx+vJbKwVaPsIWD1pH4\nSAmNHXdpRgvtVC9h1EA3h563V4ChCHrbKtjs9xPdw4ZyeuEC3N2XnwGYxi+w\nx2NAs6ogcko69g7hZUjjKFA0hMeAVSatxAjIKP6yWvYw5dKslKPY5XdEZkTT\nlVdNA306xIz08ps9hHPME7GpF3+ZBA/Lgxg1XmxV66iYgdGiIOw6kU5Vsdx7\n81+nYtDRu9zarAGg+KudGpyAieHqNxUtk/D21ovJgp+qXapmCsYAs+6G4LyG\nHZY19De0BSS195uS5pv5KFGUxornJdQECc6uYNGNNdDMRqEnJuWWwE/4F3Dg\nTg+I\r\n=yxTT\r\n-----END PGP SIGNATURE-----\r\n"}},{"version":"1.3.0","date":{"ts":1633279146727,"rel":"3 years ago"},"dist":{"shasum":"99e71d7a866bf60c19169361489d4b4e13ff8252","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-1.3.0.tgz","fileCount":8216,"integrity":"sha512-yx1AH5ZAl2d/sg0KaMH4WOfDwAj9SL28Qjls5T3PpcsSpgFQYB4vXzkHPTFacRrELHlVrPXpzZxh0loPAntOng==","signatures":[{"sig":"MEUCIQDxMVsq4FSPPBCrEUndmgOzrOtzmgFVMK+s/EX86JEI2QIgLflK5oZBHw+8+BMRkdFDTAHKaltqG1s9JuAPnUxRXF8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":26245909}},{"version":"1.2.1","date":{"ts":1628345086458,"rel":"3 years ago"},"dist":{"shasum":"3425f2a2ee60d7e0cb80e6fcdf7d7f08850b0293","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-1.2.1.tgz","fileCount":8286,"integrity":"sha512-QJYFCmHtF4haWtCaqij1hUfflvHNLnTLbYbexN8umK7+gIJUFUbswahkzI3cd/LSyDQ1GNqcegRS3GkWqI/0gw==","signatures":[{"sig":"MEQCIFUQJQE5qFqUxPwHzQSdMKgat0KsZ5P5o5ekYBfjuwRNAiBhLgmQvau1KkiiATPlwmx8JT29hzbtZeNnxRmGaYH7gw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":27391030,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhDpL+CRA9TVsSAnZWagAAIo4P/RIjEMqwIEcctfja49Pp\nkK7X+RXPDdVWZU3X0jLrTznBPRuVJ2SNhenxFlzWT7aW0mJfEcndHW2tIkgs\nkeWatG/3Fc0gZX+lacawUrzl0SatnSrttBdQBNVQTA1Em9b60DZOvXkUXKcD\n6peSKQS9qdqb0ObnK0V9AM3YsaaYygzFRlXKjvgwP1fZpcSwt+5fFCKh5Aq8\nCAj8vRVO3IKEnDwUCU/IKaJwmpttj4+6SLDv1VcpfloD6e8yzWV9uEoSUtDr\n7hKSoRkRvUfJ7EgmUCX2575s8ePVaOSj+kwmuaLM8Lk98wET7FaUDd4vOX7g\n5UcJqeuWP78CqFo8dVXOxv668rUk3dmfOgkkvj8Ixrf00cbeWRt7glHQcPFo\nAXImosyPcdiMblwXWk7FJLEXlXMcsHjj/mpfjMTdF5PIe1vGLlY5+xWNlx9Z\nbPd9KBpHE3JiKS151hMFfj3uP4gF5NvsaXK/8K1g3KXLz0dzq5buwDlsheDl\nZVKcBIdGRlYWL2ohSFclllznMxOJ4etC9NNAPlKdSKhIq4/AXD0rIcaGU/Ph\ndkuXrSpxLJ96zQECCnw0f8d2cfpNC8jY7IWKWdrpKn1tvOP8if/zUZG1RYp7\nqn5LzVANEPXDaYXlIDhPTTBmr+Ur07gdMGZrXc9UpqGNvHGOsov26ULu1+HI\nL2In\r\n=rjHy\r\n-----END PGP SIGNATURE-----\r\n"}},{"version":"1.2.0","date":{"ts":1620049543884,"rel":"4 years ago"},"dist":{"shasum":"c1573e7d429e2724256935890aec660beba2db21","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-1.2.0.tgz","fileCount":8280,"integrity":"sha512-kTMcYCWZByMZeJqF8AUCTabW/YhIePwPFcDvxZtmOjZ4XEFk4U1RSg5jzVCmGiXGNPuBYJjjOPVcxy1NR5giKA==","signatures":[{"sig":"MEUCID9rqvl01mbApQBRF4uuogMeW7mseLZli+/FvkNtUFJMAiEA2gEQw6wQ7t12UQEcmmg1/oQA1ivwrMQITA10lEUZEf4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":27310203,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgj/6ICRA9TVsSAnZWagAAjxIP/0jkvMsCnP2pp426t84f\nRuJm4ZidtV7qjYs1ecGO/7qJu/W3B0eW1X4rurwWh7IXe/pH2v/kVLZn8LKj\nvWEGYjWMcRPWqzSbBfx86jkH097rhfMTFLq8Cd/GsUqk2Om2kbhnYRxJxJNV\njYgqRJhV1dk/lfBUHhEtO38x9mWsfKDPqP4eFq623d/kp2CyVtoaagfv6/t/\nKSRShJ0ASYIbaXFEQDf7xKOQsSjXg1rPS/M9iwIJIubgmvpTc9rLAyfIsjp4\nmY88A5zmEdkAwV2DPXtoUCsXSSmzJeoJvJWbggP7HxxMhUG+T3err9vZY4g3\nhfkjxifRAs9P+d4G6zgQUKWtVOqN5vscEQEpQ4LWu1RagfmmRsJ8mihuwYka\n/nDmuv5kz28U26mNfxlMlrnyAotslkgYWhcBHCf49/tWncw2qHIP2pvDVk/2\nJzIACFGBKAlq+Imp8hKL2+R8/I0CsZP1xe5O3ZwReorf86S7gQ6FD0S9nk89\nSj+L+h8aLTotGqh76tB0C/o6SrHEOkutA6W3zi+04DMIBgF2/XXyZcoWeWv/\nFwdEYNuyXJSmR1E/E2xLwEqzs4jPBds0buk86zTaAeAAu7uzx2KQjDl5Hyz9\nOi5UofcyQ3KB1u35J+09xr5H/B9nfG573BDgi1eVmK2zlkCw4IYaxUx1LEPE\nTQE2\r\n=xc9W\r\n-----END PGP SIGNATURE-----\r\n"}},{"version":"1.1.2","date":{"ts":1617305749711,"rel":"4 years ago"},"dist":{"shasum":"b4516c5dad437a763b53f7fc0e83241c8d95b66e","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-1.1.2.tgz","fileCount":8175,"integrity":"sha512-i8OCL7oq2rrGBSHkd6JgbPSQJbmmNhKe8U7dis0YsFjR305wusrvQNtTZ0mP6dp2A7dI36rObYdHT7mh5xAjVQ==","signatures":[{"sig":"MEQCIAm4ieAk94FWkgXI7Txjn5hj5l0HAdCMZcPOlF50j/3lAiBEZ3DbDlRD+yf/KSj8RLvEg0Gh2lyco3O9fAaHf1yOXw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25794400,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZiCWCRA9TVsSAnZWagAAqtsP/3pYibUaJAVDVU6sZeKM\nMTBw6Z6ARqn9YacaJuPOYYt/evXvSL3p2/k8oCDEwxFLomWf7N5EyiIxPTyd\nDaStmRuUHOLnJtxbYhrFG7slQmEVlqFpxV6lfjtH9sSLfooNDgwIGE4rTafT\nHsyU8u5qjwYyViSnDZWftuaHdFgqtzLNT0CWeocRi3T4GZpc2/03DN8qSs6E\nZi0MnW+DWVSBxGZ6GtWyTggHr5HE7OB1rRRfXGHc7PK+9tnz3OvjGMKKKHP9\nziczQrWj7KCOzthCwGppNKBoHG0K6PKjqLy1TZU8hcAGZ+HJKc1ZlVHnazbn\n4CpPaS5aUR8IyMyQ6HntNABvxGTT7rraOHK9rloUjM4Qdn2CA70vMZ8VZ2Z1\n8cDbWJuHpcpYuEXpGIi9zn2eDLrVvwaiERbRdYKX6uben9LLaGA6wdCrS4jp\nzMSKfS60UdN8oFwCwmRE+g/Lp54qGqCw0Osb8HiYFXXt80qjKP7aauWbv/Rj\nzWZaWJhMrO29Qy2Byr6hdK+vEuR4w4WBpHId5M1eFK44acjs1xPshBNKnbzK\ntsj3aCDtpnuFwV2kDURDKCvPdur4+QzlYeGDbqegwC7sDOICsg2ycjiF7lll\nDm5qTPTaZ9ILZOQgu9oPps8XER3s0vAmjU6uhMbpoi0Fb2+9SsgzIsHjSKSM\n1AL5\r\n=CqU0\r\n-----END PGP SIGNATURE-----\r\n"}},{"version":"1.1.1","date":{"ts":1613330400303,"rel":"4 years ago"},"dist":{"shasum":"e54b3f829cb9d69cc2f1893f2142b1da01f4ebf4","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-1.1.1.tgz","fileCount":8128,"integrity":"sha512-FzXreelxm7AelDXvkDvwBRKTX27pffrM02kvSTpNnPAQFEip5mjGVba7m4/Hkg9/Z/6NIR4rnDwDuV0iLneP2w==","signatures":[{"sig":"MEUCIQCR04IaIE8XalYskwJ1lsYHwntzzZ1JKWRZyMe032smJwIgGUq2PpNrbk+AI80WirmV511RmRocWwYUdqFXP3hYueQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":26620260,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgKXfgCRA9TVsSAnZWagAA8tMP/2zelSzW25/iQayqUNNB\nP0BMILZ/nQuXUeywODoeG5S4u/cmnrHipx2TpyWuoedFsv3Cx0C57JHGKC0w\n+lPqUPULIcK+Jin943/1vuiyAbvGy1seMrcZ1qxeynAcLMas/+FfBj/tPFej\nwlB4O5mBfQKOqPsfA7bsMluuTtel9tXymYE1jDy7Q2fvkMYyj4yOhcGTwRqK\neE7usOjViHL/58cVnb0Qe1mgihbLjPahkCqbAvEn8aPdKs0Z386E2j5XQRXu\nQNUlyNX7kzqzYtqr3IQuYx4JP6fDkwzyHkBU4E9RTX9RLz7ySfxdy2Ti/4tR\nf2lFtipskx3Em5NHe3B0FsTTi0gDl5L57/2CxyNSmwz1VlojdFQNjYSCJpUh\ncjmIg+d/MCwBI/VePuV5iiHyiNMFcZ4Lgzkh/GtlSX//9TOqAjDO+qJGhB6s\nCPM+SKfJ1kg4t4msh5oUVoyljAHysWjU6H4F8V6lEAygFbsCyLfwuvBaQtDq\n/HeIf5AuaNaWDZMzgmp64Z0D3QltzMG2OWy2j3Rd7zFWMSIHzXO4jjR28JVX\npTu+Ov0w0fldjoZ5LnNRe/GjJ3s4t+2KDmA7UlfmcFkVyaNpS+uYuSdkOsoq\nqiAOJawRA7witluOCaRJ42l1oSCAyB0ggdp0yriN7T0HnhYwR+rGau3FJy53\n/VUD\r\n=meSC\r\n-----END PGP SIGNATURE-----\r\n"}},{"version":"1.0.17","date":{"ts":1612019905757,"rel":"4 years ago"},"dist":{"shasum":"4234bcf801e88441e8c6e0b0a6e5c88932ca7434","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-1.0.17.tgz","fileCount":8111,"integrity":"sha512-6DUFKILXRr4ellQzJDTz213VSzRhFwTjVztUdJrKmxrDwnDrjBcaOohzcfa0zAQn8/wSqEX86rChAYKzkIeVZQ==","signatures":[{"sig":"MEYCIQCMNLcBKVgZ4APqEwfs8Qhlg2GAKUnvTne8tZbH3kEEBQIhAMseTZbx6FQnCW4t86A++AnMZsqKdKMqlrtZuxzuX3xg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25718386,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFXjCCRA9TVsSAnZWagAAXIQP+wWEdjXgQ689Dfoy6x2r\nd39U3rpO1I0kgbQVBFppm4ZQ65Dwlu7UkVpKYD8pBg+OPeF6Nm615dRXrIFQ\nlXxwn4PwJ7B/myl8JnB3li+wQKgwgCv5Q10omqDIG6HVLRCIvzMsWHGYjHxH\npNFXZImtSafDFxGw0VAD3PjqDcFD8SShbBNmg3dFmU9grkIug2VqzDT6qB1t\nXppGBA5b77QGMC1W2kInq38kHOIxzjR05g9QBoWnd9Pab1Dqed+w/rU89DEv\nBof17VItp1ZTZ+i5PJEYlxzSa3P0joU0/8jw+ANACZXvkVARhLk80hDsfUXQ\nSTY6X+31ZtgsJ6/LWiQuD/Ls2CbCkPpSOL3O1N6TfheLKT1y2gGXHMx3O3UL\nexItmaq+3RcANSeep/AHw2mV923DJchaICMahVX+u4rFuXb1DJPQqnWWa58F\nyVT1C8fQw4C1ZGmd7dGcSbcYEyZyHQVfyz6jGPB8TTgt8/OznfcXJ7aWRqqx\nspA2qEGCllPiAQQVn7zIAvYIBNeePC3D/miAe3Ud7XSY5BwV+liOaePe5hjd\nA68C1S4EueqUO/BjZG90LASrln5Z22xi1wv059k+0H+BEBpJDW+b+Y6WPm8/\nd68be4zf6fjky7zOdee3ECgB51+V6M2T7XoAmF8ogbv3Kd6h5e33BlqJsv6Q\n0Fb8\r\n=baNG\r\n-----END PGP SIGNATURE-----\r\n"}},{"version":"1.0.16","date":{"ts":1606067577006,"rel":"4 years ago"},"dist":{"shasum":"2249669b2e6523b8209d4413fdf8c136b9bf865c","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-1.0.16.tgz","fileCount":7963,"integrity":"sha512-VKddcREjQ0lLveyKj4TlhI6O+MwJiPqBpS6tQY9GRexD1dcwOjbZ97nSBWKNDcLgq4HIgUFcU/LIT/Vdvzv7sA==","signatures":[{"sig":"MEQCIBbPaAk6hgG/ozfqaiM58gYsCE3LmcjBadD32RKmtxaCAiALq59ILGdjYbj+IsaJ8kiyUayflHcahZR9TsGv55QeMQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25246315,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfuqV5CRA9TVsSAnZWagAAExUQAKJxq8XYye86IU13mljf\nBER7/fLkZleVmvzpHkW94UfHEc8YAa7btnSkS2r+qlBLcqzUxFBASa1g0qYl\n46OIZrlZqSafCggWUuv3gS6vjFmA4Cf7R9KMd3zoJBPMLS5z4vgNX0re2YBf\nQlBreoBRgXaKrHFhg+GLsqD944k8o5+5IH9y+KXN7CyETqcB6s9dbPBnyvR6\nGknquWMUXJu6oGaWWnhl0NO4o+HzGC1tcg3bo5HUW+88iChm99vIm25S3aGs\nK/oZVoNb/jRrYfXyOs9896CaJRQWgXO3n+dcHssya5k+M80cfQapPHHnfjid\n+d8aEJGJy79Gl3n2YuDHFrNqwsBnPhtcyPZT8v4qLx6rPGCdjaeYL7iPjv3v\nzgUpmCZZTz5EGLW8DldNONM3zNphFWMY31n+D30LwB6Yss4Ek7bi/MK1kXoF\naiPDSgoIjygzsoOTgjCROPhalvAa11xJhAfq8CGq1L/w9/NJ4u/urepgRBGv\nCaY/5KHHa0Dp2XtsU92Dqlz6MygGbZl7xS6HuskXdBO3Gi7+zBfkCAfrSpH3\nJ6nu/Z4cumVSG1TF8Jkdb1qn18GHHkl90MbmkBveWltwLCGPGfEFgNI4MR9o\n91/glDVlPH+KQoE/iGnZmLMVq/+adG5HgDkKpRtlcEn8KHTn2wZpjUCGIwr+\nY3be\r\n=4hv+\r\n-----END PGP SIGNATURE-----\r\n"}},{"version":"1.0.15","date":{"ts":1582930199171,"rel":"5 years ago"},"dist":{"shasum":"b328138b67e68bb9182e634279ceabcbddb55fe6","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-1.0.15.tgz","fileCount":7962,"integrity":"sha512-XbZgmjaFe93pBl9zlsbKgTv1y7OzFSL6LkYz082nvnZIqA+Hq4JcyAoSFmS7+DzgopfhfayLGEcZ8IIEHZwrYA==","signatures":[{"sig":"MEQCIE0Bxk153XG8UAAGhOcMjG9ewjqSvPnq+xkVh+nVCTbQAiB+yShqVGG0s2PADom04/0KcKGOd/pVTcZIIN3PNMxGrA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25112344,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeWZkXCRA9TVsSAnZWagAAYM0P/2SKRzIJIBnZ1tdYcEru\nhBFm2XUMCXwM9nPmN2Ho2VjekQw7jUUj2Lq73sMQVD0ZSYsmpAwdwTUUurkJ\n6Qc7ZPbxFAzgqkkH2h819wSl8N3AuEKuYlTBW+XiQSSfyQxjxFCVdJcmw+bU\nuYJ3J63kMsnGcjgVqfDY907CXL6fw8nvcgO2x026iowSjjh+MFOPr1jSmj4G\nH9UelMvdSD10AmBoMRe4BjooKBrTraBzPElM/9sX/KV8JgSagOBDHaMr1kwF\n2mwzjeI+LkKvEGPBl80U7KA5+RxRJu4aPafYB+anseWUj2Vl28/urz24k9ax\nTEEck4L9YlYkqXe78wke08rck5BLx3uATMQOZiVScoVuVoQux6uWqB39fRs/\nhPgWf3NnvdjBCm80C9zCH/TzFl9ZuG1tMvy33OltS/T1xcdULTamgoJMCqmM\ncQBYJzU2BItoAxms/muEk5l4DtaTa5uhvEUuyQhEynU+4w0sM5bYBf2kS8wC\ntgRAmqHhBDoM3pei5HoIj7r1Mvyk5lxWZHYcKCcNvEJSOV4lfs5AeqrV8GmJ\nGgc1dSChCPPjHaGQIQUAw7OPdtygrNa8YLPoTJPGSsOu9YkKrorK/a3VInjQ\ncYqVGd2Gg5X4JikHv3YLy9y/7CTrPMpHufLgK1MLm59G/l7TDVLSHabsiiei\nJ66T\r\n=99fI\r\n-----END PGP SIGNATURE-----\r\n"}},{"version":"1.0.14","date":{"ts":1582405215535,"rel":"5 years ago"},"dist":{"shasum":"b15d1cea6ad628510d51749bb0ff9ae30726ce56","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-1.0.14.tgz","fileCount":7967,"integrity":"sha512-y/5eNrxmzxgoNXEneUSzweyv/i9anjt59HpO/Erhqu59YDKHhmWeF2vMGpfXn5NGJg6s1fciZhQQMAy4z5a0Ww==","signatures":[{"sig":"MEUCIQChaU0XIDXv0l4WmDZ74/dxcZXFj4PBW1RjuDilmgDFbAIgXvqwfPZo3mXMTgANfAn2BzTGhYmdQ1/FZ5tHAc68HEg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25061716,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeUZZfCRA9TVsSAnZWagAAsm0P/38OmgkYjfCADcmCMk4d\neO0GcXPRo0Deb6QeBp95gz/Kwjqq4botjDjxUZwYwLT7ngtHehuXO3mbaYNw\n60xt5bb9ZbCUdCLfyEP5E0aO9C+gxzYym9KLVNPTVtHFel8OaT5yF+HveOfs\nIIssGOaubm5lTu2MMYQS5sFL5bsGj2pPyWfSgYbpW1Dd+btFJpB4/baYw7F7\ntlHbiNIi19kpd/llY+1UJZDyU+NgPVfRAWZRQYn8TUM4X3+cU7Kqz68Ph4/x\nHNX9nHLwKIKbFnwTbJCO6sPed+14K62PhQWY50KQl178u+soQe+6HoLBlo+9\nNVaz9ZER9NGyZqxZQ1S9GAfXpuljByYn46g6CmI/UP2xLSeCzjS0vrVZZ5Oi\n3k/cmAARn8SbvWcTiQi7ITwOXJDTCqx1ELaSuAEoTEc3grRF0z5xLpN3HBzb\n8xEr6+UBdwPQ7XOt9jN3nmDdks4v9SicbrBzRW+kZaPn5PGMPS+sB44dXZES\n8hC9XUYYxDoTdSUiheG2xR7x0AoC1GdvYkIbSY01fpYcuPjiiDqkTQGfs0pL\nfHkcbFq9OA9pp9sCnhKjUREBJ516LvEJLFLnAsn+LqLt1dKAvSqupWAfx149\nk9SIPSvTD342HIYqzyb/qSfN+gEBVax2OoWYly//w9XSllLsUvYkvOU2+nyE\n8FvW\r\n=d2Yl\r\n-----END PGP SIGNATURE-----\r\n"}},{"version":"1.0.13","date":{"ts":1549924409791,"rel":"6 years ago"},"dist":{"shasum":"1168883ecc532cd8ead20364d75ff509a2f152d6","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-1.0.13.tgz","fileCount":7965,"integrity":"sha512-FpS1/9gtXlwvBeW8AyrQoAVXAgo6lnWAMbrZV3JYta+rk49ObpURcfhSj8wLgwACGEeVXKyLtAXicQALQL/hDw==","signatures":[{"sig":"MEUCIBrjV/AKMl0tm9K58UI6TahiMkRQ/xSWswiQIA9Os/hzAiEAjd9oupEjo0B/NZpoussVXrTIACHIP8+3zIx4g8piTcE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24946330,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcYfg6CRA9TVsSAnZWagAADa4P/iQJVBiLofzeHB/uSVXE\nMCllHDIfQmbSrHxqwEnjXhQ106Ugi4Trls3li356WbIFOnWA4FoJhU6ZQZ4T\nLPjQsnHR4ZXGZAz1V7srEolIsJy09zqGIeorUPsa1hvuEHiQYpsqc/AB2BwJ\nlbEQAq4omDM5ewId42Xg7y4aYf2C8AVR0aS14M2g4dYQwcFCZiunR9clc60w\nxwclIuhhWfrMEKZ7A70MaSJ9W/VX6+cGALFEYXT7mJ6brp51aC05NszaPznA\n3GBmFB5f+Rt2g+OkinNJPB9IXtITsgqJw2gWQtfZKfnPZIt8F+4p6nKVPMIS\nFDOHFOTcRfriCtqo0ZFo6cT1SfWp8TNw/C3stM+DxYPicw5fWREhM5Zhl0iz\n/yjXqVHDrfqlCfo+HQ92j4IdxIOJxb7BUm35d9aUjf/164TdTFVdDyVYLjTz\nvMWU8iYtVGnXHWQDxyV48glhf0cUCA8zL6MWhnMzyuQGAe9nO5mZrPtt57Kb\nmbFLelG9/ESW0xcg79vqVmtrGQ4glJY9FJbkpKipBYiIQepfgyjwXpHn4gZl\ndCTx7dO4QlySkORe7k6twAVe+cOErzi6NYSpQP0MAO8K8iZPf/NKxRFPESQk\n7aUBG6jfIOk8tB2X4HdIS6DjzeC/wjsb8l/5uLPw3O7VbX3AcDR2fUFXHPO9\nyhLg\r\n=sK9c\r\n-----END PGP SIGNATURE-----\r\n"}},{"version":"1.0.12","date":{"ts":1549744761218,"rel":"6 years ago"},"dist":{"shasum":"3a40adf59dcc84ca35efac5895063ae24094d738","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-1.0.12.tgz","fileCount":7965,"integrity":"sha512-vGxO4mT8Wf7pQQh4I+R12UwAO2YdE25NBoT/pIC30v7LB2GamRhSIATDWqd8mCZM/YvRppl+4LoDQpuZ2ygh3g==","signatures":[{"sig":"MEUCIGCFifirCWiVdMCZeSnWUS/FFoO7zL2wrJKBjfINwCvBAiEAm4uBm/PkNHUHObzYqCPKoUmdfUqC4/yFjXpnSLpNXQU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24946527,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcXzp6CRA9TVsSAnZWagAAaysP/iaR5t9XI/BE8eUwslt/\n3LFps3PODvpO5+wrMaqP5rQe8sKwKsfP5HmQmpBKEfXn9ws3ZUHpTsSUqFXC\n18CrP2BtTtMKlGYxlj3/UYRHs/GGoa0sVFeA7C7rr6zQrH5CFAmNZcCzqH0/\nVzZ8oiSzzazW4/RnBYoDDfyB3CuMTCbIbhR11LVoFTxlqUbmNAVPv99hwaMb\nMvglnZuFjEyONm+B1txg8ESt6HtKHtiSY5NzNUriDk504lY97UBv2pmMyfWC\nvBtagH47dwDazdVpSp0T83x1XI1ZeVUTI5xqlsgH3gxB8pYOyiBQfhAS4Z2m\n9IGpKwVNF9voBpt3AVthYFHrTveDSX85XH3GZlnKULkqQBmUerPOV0azv2sK\nFREub6zwYg0I3zt4YRJVfrVzWvi8fau1mKwVydQDjC1B3oUIHhvKBZbbQ1Ml\nHSGuINahzwtUNwoH0d6XjGr9PtSK2S8LysbRo+KSwE6yCPQLJIC1CkQ5nybg\n0r+I+ADLZ6RaiYt6266OB+j2G8DsnJ+4LYLEVlj7hTjultMRNOA5V7EbrqHV\nZPGdj3kX1SNmY8sg5wJxp/sPvqh668GsVPiFA4PrGWeBbhS0i/etTqnFl9z6\neLuGryFPpPqOQucpz40tmGPlb2VFrFViCZCCG+wytwYn0CKFIWFg+3FMbho8\n2ZG9\r\n=JQzl\r\n-----END PGP SIGNATURE-----\r\n"}},{"version":"1.0.11","date":{"ts":1548966665211,"rel":"6 years ago"},"dist":{"shasum":"d06c772fa213384f933476a3ef7e72f43443c344","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-1.0.11.tgz","fileCount":7958,"integrity":"sha512-pcrQ2vNJP4kO3+OsU2SgNn7HYVepIqTstfKMzbcLXj9L0TFlEGhuHV/mwMyW96p1nc4v+ML45754cGcnyObPWg==","signatures":[{"sig":"MEUCIQDFOXdNv6bL+CI3kwpXRjLS7InmzWnRCWFSHOLQ50frKgIgCSc7GM+T/pw1cZ2r+Sd4x+Y0iQOD9lT9GxhNWxXJJD8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25041833,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcU1sJCRA9TVsSAnZWagAAHBUP/AsCcgw+72L0JIgOuc34\nXiiIaZiIfJJMzObj95Z1J3rdJiEkw2Uxy/MGlPoeAo4DHJDCGYThdxxLwMI5\nAFPxNRCvUAwVnzklQDhBBQmU5wWZsSRH6NqRllLzcQfoxWgmHWOOd5rmJBjY\nfctNlOQb0hR6OyeES2C4WTTlYAIodfKfOxLSI2z4g4VPiw4QVO7tM4vO2pdS\nEcz2X21nT9tJdGvlRYDl6SMXh6UL2uplI7WSPw/I4xTZ+3hcgDeviuSPo5na\nsGficmLN1aNwtrG8q9nYIc34loWQjyWUcafEob1F3wrgp3506EZjbFdRiWcL\nneBF7ssgChUA9M7Otnwze4UIYbv7SsbZLyxr4D16ckOhVMYr9rWo0s1+j4g5\nDbFs/v7DrKsrBbgtUonNdgR3G/bdaFvEg8Q4v3P4uo6RUSybbSPgJ7/j12Jw\nGsLDo3k1OietczoKdeZycQTi8lj1r/wNK6e1sRpFV9GiqhVUCM+kA1dxTzAJ\nxMHr2agZRvHHxQUj4lsft408NqVZF3AhwOrLBgpa1KqG346X3XjJUVHwFOFo\nivJIlq9WdKf71B9AUDsm6djV+boW9jYFWCXlfLUq5WtxIhpBZv6uu58U/buO\n6B2Fp8wyrcbCwhh6md02A2HIQCr0ceVGTEDXvlu4nOg0skpAc1Ac5Jebrk6j\nApp+\r\n=LYEF\r\n-----END PGP SIGNATURE-----\r\n"}},{"version":"1.0.10","date":{"ts":1548538326552,"rel":"6 years ago"},"dist":{"shasum":"644ddae9902e90ba4afa55c0c79bd09064324cbc","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-1.0.10.tgz","fileCount":7239,"integrity":"sha512-nYe5XYWnj0MmSylSd2/eZmKa6MABTxsPZeGBW/7Hwgd+1vXLP1GExfghv0HKnodn+UyrsGH4nshn7i9WtDcMGg==","signatures":[{"sig":"MEYCIQDU8/Qu67cn6+JV6/xbj+wqeIbvChxHePoTScCnjR4D0AIhAPpAoncBFnS2MzanpIi5fGU6L5moO4/UEyR6ZIVULmBX","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":23106413,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcTNHXCRA9TVsSAnZWagAAdIgP/3uk4hGV4jQTMNWX5drM\npHth77bmTarhDOjL2tgRssxePflmXkCI3iSVFjF1Nqy0WtLArRFhXG+zsmUv\nLCPLasS4SUmssk5Z3nKPkCdKj1Nbfs66o9P2r7BjSoawxaP7N05UozuM04Ru\nOFlp+7q4hClhZ+gnrsLzU5Q7jepSrhQiDT1FDSPKs1WEHJktibP6c3Y75noc\n24kJslsL0Hdmt8rSjdglcUu1vXs3UfCDf7FP79cgilBBd55BbO8BTEONG8BL\nVr/2OOxqgnLZL84V5maj3PzE/svHD1C7ds/p+tIEMi4jsHyGuOAQHNmL7GHP\nLsL3OQaUyQbvcXPC+sEfLhLpcv9ssTFU/YZIJmxeqZiB+fuyPjh+yUpfG623\n5Ms+AAt4rM7HynPzymjB7kyQsOgo8SpwcVZdI4qqTu+ro+NnaWgNlD2GKkD6\nq7IQ6Fy5Urfe/TlIz5GeXux8aYh5L7W9Lk0WI7jzRGahtE2VRypMGMrQ+ilo\nB9xzglY73U2u78O5DN3Cc17zj+2F7/RBvnNpFkNjCzYegbUZ2tVeDoua7qw3\n+Z7bBFuv+QMW7W4h8pDlRjyl7jAhqJ4QH1Z9Yw/2Rb4tlwoYY8DbKqQKWo5G\nahaUb9lH9F846iyH8UFeQDzmOzkeyzUfZTGbp9c7qRsJaNBAzifKom+XMHoh\n72tZ\r\n=ajrc\r\n-----END PGP SIGNATURE-----\r\n"}},{"version":"1.0.9","date":{"ts":1544876518990,"rel":"6 years ago"},"dist":{"shasum":"3c85ea06cb6263d9bd9acb526e148cb7f3c071df","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-1.0.9.tgz","fileCount":1787,"integrity":"sha512-00Wf6xiS6rUIV6sD0h/2528dsxcq26cDShWTSY/KQ3CLsT8qijI6ynhPlUljhuYiRlLuZpNLvbqf5yOMH0ghmA==","signatures":[{"sig":"MEUCIQCPenuA+D89ST3F8zl0+zrYYmqHmEjmpu7w6sQfY5Pz+wIgL7pbdb9nevKIxqesWn8veiVBbulqXJWRsXKP+dbIV7E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8181631,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcFPHnCRA9TVsSAnZWagAAM4gP/A7TEzY/qIAa0uXcgXlC\neoIhns5DfE6BT9/mIU8gWyGuwrKTghGeOR+9L8gPUe6YIuBTDS4GGzly8UN1\nxoFQXvX9ruYX+ND3NorAedG4EF0iBrv4yhI9WKGTunGRoviL6BN1GyfHLAX8\nWlS03cPtWvxuj6flCDy6lPUmZCPK8opjYvvRZFHUbFwVE+ZeGFbatqFNfX5p\nQeJVgDdZdbedx0bfnWzXvk3Wv8jBJTrDfyuJZVqYPfbz0L40rhHM9vP6I9aW\nLGRCTxSfTyLP3mkNriq+xzZsl0mp8b6FDf5xIpHgIG16cvlpAcgzv0Xm85sO\n6SBcPQraX1xLFjD3OudGXdbt/NKOUYWMNXqHaz+g6Sj2V2sxPYXchIrK62S1\ntUAc0ha5LmBwtERabQ4NANfe3UzM9JnTbcVzm722sRHBqv5nUP/mZxO5KCLI\nstHQ9cDJZrTz2DAY4Arow7KvnfXAnbmXyT+qcWdAqWS7pSDp7DYAECjnZYOO\njKpFG8X8fDMv1E24rZNM5wnEKhJWH9ICe9wrnwtc8MGrZj2DOD7tZToWCfOa\nr4xYJ82jUj8ZfemTLwXhIJRTCDvTGnxXnqTnXV0lWSz+GeSgNNiaaIU95sJZ\nxWlDcDsGVkDBeVdBXGPF5pMMCuDwpeRHVh/KU37C5qAN262O8jFnNiRSO+p6\nQW/p\r\n=uMcs\r\n-----END PGP SIGNATURE-----\r\n"}},{"version":"1.0.8","date":{"ts":1543163501792,"rel":"6 years ago"},"dist":{"shasum":"db075e9228beae18085a5ab81cdb586e1533589d","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-1.0.8.tgz","fileCount":1787,"integrity":"sha512-4SX57tvEPHQoh5BROEGd6CXbMeyLZsh3Z6Gn0otTQr5cXL3gBMSNAYRLaao9UUCq/fwXEC933NG/ZCLWqTu9CA==","signatures":[{"sig":"MEUCIEBKYO+i+F86d1kJQLVjksYeb0/9zpKVc/ClE7hDwdpWAiEAsQRgbo6bSx2kT/z2TdZCIrhUle5NJSFScTKWDnahW6Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8181618,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb+s5uCRA9TVsSAnZWagAAGzEP/3Ge7xw6LJFijFA2u2UO\nlHCBXfvd47ENZa4SCi9iTFC4RYCLKFFJjffG7PfJB29bpXo9A0GH9Y9UNl3j\njCgExf+RZUDkMcmUb0mIBYuUpu7HKgAAK7ukfyUYGXw3MoDDsgdKFU6dhBt8\nO9sVrl8utu00HAVDK5LlGglbM62SJc2lbO89dVGctFS1BsAYI/uQI0giLbPs\nXn13Qqxo74tnta757J/ztapyvNL9N+E8vv6jj0rE0IZZqwfIzHOhQaFx86IT\nGlTyW0aukiJV4+AjhAFeuBOxRINj6uCDn1Niz7RABjr62BDXdYzSF3yN6E8z\nD7wbFLFDLvupHTCOp88W5Yu/FIUNQ3LB3c4t3nCl++SIZD2XD5fajTlabqT/\nenlQd6hLiEYqtPsbwLuwqRie4CA4LLEfbKGoybb/A8b4z5siO/tDoUa1OlnO\niO3fIIftu4FgZZRs/hjRQZ34TF3mANShhA6zw3H3Alx4h731d71S1iVWtFtK\nUEKppLWu0ESHzV8gcGQkBnu/mt49B/URtsfGhsO/v0jn9HOXTfjzFTlN7wN8\n1phzOi6Mgu3jSm9HorLvhim62YKvqHYuUvU57FnEmFd+wXdY/8lzlPwebIgL\nvQNjHjlWpo0Rg+SEtv2U1tiRb13QW6Az/aDvOiLUNOZkjvpaanBS91r+M4aL\nmrZ7\r\n=kjh9\r\n-----END PGP SIGNATURE-----\r\n"}},{"version":"1.0.7","date":{"ts":1539196937169,"rel":"6 years ago"},"dist":{"shasum":"669750cadae343cf4c0b359c71456e795a04a527","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-1.0.7.tgz","fileCount":1787,"integrity":"sha512-tzkUml3CznGw8EiSGfQCAHG5FdVSpTmU5ZtwC9Oq7aoB2s3YG4EyM/fhPr0uTAB3ytR9dwoWAHkjVebXmMLKEQ==","signatures":[{"sig":"MEUCIAHG8T7pgf5mBxot0s4sTtus7WGItGULZAROGiqa9/KdAiEAg8ZpcXx+Mm6BkdQVpSllOo+ckutyz5PANA5ZFy7osWU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8181241,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbvkgKCRA9TVsSAnZWagAAB1AP/2toXBfvGU6n41r8oHj2\nN8Ole8TD526KKUI2A4kfJyTa+EULjIyArg8jhEy84Toq2Rv6uSWDutH8IBk/\nQunZ8M4M6QcVxKxEcKDu4Snm4fCRLIesh/ARraQKJf0M+07Hk2ka4r6wl8t7\nQ51+wvZzVORRjSJTKGN3IxMn09B6Lu6EC2ECHBaNHTkHiOUJYzNb7rtiQZhp\nyq/fMqc8mLvBy2L2wvqwPcnqkP8GOCBGbPx2/JKypjDcVXcytPuQGigFATnU\njCK3C+lcmV1hiAZAIUYwSJMsaeBhx/PqA49K0OkBEyCCOAFcOQcxM+lI8UW3\nv4KJn1YTC7KGcU23nk3CTAEp3klNf4SInLUgTzdRylQsU6jlG6ZbWgSQ5QAl\n7ExH993TJ5xOklIQdRfOz2mws224maV3/KASgsBzSnqDK+i/0Av7uZB2P9U0\ngGVsGJCULpmpr2B2mDqQF7bAee5fGyePHYAt1OG0AZR5dc2sJnOtJrPLgHte\nhV+Gu5TahWLgj72pMC3L6UyxJOLnwA1XD0XLerXtllcBJIpFq1yYI7DstgyB\ni7hy32R9U8RMFOw2l+xlE7Wg6aIhQUWT3uFPQAmM7mbGzb7n25m3f/+M5Fpn\nQCWhitWB/iReskaPg7Zzmlf3aITg264a65pH9LeSPNaVH4Xpna4zzB5X01EA\nN88q\r\n=B0Ke\r\n-----END PGP SIGNATURE-----\r\n"}},{"version":"1.0.6","date":{"ts":1538911515530,"rel":"6 years ago"},"dist":{"shasum":"f4ef6384a39a1f289249fcf5fc6809669b79e7c5","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-1.0.6.tgz","fileCount":1839,"integrity":"sha512-3f7O6BBB8f+WR5zoaQi4WESLrC5WdPDgS/V4EWX0KDjxzBapePvEG5Kuhpg9gUAkKozcwIkTZ/ghhlfJuHV8Gg==","signatures":[{"sig":"MEUCIDrEjwWzm+0uoxJDcB0kekJOdbLdfZOl7CXJQvrWLWQpAiEA3jsIJ3xyZtxVHKrKcVnbNQ/eqFI91BPzyHUHoF2CMO8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8390129,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbue0cCRA9TVsSAnZWagAA//wP/iVWs1l+pegPVC56vMJW\n1TZBdt0Ad72JVOG3pr1BksIOI0WmFTMZFZhtG2v5XbdvD6jl+L1R7fJdcIZH\nmCSU0a/VOaDjg9s2wiLeiobZLaygptCqS2W51QHsZdvd5oqrmhKprAfXBMUI\nH0d27qyCCjCzgwhdUkOrRiZ4ChBoLIM+DZi0OQZ/lRm4QU5o49s3umrmY921\nX6tIHMbGL7hHv/ALtiD7L8CigwNPXT6KdrPQIKTEikYXX/F9JnnzMaXzVlcU\n1ZiKD7BDuHFRRNnQihuSjwcKeWCcNKL4FbZn4daAEnwaGLvM2Abite2WBL3z\nGKTSmnZgK67A2xsp5cpmgIoaOWWImbu4L6rbVA7SO/ccQOYlygkhrbahs1zy\n1NgoE5ISBhZvOPjFQXo3CeHnBIx/3PZODcVdbCCbwb0UKNOnkFcS7ycVDaNj\nDLL1NH1POW4olSeN/geOrVGBgfQNnyBqGonb7ieYCPDq8/NMpogrGAd31+NI\n1p1ewl4elys3NnpbavxO1t9nykli8XT9QmelkQLdvxCrO1/A8Cx1VQ3wjxN1\nDlHHhb7if12e2XQV0UwK9GIFeNCJ3Q+NGhqj9wpzp5iug5XjnygeDepIA6ta\n6V71xdrmrikgEk0gnIYYZA98ZS6Ods4sjp1rw/1FZcFZcswpwtjg5PT6/mll\nucmm\r\n=K2/M\r\n-----END PGP SIGNATURE-----\r\n"}},{"version":"1.0.5","date":{"ts":1538172972401,"rel":"6 years ago"},"dist":{"shasum":"6793423fe66f29161ab3024c6f7634ca1446bf50","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-1.0.5.tgz","fileCount":1704,"integrity":"sha512-dlqjrKOWPNJ6GZIsmQ7mimtjThOCBUuAZkGjRtJxubgvcLxEZBNnRhkzFRo2jW5UuE2o6oOgRdV1A59HE9PP6Q==","signatures":[{"sig":"MEQCIEFU8Rql6yKZoOzHciI9lcSVpze2XWoqVeskTvaJ1wjzAiAbVY03uSPpCDr6dtmySw8BrmpyVlMUkyfwUYnWJ7sz3g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8016461,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbrqgsCRA9TVsSAnZWagAAuzwQAIdAveP8tHEp+9zPFUnj\n0Qr/3DEEgzkPLPzScKd3C4E5fwUw24925qDOBNlJxHNz/+t6Deb+BjpujAcw\n8rx2sUJAroWw0aFL9OxZbR+cnpGjN69ijOcFh3DmTPa0bDoejruQ7jtRmOuj\njbPmDJoSiBgboELVgFRPQYBMLC9AVlWgeSh9x1EnEb9w5W6+jOsP7ii2Ovig\ncerR/A9m79R1uWb82mPPsbJP9RYrgEM0hJjElLic/1qyVe0uXeK71Bx2xygS\nFt1V2FsngSLxxkCbyQMPBXmHjTAe02m6KrYvk8GYzuEXRYchtjWteMRsRCEm\nG2TZxH+kKAFkYBqK4t4OZlj8oX6rqr91JNfDx+znhj/AIuWzH/MPpYmUrwlC\nf0XDyaBnJovPqQNOcxuA/VLKPLCuz0kzRYvUVYw2i5W7J/uyaefkto5Xz4tS\nPGIZdNGhY8DFagq5uoTNBUBfafvZUhAPfN5WMP8qd8A76579e8AuDqtujWYn\nmDtGpUoPhERTN2pUtIeQOmSdpx1H1fhJ+pMJVtS0Bf3p3kHf1JNzYLRcExkX\nn67jNnVUO+UvbahjfgPed1iNCTMPpphjJ0KkXd3qzK7H7UgUPKlCGPgSC07l\ninpgxD0homIa4QLJxvUE4BdYGhtzUMnjS/ToHqnxvEriO8xznE4KvzKQIiko\nMA6b\r\n=HquC\r\n-----END PGP SIGNATURE-----\r\n"}},{"version":"1.0.4","date":{"ts":1538172537220,"rel":"6 years ago"},"dist":{"shasum":"11fa3c0b1bcb530fd8bf648d27f1d6f3459635c4","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-1.0.4.tgz","fileCount":1704,"integrity":"sha512-r+SnDkZ099Qt4CE/kIc+YK5SSA9C0pcdMqKaWdZ65oMbTQzGJBjYZL/niMjJGLRd01YZsXxIVdqLRpTYEzpmfA==","signatures":[{"sig":"MEUCIDa4UJGXOG4kRLHb4XW7shUB94oovPsj4XifWVAlFTJ2AiEAl8TO/9RTczxGS4taf732ZcvhOWXzRw/7vepeluH6k0U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8016461,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbrqZ5CRA9TVsSAnZWagAA5vYP/1T+5st/ReHfZXhgsLah\nq0wahOLBybzJydjQ9oIk//dqaLTq5GDt8rPSlkNqbRcFokL1nEOcK1hEapRA\nNlJNRkEeV6UMa0wSdAkeccwdo4cC9RTz3YrA6IPuNqHAYrX1nALYRqwv6+h6\nGsTuh4cXpRpN3PnVPF99aHf1iGOv+LRIifvO6hRg9bQ5rxs7v8aAgLzt6XHR\n6abFOiZxB8FYEtH+B11zyPKNPFPyvWuGe5TVEdCgBDRtw5wpuJaVVUAKck87\nH8nN9Lri4whJNfEXQ9ADXa874I7k8NSByFXPwg38a8VMuq4xQ4AyhI5WoWlW\nam9qt2ka7CJ7DYN4XwRN9B2K5HvGamZ8ivkjIUffo9h8+FRRi8LeM4BnJ9UT\nF465yHozv6RKEPKrUGrdWabIQG2hegUUirf4eEaUhulzafAN4in+xIzeAcRc\n7Ej7QSaecGQr6Ry4x8b/OUMcWrF2sEb2EcTQaKsEfj7QbcHkHoQ3SL01DJe0\nSOPRpNTvXfZj30GNSmqkVwH9W+nM6f0pyjorY0uwieZ/evwlpOnpj3V0ctfw\n27UNqEbaytNTeAAsABSlacLUgShXYa2ntLcsm+RsklwFfIrPSaHDe4++8Qau\nq0j748ZGq2X6Um1cdCeNRtUYFVzm8iw8nfxYOpbJtZ8mduCA9wLU4JggN8+h\nJjB5\r\n=9/Fm\r\n-----END PGP SIGNATURE-----\r\n"}},{"version":"1.0.3","date":{"ts":1537997242894,"rel":"6 years ago"},"dist":{"shasum":"d7e0a439c6f381adb7bdb603d751a732bd41c7f7","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-1.0.3.tgz","fileCount":1703,"integrity":"sha512-i52e8JS7bZvN4DmfYGcc8Tbo4Eq+67MePgzHphJ86/0dwtAZnhdcOHK3LukGSyY+/B0KxRb9/uoNNywvRgwrxg==","signatures":[{"sig":"MEUCIF2zYxbNqtK+OoGkf9fwOc0aszs6cMtnykS/yYxs2L+RAiEAx94WktjDkObMrTICWEPb8PBQOLLPAMPjIkAaURZ14+Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8013333,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbq/m7CRA9TVsSAnZWagAAfH4P/iw7bVvnPFXt7eORuisG\nuvIxXLCvXqfoKKqy5AFu290jRYnXWMzx5XhyLBBZS7nRI6Aiv0acoz6mNuVm\nuby1z+o6uSEnDkbMU06vfie0EkOPQIQRH9fzqmFTbfWqOBkfKt7/42LfP9Ko\nyNQKaieTeyasRVw1OKA1/bSzHd3xQrloq3W7MAGeF2fAzDLsfwYhZKxYfg7s\nDPf6YfeCZIgOWperZOOigDey3BVaO4Ar29pZfYHgBmTk8UoDi2QAvwRPYXK/\nO8PljsLV1O/c5NnLV172rgpG7Vdu3KW3OHQ/cpraMHfnPrAu9sE6TvX2rUyo\nL8wEBre77ky/3+rhVmo3i4iUv33kNC4GnjuiaPWk6t6/SQh9cVcqYCbvcImC\n4kiyl9rhzhHQVb5c7meuTCRkkwYEEkqewNKJuZXMLBEguo/k/8OfwhbKxh4m\nHjIiVFKk8IED3dvG6ra0Ujct8fkGqSCzYDrOqI34HwCytDQRkchMQMF0H+xo\nxctotAhJhv4b2rIFXzqj9UN3hXoz0iszvouIw0hWSNunha4Gv4s+P+n5Hrcu\noizTz9hiOs3Jy/j58mEue+usmCUbFdoFWGZ4kOmeCGaXPtBtSjDtErodYqMn\nC/old7phF+f15//is36cfQMh8SXr7cLhpQ/2zL9QHcOHiK7IZQL8p2tgyiLh\n/FX7\r\n=uOyr\r\n-----END PGP SIGNATURE-----\r\n"}},{"version":"1.0.2","date":{"ts":1537908931586,"rel":"6 years ago"},"dist":{"shasum":"793cb5791635e06a63396d12e65b97c7cf5f20e1","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-1.0.2.tgz","fileCount":1752,"integrity":"sha512-DyLpHN8TKmqd0Cj69T1jcvg+QSYlrsnUD0L7ildEsBVE6ImJkVyCnBL0D6acNJjDl1kAlcEfy7IzHDBgQ5VNIw==","signatures":[{"sig":"MEUCICB5ecp+3JWl9shFUDFPa6NYEjQdmMscKCPinKX3z3jEAiEA48MhMffuit6o6TBot7WprgpKdCnlcp0dHMYDJWCJAqM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8221067,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbqqDECRA9TVsSAnZWagAAHyoP/ibvBfglY7RE4QL2rdcg\nJMen+gy5n4/Twq1A3U7L8pq3uchLgoSpfIz/8kbFezKuMk1yaCMzEEIHbZr9\n7TYxnQOvWFRb8fU1zPc61/QU7W78XeUWrWy+Ja678+EtulaqyXuOqcd4yg8E\nAf3ESUkbNrR8ZagtS68NG3tlSebfVirK+NYK51Qz/+4MZywh5Dfh2zgvs34H\nMJibYWRRv8ZaNIRni5+iUplWbZYYDePLShRjmo+oRODvsy4Gsr1dI2/RoJL4\np5n3pD/V2rDMFavXSmqEg//HpIYbLAxpecyi1mrbC3sp0iGbTI5A71LYjRn8\nRdUus0o3TzuKUkCdqGGN7JxMhe05kKFk1Wof7ljQMTXxlo2saeeO9SfYDqEN\nhagAUVIRBKRkH2iY5tKZIImrH1DCJ+W2ZIFwYfof/KuAdo6ZLxtY1f7GiY17\n+h9yfLo4C2Bz7VTtDGKuSzuEt7wFjLUjEViou3TOWsNswpu2l/zGfUca2q8g\nANncroRZtDC/5S2ps/3cM90RB1rxV4OgVEWS9kPzIDeM4nsP3WJTdVa2AvFW\nl+UFLlsDBHBPtlv7tpnvEZQ1wXzwffruVxiw2O0jfrVmUQNX8D8tSTBcXoF9\nksTtCEpXujB7fTnN26pasHgO8gUq0ZI4ZHl5GQXpOvy8O7AXvZfMQbb0r7qD\nfT5R\r\n=jKUg\r\n-----END PGP SIGNATURE-----\r\n"}},{"version":"1.0.1","date":{"ts":1537907109376,"rel":"6 years ago"},"deprecated":false,"dist":{"shasum":"b2c07aaccfbb32206c36268ca973c110b47c808f","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-1.0.1.tgz","fileCount":1753,"integrity":"sha512-tX1HZv/WEgrQNT2rYgsoNar/P1eOsOQErqVKEW5j+IYotpwzqKc67In5/c9UMUafObnUywbhb7LRAXKTlG3CMw==","signatures":[{"sig":"MEYCIQDNRODAD8o4+pwcEKmeSwW6+AKuHT1noB1OYH1oGbf3ewIhAP5X5nIIrhGIlYCAFVO8a2H1PFYLou1cYRXqyaZCGZfw","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8222011,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbqpmlCRA9TVsSAnZWagAABt0P/A83HBsXIA25sRSCEQew\nG/kbZ7F4y2MwdpdLLtRYl9rwaSs7Dw3newIIo2Q6LH/qwr+oh/KYt7QqQWBO\n7DZ/cWF7DqXT3uYTlp7ImQ/aYTiyHVWXTAjj3AAgrCH2g73IrwCbPOJdwS4X\n1mQMvesJlq6XhYPQNJYdg+1yO5xi2pug5M2PnE5eMndYQPIeC6kJBpjS9Lo7\nqGD2jHk8tso5JKBm9xTKy014XYlnMQSJbde+cjwzNxHy9IbaVKRWdEm1Zi0/\nPD/0nc2yhAZoOb/op3/RW4/aKfg+zR2vwHC2Kdw0zC6Jgb2wX6nkzBzQebge\nfMoIdFTL4CN5c6oPnSBzQ3wVIy1tKaRnv/c56FqrXSIdxwi5cPhwlemtmxXc\nGjhaw59S0RKUEcBRGygfMLzcTJGlQJ6aXYMtckJK6XM3Xk69aKsfN75pna0w\nchholRTOqQKfoJUmUYUR4uqNREkTSW2z8SQZAhAG3gR1L15mBHywLg6Xnagf\nxR5HY2e4iWIvYK5JkwMJAcr0lpAhvdN7czsJndRXdN+snNSEvwoWd9ZXO/d4\nquMhPAExxekOGNqthgQ31vkDFSs3H7TVYYrvTRXgjjTZg4Pu/DeeXhChZWpe\neeaJjB/C0lbGl8VQcGnd+QhQY+jnjdSberLj+EWmQjVr/zn3R2jt/anT9hbm\n4KYe\r\n=fuH4\r\n-----END PGP SIGNATURE-----\r\n"}},{"version":"1.0.0","date":{"ts":1537906305174,"rel":"6 years ago"},"dist":{"shasum":"3d5748074308b386423ae330d9df18f3c5adb2a2","tarball":"https://registry.npmjs.org/jspurefix/-/jspurefix-1.0.0.tgz","fileCount":1792,"integrity":"sha512-fIqfheYqZo5LKQR9MUp0+3i/kj/kNPuSyTte+Gr/3Qc56FFXBfZQoLxqp8mKJ4gTyCSd3Q9+qBxVktqXQMJYVg==","signatures":[{"sig":"MEUCIHn1v5Y/cB8/U8V8DjvHQZQgFXImC3RC+KZ7idClnj1KAiEAlOtvO5hWkeHp2N7GTAHw00pi/1IFgrbTCbVi6gCh6I0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8832659,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbqpaBCRA9TVsSAnZWagAAV9oP/1LOWI1R2GS95Zn7pFPA\nVMv+eB/C68X8AmwRh3fddYqzF8QPunaHUxnBM5GT5rlHvKQo6tiqQknE1eFN\n5bD++dfyv2DuwMn/Oi/Z0rItz/vGQCOCHHmYQDXrU1KDSsdWkWhlMpR61tNt\n5bW2/+gDoe3+Ao/M7N/tz1Qw6Ml4nvceZsY+fxQ4E3f9efhLaORbh4m1LI8q\nZJfPI9NfQoA4y9is32fDmfocMWt0NEHIG+BgVCn7akUbckRco3sZ/E5mtdKE\nR/K1C71YobdpvAHqyd5fuofwOeLr//c4atr3fsNffJj+R9lWhffDvlsqYZw8\nzqaF/VCNUutN3q5bmdvJ+AJSOn2QVoxQiGnt9YHRLANmqZhvNOiy3AhrAV1X\n2b7T8wjxi0mKUG3uvG6BZg4DYD7lxvH95MKBG1yYZz7VekJtY9LuEeZaXuDj\nzuReZ6otAe0BVu9NNieE+2jOTt49cOALbCwXI/ULU/7GV7lJYmy/Yl4hdr5+\nAZMg6ZWhBTI+2QIAEEZ7/aSpnbLZbIrchTp0a77h3Ctm3qJY42eUERKP4ulo\nHvTK01UXXJ69swle+RVBpmOJjLlQ2UuHAiN/xoBa9CKFherLTl7mBslHeB7x\n9uq93G88Pz5kP2six/tsXaqI6+NJU70aB/7kF6hTByNrD5356glnuGwFpNrs\nzs/b\r\n=o7zN\r\n-----END PGP SIGNATURE-----\r\n"}}],"deprecations":[]},"packageVersion":{"author":"","description":"pure node js fix engine","homepage":"https://github.com/TimelordUK/jspurefix","repository":"https://github.com/TimelordUK/jspurefix","keywords":["typescript","fix","engine","fixml","ascii","financial","protocol","trading"],"dependencies":{"align-text":"^1.0.2","axios":"^1.7.5","express":"^4.19.2","lodash":"^4.17.21","mathjs":"^13.0.3","minimist":"^1.2.8","minimist-options":"^4.1.0","moment":"^2.30.1","node-fs-extra":"^0.8.2","reflect-metadata":"^0.2.2","sax":"^1.4.1","tsyringe":"^4.8.0","uuid":"^9.0.1","winston":"^3.14.2","word-wrap":"^1.2.5","yauzl":"^3.1.3"},"devDependencies":{"@types/express":"^4.17.21","@types/express-serve-static-core":"^4.19.5","@types/jest":"^29.5.12","@types/lodash":"^4.17.7","@types/mathjs":"^9.4.2","@types/minimist":"^1.2.5","@types/node":"^22.5.0","@types/request-promise-native":"^1.0.21","@types/sax":"^1.2.7","@types/uuid":"^9.0.7","@types/winston":"^2.4.4","@typescript-eslint/eslint-plugin":"^6.19.0","@typescript-eslint/parser":"^6.19.0","eslint":"^8.56.0","eslint-config-standard-with-typescript":"^43.0.1","jest":"^29.7.0","madge":"^8.0.0","standard":"^17.1.0","ts-jest":"^29.2.5","typescript":"^5.5.4"},"maintainers":[{"name":"timelorduk","avatars":{"small":"/npm-avatar/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdmF0YXJVUkwiOiJodHRwczovL3MuZ3JhdmF0YXIuY29tL2F2YXRhci8wYjNlMmMwNjRlMjdlNjc3YWExODhjNGRhNTM2OWVhZD9zaXplPTUwJmRlZmF1bHQ9cmV0cm8ifQ.4cGDuUJXC-VnYRa_fMqOIgFZKxKzN87RG3zBdEpMhOg","medium":"/npm-avatar/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdmF0YXJVUkwiOiJodHRwczovL3MuZ3JhdmF0YXIuY29tL2F2YXRhci8wYjNlMmMwNjRlMjdlNjc3YWExODhjNGRhNTM2OWVhZD9zaXplPTEwMCZkZWZhdWx0PXJldHJvIn0._q3I0DxGXT1T8GKS24lvDvyPQyHAqPe5XR_IZMm1vL8","large":"/npm-avatar/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdmF0YXJVUkwiOiJodHRwczovL3MuZ3JhdmF0YXIuY29tL2F2YXRhci8wYjNlMmMwNjRlMjdlNjc3YWExODhjNGRhNTM2OWVhZD9zaXplPTQ5NiZkZWZhdWx0PXJldHJvIn0.ay41Mb0p5TM795qFbnoFOjAQS_GfhtjCxfqivlRPEKI"}}],"name":"jspurefix","license":"MIT","version":"4.0.0","versions":[],"deprecations":[],"types":"dist/index.d.ts"},"packageUrl":"/package/jspurefix","packageLinkingCallToActionHref":null,"package":"jspurefix","linkingAllowedForPackage":false,"isStarred":false,"ghapi":"https://api.github.com/repos/TimelordUK/jspurefix","downloads":[{"downloads":525,"label":"2023-11-27 to 2023-12-03"},{"downloads":594,"label":"2023-12-04 to 2023-12-10"},{"downloads":786,"label":"2023-12-11 to 2023-12-17"},{"downloads":728,"label":"2023-12-18 to 2023-12-24"},{"downloads":270,"label":"2023-12-25 to 2023-12-31"},{"downloads":404,"label":"2024-01-01 to 2024-01-07"},{"downloads":717,"label":"2024-01-08 to 2024-01-14"},{"downloads":1062,"label":"2024-01-15 to 2024-01-21"},{"downloads":765,"label":"2024-01-22 to 2024-01-28"},{"downloads":849,"label":"2024-01-29 to 2024-02-04"},{"downloads":763,"label":"2024-02-05 to 2024-02-11"},{"downloads":946,"label":"2024-02-12 to 2024-02-18"},{"downloads":957,"label":"2024-02-19 to 2024-02-25"},{"downloads":1189,"label":"2024-02-26 to 2024-03-03"},{"downloads":1102,"label":"2024-03-04 to 2024-03-10"},{"downloads":1240,"label":"2024-03-11 to 2024-03-17"},{"downloads":954,"label":"2024-03-18 to 2024-03-24"},{"downloads":758,"label":"2024-03-25 to 2024-03-31"},{"downloads":884,"label":"2024-04-01 to 2024-04-07"},{"downloads":864,"label":"2024-04-08 to 2024-04-14"},{"downloads":820,"label":"2024-04-15 to 2024-04-21"},{"downloads":945,"label":"2024-04-22 to 2024-04-28"},{"downloads":951,"label":"2024-04-29 to 2024-05-05"},{"downloads":811,"label":"2024-05-06 to 2024-05-12"},{"downloads":1011,"label":"2024-05-13 to 2024-05-19"},{"downloads":1096,"label":"2024-05-20 to 2024-05-26"},{"downloads":1221,"label":"2024-05-27 to 2024-06-02"},{"downloads":930,"label":"2024-06-03 to 2024-06-09"},{"downloads":1047,"label":"2024-06-10 to 2024-06-16"},{"downloads":1046,"label":"2024-06-17 to 2024-06-23"},{"downloads":1052,"label":"2024-06-24 to 2024-06-30"},{"downloads":1128,"label":"2024-07-01 to 2024-07-07"},{"downloads":1218,"label":"2024-07-08 to 2024-07-14"},{"downloads":1102,"label":"2024-07-15 to 2024-07-21"},{"downloads":1854,"label":"2024-07-22 to 2024-07-28"},{"downloads":1153,"label":"2024-07-29 to 2024-08-04"},{"downloads":1292,"label":"2024-08-05 to 2024-08-11"},{"downloads":1232,"label":"2024-08-12 to 2024-08-18"},{"downloads":962,"label":"2024-08-19 to 2024-08-25"},{"downloads":1315,"label":"2024-08-26 to 2024-09-01"},{"downloads":1068,"label":"2024-09-02 to 2024-09-08"},{"downloads":1240,"label":"2024-09-09 to 2024-09-15"},{"downloads":931,"label":"2024-09-16 to 2024-09-22"},{"downloads":1117,"label":"2024-09-23 to 2024-09-29"},{"downloads":992,"label":"2024-09-30 to 2024-10-06"},{"downloads":1542,"label":"2024-10-07 to 2024-10-13"},{"downloads":1157,"label":"2024-10-14 to 2024-10-20"},{"downloads":1062,"label":"2024-10-21 to 2024-10-27"},{"downloads":1037,"label":"2024-10-28 to 2024-11-03"},{"downloads":1153,"label":"2024-11-04 to 2024-11-10"},{"downloads":1359,"label":"2024-11-11 to 2024-11-17"},{"downloads":1038,"label":"2024-11-18 to 2024-11-24"}],"dependents":{"dependentsCount":0,"dependentsTruncated":[]},"capsule":{"name":"jspurefix","description":"pure node js fix engine","maintainers":["timelorduk"],"dist-tags":{"latest":"4.0.0"},"lastPublish":{"maintainer":"timelorduk","time":"2024-08-26T10:16:19.750Z"},"types":{"typescript":{"bundled":"dist/index.d.ts"}}},"canEditPackage":false},"chunks":{"commons":["commons.b79be12adf7a5316de1e.js","commons.b79be12adf7a5316de1e.js.map"],"styles":["styles.c617df3efc3b584cc1d7.css","minicssextractbug.d20b6beec9f84f3c51f4.js","styles.c617df3efc3b584cc1d7.css.map","minicssextractbug.d20b6beec9f84f3c51f4.js.map"],"acceptance/acceptance":["acceptance/acceptance.8f158bb6f917058edc15.js","acceptance/acceptance.8f158bb6f917058edc15.js.map"],"audit-logs/actions/common/auditLogContainer":["audit-logs/actions/common/auditLogContainer.b53482e6e8d59f143dd9.js","audit-logs/actions/common/auditLogContainer.b53482e6e8d59f143dd9.js.map"],"audit-logs/actions/common/dot":["audit-logs/actions/common/dot.c9c77b74c1f2a46df71a.js","audit-logs/actions/common/dot.c9c77b74c1f2a46df71a.js.map"],"audit-logs/actions/common/filterActions":["audit-logs/actions/common/filterActions.1c4e17f8eee2580fb525.js","audit-logs/actions/common/filterActions.1c4e17f8eee2580fb525.js.map"],"audit-logs/actions/common/spaceGap":["audit-logs/actions/common/spaceGap.492b805c8fd7f0477e90.js","audit-logs/actions/common/spaceGap.492b805c8fd7f0477e90.js.map"],"audit-logs/actions/orgAddUser":["audit-logs/actions/orgAddUser.0f31c5ea1667ae4f4352.js","audit-logs/actions/orgAddUser.0f31c5ea1667ae4f4352.js.map"],"audit-logs/actions/orgCreateTeam":["audit-logs/actions/orgCreateTeam.6b14599a54a04e6d1051.js","audit-logs/actions/orgCreateTeam.6b14599a54a04e6d1051.js.map"],"audit-logs/actions/orgDeleteTeam":["audit-logs/actions/orgDeleteTeam.aae4b5efa098d755e655.js","audit-logs/actions/orgDeleteTeam.aae4b5efa098d755e655.js.map"],"audit-logs/actions/orgRemoveUser":["audit-logs/actions/orgRemoveUser.e08363d532659cd80b38.js","audit-logs/actions/orgRemoveUser.e08363d532659cd80b38.js.map"],"audit-logs/actions/packageAddDistTag":["audit-logs/actions/packageAddDistTag.04901ad0124d77154cce.js","audit-logs/actions/packageAddDistTag.04901ad0124d77154cce.js.map"],"audit-logs/actions/packageDeprecate":["audit-logs/actions/packageDeprecate.35c6da318f905a6bf1f6.js","audit-logs/actions/packageDeprecate.35c6da318f905a6bf1f6.js.map"],"audit-logs/actions/packagePublish":["audit-logs/actions/packagePublish.729831beb78e6d96f9f2.js","audit-logs/actions/packagePublish.729831beb78e6d96f9f2.js.map"],"audit-logs/actions/packageRemoveDistTag":["audit-logs/actions/packageRemoveDistTag.22e2962ec6870a30e58e.js","audit-logs/actions/packageRemoveDistTag.22e2962ec6870a30e58e.js.map"],"audit-logs/actions/packageUnpublish":["audit-logs/actions/packageUnpublish.b324240e345d5642454d.js","audit-logs/actions/packageUnpublish.b324240e345d5642454d.js.map"],"audit-logs/actions/packageUpdateAccess":["audit-logs/actions/packageUpdateAccess.36b80a359bfca15db60c.js","audit-logs/actions/packageUpdateAccess.36b80a359bfca15db60c.js.map"],"audit-logs/actions/teamAddPackage":["audit-logs/actions/teamAddPackage.ea101b31350f95441e06.js","audit-logs/actions/teamAddPackage.ea101b31350f95441e06.js.map"],"audit-logs/actions/teamAddUser":["audit-logs/actions/teamAddUser.c0e25078bded50e7bb86.js","audit-logs/actions/teamAddUser.c0e25078bded50e7bb86.js.map"],"audit-logs/actions/teamRemovePackage":["audit-logs/actions/teamRemovePackage.eda9b927db6081e54b14.js","audit-logs/actions/teamRemovePackage.eda9b927db6081e54b14.js.map"],"audit-logs/actions/teamRemoveUser":["audit-logs/actions/teamRemoveUser.9d04376f4805de3e9ed9.js","audit-logs/actions/teamRemoveUser.9d04376f4805de3e9ed9.js.map"],"audit-logs/actions/teamUpdatePackageAccess":["audit-logs/actions/teamUpdatePackageAccess.1c12462cbf2723411be2.js","audit-logs/actions/teamUpdatePackageAccess.1c12462cbf2723411be2.js.map"],"audit-logs/audit-logs":["audit-logs/audit-logs.84bf18eb71c53a904abd.js","audit-logs/audit-logs.84bf18eb71c53a904abd.js.map"],"audit-logs/audit-search-input":["audit-logs/audit-search-input.523cd907c3783e6df929.js","audit-logs/audit-search-input.523cd907c3783e6df929.js.map"],"audit-logs/list":["audit-logs/list.f1352bddddbcaafec2c8.js","audit-logs/list.f1352bddddbcaafec2c8.js.map"],"audit-logs/no-logs":["audit-logs/no-logs.981070ccacb6bef1146a.js","audit-logs/no-logs.981070ccacb6bef1146a.js.map"],"audit-logs/no-logs-with-query":["audit-logs/no-logs-with-query.3c718bcab9eb6a9aac8c.js","audit-logs/no-logs-with-query.3c718bcab9eb6a9aac8c.js.map"],"auth/account-recovery-message":["auth/account-recovery-message.d3d0a9c5aab77c31bf16.js","auth/account-recovery-message.d3d0a9c5aab77c31bf16.js.map"],"auth/authentication-successful":["auth/authentication-successful.89e95385555c15026571.js","auth/authentication-successful.89e95385555c15026571.js.map"],"auth/email-otp":["auth/email-otp.3279bf105e863189d4a7.js","auth/email-otp.3279bf105e863189d4a7.js.map"],"auth/escalate":["auth/escalate.b5713ed563299a8ab350.js","auth/escalate.b5713ed563299a8ab350.js.map"],"auth/forgot":["auth/forgot.287baf56741695c53d34.js","auth/forgot.287baf56741695c53d34.js.map"],"auth/forgot-sent":["auth/forgot-sent.ffadf9676fa54b2e82f0.js","auth/forgot-sent.ffadf9676fa54b2e82f0.js.map"],"auth/forgot-sent-anonymized":["auth/forgot-sent-anonymized.2f4c7b204e053346dbb7.js","auth/forgot-sent-anonymized.2f4c7b204e053346dbb7.js.map"],"auth/invite-signup":["auth/invite-signup.6b3ca39c21161aa7aa4b.js","auth/invite-signup.6b3ca39c21161aa7aa4b.js.map"],"auth/liminal-login-footer":["auth/liminal-login-footer.b0a6c721462424c315b6.js","auth/liminal-login-footer.b0a6c721462424c315b6.js.map"],"auth/login":["auth/login.d73d8ab4023a4fae00f2.js","auth/login.d73d8ab4023a4fae00f2.js.map"],"auth/otp":["auth/otp.d66d1f2c3e7ac740a735.js","auth/otp.d66d1f2c3e7ac740a735.js.map"],"auth/password":["auth/password.bd7abeefd167e1477640.js","auth/password.bd7abeefd167e1477640.js.map"],"auth/recovery-code":["auth/recovery-code.56ab0d8fec282e5241ef.js","auth/recovery-code.56ab0d8fec282e5241ef.js.map"],"auth/recovery-email-otp":["auth/recovery-email-otp.c39a61feadf4cfe92c69.js","auth/recovery-email-otp.c39a61feadf4cfe92c69.js.map"],"auth/reset-password":["auth/reset-password.4d9f8a6fe7a7f23eb7e8.js","auth/reset-password.4d9f8a6fe7a7f23eb7e8.js.map"],"auth/signup":["auth/signup.d816b922686bddff6edb.js","auth/signup.d816b922686bddff6edb.js.map"],"auth/test/email-otp-test":["auth/test/email-otp-test.a6d6867594488d8f2281.js","auth/test/email-otp-test.a6d6867594488d8f2281.js.map"],"auth/test/escalate-test":["auth/test/escalate-test.9fd56559c2d09eea5c10.js","auth/test/escalate-test.9fd56559c2d09eea5c10.js.map"],"auth/test/otp-test":["auth/test/otp-test.d1c4bddaa5a5d30df9db.js","auth/test/otp-test.d1c4bddaa5a5d30df9db.js.map"],"auth/test/webauthn-login-test":["auth/test/webauthn-login-test.ffe93475a9861015a293.js","auth/test/webauthn-login-test.ffe93475a9861015a293.js.map"],"auth/webauthn-cli-login":["auth/webauthn-cli-login.0b3ee2f30201bfa8a451.js","auth/webauthn-cli-login.0b3ee2f30201bfa8a451.js.map"],"auth/webauthn-login":["auth/webauthn-login.2dc9191ceaad30640841.js","auth/webauthn-login.2dc9191ceaad30640841.js.map"],"billing/delete-org":["billing/delete-org.d20bd0f1aaacb8fc90d7.js","billing/delete-org.d20bd0f1aaacb8fc90d7.js.map"],"billing/detail":["billing/detail.f9a60c5242880e6d43f5.js","billing/detail.f9a60c5242880e6d43f5.js.map"],"billing/downgrade":["billing/downgrade.92d9ff7d4bff0441004b.js","billing/downgrade.92d9ff7d4bff0441004b.js.map"],"billing/upgrade":["billing/upgrade.173ac6b34ec110b0769f.js","billing/upgrade.173ac6b34ec110b0769f.js.map"],"contact/contact":["contact/contact.430ee63adf050e9ba912.js","contact/contact.430ee63adf050e9ba912.js.map"],"contact/recovery-support-v1":["contact/recovery-support-v1.3b9658cf19820ba5b196.js","contact/recovery-support-v1.3b9658cf19820ba5b196.js.map"],"contact/recovery-support-v2":["contact/recovery-support-v2.6b076d1b72ce8df904b5.js","contact/recovery-support-v2.6b076d1b72ce8df904b5.js.map"],"contact/sidebar":["contact/sidebar.f656df78b2091c8da4d8.js","contact/sidebar.f656df78b2091c8da4d8.js.map"],"debug/badstatus":["debug/badstatus.1de5094f3e6a9b99c36d.js","debug/badstatus.1de5094f3e6a9b99c36d.js.map"],"debug/detail":["debug/detail.776dd808fa58d32672a7.js","debug/detail.776dd808fa58d32672a7.js.map"],"debug/failcomponent":["debug/failcomponent.ae7923483c75cca10fdf.js","debug/failcomponent.ae7923483c75cca10fdf.js.map"],"dev/choose-template":["dev/choose-template.0b7cf2c2179df20d3fe7.js","dev/choose-template.0b7cf2c2179df20d3fe7.js.map"],"dsr/dsr-export":["dsr/dsr-export.79524fae1e1d404b8626.js","dsr/dsr-export.79524fae1e1d404b8626.js.map"],"egg/egg":["egg/egg.d344471ef4f8a3a4b35e.js","egg/egg.d344471ef4f8a3a4b35e.js.map"],"errors/bad-request":["errors/bad-request.04f47df3f894a59d2ba8.js","errors/bad-request.04f47df3f894a59d2ba8.js.map"],"errors/not-found":["errors/not-found.d30e6bf9e464ad027451.js","errors/not-found.d30e6bf9e464ad027451.js.map"],"errors/server":["errors/server.4a0b63df0ef09bc42ed0.js","errors/server.4a0b63df0ef09bc42ed0.js.map"],"errors/tea-pot":["errors/tea-pot.02c8f951700ed9cca39e.js","errors/tea-pot.02c8f951700ed9cca39e.js.map"],"errors/template":["errors/template.39d816e653eb9347d070.js","errors/template.39d816e653eb9347d070.js.map"],"flatpage/flatpage":["flatpage/flatpage.50d707cbe94bd794d7ad.js","flatpage/flatpage.50d707cbe94bd794d7ad.js.map"],"homepage/homepage":["homepage/homepage.94c4cd79e3f3b0cf698f.js","homepage/homepage.94c4cd79e3f3b0cf698f.js.map"],"homepage/homepage-logged-in":["homepage/homepage-logged-in.6e266a3860a707cb4f8b.js","homepage/homepage-logged-in.6e266a3860a707cb4f8b.js.map"],"orgs/create":["orgs/create.d00b894dfeff60f6f09a.js","orgs/create.d00b894dfeff60f6f09a.js.map"],"orgs/detail":["orgs/detail.e51c4b342f71b8f536f5.js","orgs/detail.e51c4b342f71b8f536f5.js.map"],"orgs/invite":["orgs/invite.e3c8b2c22c5bd2d2301c.js","orgs/invite.e3c8b2c22c5bd2d2301c.js.map"],"orgs/tfa-enforced":["orgs/tfa-enforced.7d10b30d6fb9f85a4b9d.js","orgs/tfa-enforced.7d10b30d6fb9f85a4b9d.js.map"],"orgs/upgrade":["orgs/upgrade.73eb828ed46f63a37de5.js","orgs/upgrade.73eb828ed46f63a37de5.js.map"],"package-list/package-list":["package-list/package-list.03a9b00f029a35abc59b.js","package-list/package-list.03a9b00f029a35abc59b.js.map"],"package/delete-package":["package/delete-package.0e8a8d4066805ee37ba1.js","package/delete-package.0e8a8d4066805ee37ba1.js.map"],"package/deprecate-package":["package/deprecate-package.7c2b91a268103f716f57.js","package/deprecate-package.7c2b91a268103f716f57.js.map"],"package/error-message-package":["package/error-message-package.fb56c6df5c7fa8925b71.js","package/error-message-package.fb56c6df5c7fa8925b71.js.map"],"package/package":["package/package.0958c68d54da31c5d875.js","package/package.0958c68d54da31c5d875.js.map"],"profile/profile":["profile/profile.d1f12ab781523e122fd9.js","profile/profile.d1f12ab781523e122fd9.js.map"],"recovery-codes/show":["recovery-codes/show.2e2849d510004b535268.js","recovery-codes/show.2e2849d510004b535268.js.map"],"search/search":["search/search.634d21be6ef9c38ffbf7.js","search/search.634d21be6ef9c38ffbf7.js.map"],"searchv2/search":["searchv2/search.7547af08116f24d09906.js","searchv2/search.7547af08116f24d09906.js.map"],"settings/change-password":["settings/change-password.65293989a2bf07659fab.js","settings/change-password.65293989a2bf07659fab.js.map"],"settings/delete-account":["settings/delete-account.18f07696dc2142a3f122.js","settings/delete-account.18f07696dc2142a3f122.js.map"],"settings/email":["settings/email.99e7dcdb2b503c6f65b4.js","settings/email.99e7dcdb2b503c6f65b4.js.map"],"settings/memberships":["settings/memberships.a94ffe24356097b24e34.js","settings/memberships.a94ffe24356097b24e34.js.map"],"settings/packages":["settings/packages.dc2ed426ee6f9ab953c7.js","settings/packages.dc2ed426ee6f9ab953c7.js.map"],"settings/profile":["settings/profile.7407d2dea9a5e81b6f81.js","settings/profile.7407d2dea9a5e81b6f81.js.map"],"teams/create":["teams/create.4645f75c4a163e383c1c.js","teams/create.4645f75c4a163e383c1c.js.map"],"teams/detail":["teams/detail.1737f413ba412903a31e.js","teams/detail.1737f413ba412903a31e.js.map"],"teams/list":["teams/list.675e3d846dadd45bd975.js","teams/list.675e3d846dadd45bd975.js.map"],"teams/packages":["teams/packages.17ceed80b4b2f15d9fdf.js","teams/packages.17ceed80b4b2f15d9fdf.js.map"],"teams/users":["teams/users.30c74e91a221032a77d5.js","teams/users.30c74e91a221032a77d5.js.map"],"tfa/additional-options":["tfa/additional-options.925102a4f64d5f0e7ee9.js","tfa/additional-options.925102a4f64d5f0e7ee9.js.map"],"tfa/enable":["tfa/enable.3c6779277e8c1b22cd8c.js","tfa/enable.3c6779277e8c1b22cd8c.js.map"],"tfa/list":["tfa/list.1aff1464b6de13b88bc7.js","tfa/list.1aff1464b6de13b88bc7.js.map"],"tfa/recovery-codes":["tfa/recovery-codes.a3d212fbca5e1d5340bf.js","tfa/recovery-codes.a3d212fbca5e1d5340bf.js.map"],"tfa/security-key-list":["tfa/security-key-list.f2bbb09dc97c41c81d5f.js","tfa/security-key-list.f2bbb09dc97c41c81d5f.js.map"],"tfa/showTFAQRCode":["tfa/showTFAQRCode.cd5cd1f111367ad58d80.js","tfa/showTFAQRCode.cd5cd1f111367ad58d80.js.map"],"tfa/showTFASuccess":["tfa/showTFASuccess.592bef5c6a6c29198c44.js","tfa/showTFASuccess.592bef5c6a6c29198c44.js.map"],"tfa/tfa-disable":["tfa/tfa-disable.f34ee1512688be89995a.js","tfa/tfa-disable.f34ee1512688be89995a.js.map"],"tfa/tfa-mode-selection":["tfa/tfa-mode-selection.914596b0b39aa7ebbc4b.js","tfa/tfa-mode-selection.914596b0b39aa7ebbc4b.js.map"],"tfa/tfa-password-entry":["tfa/tfa-password-entry.e60eb4b2d9189606ec34.js","tfa/tfa-password-entry.e60eb4b2d9189606ec34.js.map"],"tfa/totp":["tfa/totp.74c4cb8a9e68a54db72c.js","tfa/totp.74c4cb8a9e68a54db72c.js.map"],"tokens/create":["tokens/create.5414ff94251c848dc901.js","tokens/create.5414ff94251c848dc901.js.map"],"tokens/create-gat":["tokens/create-gat.8513abe99617319bfa23.js","tokens/create-gat.8513abe99617319bfa23.js.map"],"tokens/gat-details":["tokens/gat-details.a1f7e70ebc8f3250d165.js","tokens/gat-details.a1f7e70ebc8f3250d165.js.map"],"tokens/gat/allowed-ip-ranges-input":["tokens/gat/allowed-ip-ranges-input.791f1c60453a65ee7b82.js","tokens/gat/allowed-ip-ranges-input.791f1c60453a65ee7b82.js.map"],"tokens/gat/constants":["tokens/gat/constants.c1d240b65fa21a482335.js","tokens/gat/constants.c1d240b65fa21a482335.js.map"],"tokens/gat/divider":["tokens/gat/divider.8a57d4da9e05b7d8d11b.js","tokens/gat/divider.8a57d4da9e05b7d8d11b.js.map"],"tokens/gat/expiration-days-input":["tokens/gat/expiration-days-input.7c4acaaf2847fbaa5c43.js","tokens/gat/expiration-days-input.7c4acaaf2847fbaa5c43.js.map"],"tokens/gat/gat-expiration":["tokens/gat/gat-expiration.8723ab9bd6b760a18a08.js","tokens/gat/gat-expiration.8723ab9bd6b760a18a08.js.map"],"tokens/gat/gat-input":["tokens/gat/gat-input.880fdad4cd129763ed91.js","tokens/gat/gat-input.880fdad4cd129763ed91.js.map"],"tokens/gat/organizations-input":["tokens/gat/organizations-input.31a089d45205c4df7d63.js","tokens/gat/organizations-input.31a089d45205c4df7d63.js.map"],"tokens/gat/organizations-section":["tokens/gat/organizations-section.5000e95cd864cd836844.js","tokens/gat/organizations-section.5000e95cd864cd836844.js.map"],"tokens/gat/packages-and-scopes-input":["tokens/gat/packages-and-scopes-input.f529abc764ac172688e8.js","tokens/gat/packages-and-scopes-input.f529abc764ac172688e8.js.map"],"tokens/gat/packages-and-scopes-section":["tokens/gat/packages-and-scopes-section.f40d2902fea20d2e8dfd.js","tokens/gat/packages-and-scopes-section.f40d2902fea20d2e8dfd.js.map"],"tokens/gat/permissions-input":["tokens/gat/permissions-input.9187d368a61870ca6756.js","tokens/gat/permissions-input.9187d368a61870ca6756.js.map"],"tokens/gat/section":["tokens/gat/section.22e3e32d4745b51dc57c.js","tokens/gat/section.22e3e32d4745b51dc57c.js.map"],"tokens/gat/section-heading":["tokens/gat/section-heading.6a97c6f3a22e91f123c7.js","tokens/gat/section-heading.6a97c6f3a22e91f123c7.js.map"],"tokens/gat/selected-items":["tokens/gat/selected-items.f48fcf5071f15400da12.js","tokens/gat/selected-items.f48fcf5071f15400da12.js.map"],"tokens/gat/utils":["tokens/gat/utils.a81a368fd699d790cc83.js","tokens/gat/utils.a81a368fd699d790cc83.js.map"],"tokens/generate-token":["tokens/generate-token.f42fe92aeb2b0da3d8db.js","tokens/generate-token.f42fe92aeb2b0da3d8db.js.map"],"tokens/list":["tokens/list.70431312b6a70e600c2e.js","tokens/list.70431312b6a70e600c2e.js.map"],"vouchers/view":["vouchers/view.617c38480b3a48c14719.js","vouchers/view.617c38480b3a48c14719.js.map"]},"hash":"b79be12adf7a5316de1e","name":"package/package","containerId":"app","headerName":"x-spiferack","publicPath":"https://static-production.npmjs.com/"}</script><script crossorigin="anonymous" src="https://static-production.npmjs.com/commons.b79be12adf7a5316de1e.js"></script> <script crossorigin="anonymous" src="https://static-production.npmjs.com/minicssextractbug.d20b6beec9f84f3c51f4.js"></script> <script crossorigin="anonymous" src="https://static-production.npmjs.com/package/package.0958c68d54da31c5d875.js"></script> </body> </html>