<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>227988</bug_id>
          
          <creation_ts>2021-07-15 06:09:16 -0700</creation_ts>
          <short_desc>Grab the lock in FTL::Thunks::keyForSlowPathCallThunk</short_desc>
          <delta_ts>2021-07-16 16:40:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Samuel Groß">saelo</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>product-security</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1777184</commentid>
    <comment_count>0</comment_count>
      <attachid>433579</attachid>
    <who name="Samuel Groß">saelo</who>
    <bug_when>2021-07-15 06:09:16 -0700</bug_when>
    <thetext>Created attachment 433579
Crashing sample

The FTL::Thunks class [0] appears to be used to store shared fragments of code used by the FTL JIT. It provides two methods:

    MacroAssemblerCodeRef&lt;JITThunkPtrTag&gt; getSlowPathCallThunk(VM&amp; vm, const SlowPathCallKey&amp; key)
    {
        Locker locker { m_lock };
        return generateIfNecessary(vm, m_slowPathCallThunks, key, slowPathCallThunkGenerator);  // This does a HashTable::add
    }

    SlowPathCallKey keyForSlowPathCallThunk(MacroAssemblerCodePtr&lt;JITThunkPtrTag&gt; ptr)
    {
        return keyForThunk(m_slowPathCallThunks, ptr);      // This does a HashTable::lookup
    }

The keyForSlowPathCallThunk method seems to be called on the main thread during repatching (see stack trace below), while the getSlowPathCallThunk method can be called on a background JIT thread (this can e.g. be seen by setting a breakpoint on getSlowPathCallThunk or one of its callers, e.g. SlowPathCallContext::makeCall [1] and checking the thread that hits it). As such, there is a race condition here: the main thread doesn&apos;t attempt to take the lock when performing the lookup while the HashTable::add performed by the background thread can lead to a HashTable::rehash, and thus e.g. to the backing memory being freed. Frequently, winning this race seems to cause a RELEASE_ASSERT in FTL::Thunks::keyForThunk [2] to be hit (presumably because the rehash happens in place, and so the element isn&apos;t found), however, it can also cause memory corruption, as shown by the following ASAN report:

=================================================================
==936821==ERROR: AddressSanitizer: heap-use-after-free on address 0x6140000197a8 at pc 0x00000049bc5a bp 0x7ffffe183130 sp 0x7ffffe1828f8
READ of size 40 at 0x6140000197a8 thread T0
    #0 0x49bc59 in __asan_memcpy (/home/builder/webkit/FuzzBuild/Release/bin/jsc+0x49bc59)
    #1 0x223b276 in JSC::FTL::ThunkMap&lt;JSC::FTL::SlowPathCallKey&gt;::KeyType JSC::FTL::keyForThunk&lt;JSC::FTL::ThunkMap&lt;JSC::FTL::SlowPathCallKey&gt; &gt;(JSC::FTL::ThunkMap&lt;JSC::FTL::SlowPathCallKey&gt;&amp;, JSC::MacroAssemblerCodePtr&lt;(WTF::PtrTag)26129&gt;) (/home/builder/webkit/FuzzBuild/Release/bin/jsc+0x223b276)
    #2 0x21ccc0c in JSC::ftlThunkAwareRepatchCall(JSC::CodeBlock*, JSC::CodeLocationCall&lt;(WTF::PtrTag)26432&gt;, JSC::FunctionPtr&lt;(WTF::PtrTag)1&gt;) (/home/builder/webkit/FuzzBuild/Release/bin/jsc+0x21ccc0c)
    #3 0x21db0e2 in JSC::repatchPutByID(JSC::JSGlobalObject*, JSC::CodeBlock*, JSC::JSValue, JSC::Structure*, JSC::CacheableIdentifier, JSC::PutPropertySlot const&amp;, JSC::StructureStubInfo&amp;, JSC::PutKind) (/home/builder/webkit/FuzzBuild/Release/bin/jsc+0x21db0e2)
    #4 0x1fe115e in JSC::operationPutByIdDirectNonStrictOptimize(JSC::JSGlobalObject*, JSC::StructureStubInfo*, long, long, unsigned long) (/home/builder/webkit/FuzzBuild/Release/bin/jsc+0x1fe115e)
    #5 0x7f32f87be072  (&lt;unknown module&gt;)

0x6140000197a8 is located 360 bytes inside of 400-byte region [0x614000019640,0x6140000197d0)
freed by thread T1 (JITWorker) here:
    #0 0x49c58d in free (/home/builder/webkit/FuzzBuild/Release/bin/jsc+0x49c58d)
    #1 0x1c2c397 in WTF::HashTable&lt;JSC::MacroAssemblerCodePtr&lt;(WTF::PtrTag)26129&gt;, WTF::KeyValuePair&lt;JSC::MacroAssemblerCodePtr&lt;(WTF::PtrTag)26129&gt;, JSC::FTL::SlowPathCallKey&gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;JSC::MacroAssemblerCodePtr&lt;(WTF::PtrTag)26129&gt;, JSC::FTL::SlowPathCallKey&gt; &gt;, WTF::DefaultHash&lt;JSC::MacroAssemblerCodePtr&lt;(WTF::PtrTag)26129&gt; &gt;, WTF::HashMap&lt;JSC::MacroAssemblerCodePtr&lt;(WTF::PtrTag)26129
&gt;, JSC::FTL::SlowPathCallKey, WTF::DefaultHash&lt;JSC::MacroAssemblerCodePtr&lt;(WTF::PtrTag)26129&gt; &gt;, WTF::HashTraits&lt;JSC::MacroAssemblerCodePtr&lt;(WTF::PtrTag)26129&gt; &gt;, WTF::HashTraits&lt;JSC::FTL::SlowPathCallKey&gt;, WTF::HashTableTraits&gt;::KeyValuePairTraits, WTF::HashTraits&lt;JSC::MacroAssemblerCodePtr&lt;(WTF::PtrTag)26129&gt; &gt; &gt;::rehash(unsigned int, WTF::KeyValuePair&lt;JSC::MacroAssemblerCodePtr&lt;(WTF::PtrTag)26129&gt;, JSC::FTL::SlowPathCallK
ey&gt;*) (/home/builder/webkit/FuzzBuild/Release/bin/jsc+0x1c2c397)

previously allocated by thread T2 (JITWorker) here:
    #0 0x49c80d in malloc (/home/builder/webkit/FuzzBuild/Release/bin/jsc+0x49c80d)
    #1 0x49c334a in bmalloc::DebugHeap::malloc(unsigned long, bmalloc::FailureAction) (/home/builder/webkit/FuzzBuild/Release/bin/jsc+0x49c334a)
    #2 0x1c24a0b in WTF::SharedTaskFunctor&lt;void (JSC::LinkBuffer&amp;), JSC::FTL::SlowPathCallContext::makeCall(JSC::VM&amp;, JSC::FunctionPtr&lt;(WTF::PtrTag)1&gt;)::$_5&gt;::run(JSC::LinkBuffer&amp;) (/home/builder/webkit/FuzzBuild/Release/bin/jsc+0x1c24a0b)
    #3 0x5ada3b in JSC::LinkBuffer::finalizeCodeWithoutDisassemblyImpl() (/home/builder/webkit/FuzzBuild/Release/bin/jsc+0x5ada3b)
    #4 0xe8cfc4 in JSC::MacroAssemblerCodeRef&lt;(WTF::PtrTag)357&gt; JSC::LinkBuffer::finalizeCodeWithoutDisassembly&lt;(WTF::PtrTag)357&gt;() (/home/builder/webkit/FuzzBuild/Release/bin/jsc+0xe8cfc4)
    #5 0x1bd3a8e in JSC::FTL::link(JSC::FTL::State&amp;) (/home/builder/webkit/FuzzBuild/Release/bin/jsc+0x1bd3a8e)
    #6 0x100fddb in JSC::DFG::Plan::compileInThreadImpl() (/home/builder/webkit/FuzzBuild/Release/bin/jsc+0x100fddb)
    #7 0x205101c in JSC::JITPlan::compileInThread(JSC::JITWorklistThread*) (/home/builder/webkit/FuzzBuild/Release/bin/jsc+0x205101c)
    #8 0x21ba282 in JSC::JITWorklistThread::work() (/home/builder/webkit/FuzzBuild/Release/bin/jsc+0x21ba282)
    #9 0x47e33da in WTF::Detail::CallableWrapper&lt;WTF::AutomaticThread::start(WTF::AbstractLocker const&amp;)::$_0, void&gt;::call() (/home/builder/webkit/FuzzBuild/Release/bin/jsc+0x47e33da)
    #10 0x48429df in WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) (/home/builder/webkit/FuzzBuild/Release/bin/jsc+0x48429df)
    #11 0x498a915 in WTF::wtfThreadEntryPoint(void*) (/home/builder/webkit/FuzzBuild/Release/bin/jsc+0x498a915)

This likely happens when the background thread frees the m_table member after rehashing the table and after the main thread loaded the old value of the pointer during a lookup.

The attached sample, found by Fuzzilli, appears to trigger this race sometimes, but very rarely. The sample is unfortunately not minimized as it isn&apos;t deterministic.
I managed to trigger the above ASAN crash by compiling JSC on Linux with
    ./Tools/Scripts/build-jsc --jsc-only --release --cmakeargs=&quot;-DENABLE_STATIC_JSC=ON -DCMAKE_C_COMPILER=&apos;/usr/bin/clang-10&apos; -DCMAKE_CXX_COMPILER=&apos;/usr/bin/clang++-10&apos; -DCMAKE_C_FLAGS=&apos;-fsanitize=address&apos; -DCMAKE_CXX_FLAGS=&apos;-fsanitize=address&apos; -DCMAKE_EXE_LINKER_FLAGS=&apos;-fsanitize=address&apos;&quot;
and repeatedly executing the attached sample with
    while true; do ASAN_OPTIONS=detect_leaks=0 ./FuzzBuild/Release/bin/jsc --thresholdForJITSoon=10 --thresholdForJITAfterWarmUp=10 --thresholdForOptimizeAfterWarmUp=100 --threshold ForOptimizeAfterLongWarmUp=100 --thresholdForOptimizeAfterLongWarmUp=100 --thresholdForFTLOptimizeAfterWarmUp=1000 --thresholdForFTLOptimizeSoon=1000 ftl_crash.js; done
If it helps, I can see if it&apos;s possible to place some sleeps into the HashTable code to make the race easier to trigger.

The bug was likely introduced by this commit: https://github.com/WebKit/WebKit/commit/934b072e307a52ef7c4bc75f6862635d7189e772

[0] https://github.com/WebKit/WebKit/blob/a1f561e19cfd520000fcb4f24f88d53b2a54d8b1/Source/JavaScriptCore/ftl/FTLThunks.h#L77
[1] https://github.com/WebKit/WebKit/blob/a1f561e19cfd520000fcb4f24f88d53b2a54d8b1/Source/JavaScriptCore/ftl/FTLSlowPathCall.cpp#L127
[2] https://github.com/WebKit/WebKit/blob/a1f561e19cfd520000fcb4f24f88d53b2a54d8b1/Source/JavaScriptCore/ftl/FTLThunks.h#L73</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777185</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-15 06:09:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/80627901&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777611</commentid>
    <comment_count>2</comment_count>
      <attachid>433707</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-07-16 14:56:33 -0700</bug_when>
    <thetext>Created attachment 433707
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777613</commentid>
    <comment_count>3</comment_count>
      <attachid>433707</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-07-16 14:59:41 -0700</bug_when>
    <thetext>Comment on attachment 433707
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777648</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-07-16 16:40:07 -0700</bug_when>
    <thetext>Committed r280008 (239750@main): &lt;https://commits.webkit.org/239750@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 433707.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>433579</attachid>
            <date>2021-07-15 06:09:16 -0700</date>
            <delta_ts>2021-07-15 06:09:16 -0700</delta_ts>
            <desc>Crashing sample</desc>
            <filename>ftl_crash.js</filename>
            <type>text/javascript</type>
            <size>18909</size>
            <attacher name="Samuel Groß">saelo</attacher>
            
              <data encoding="base64">Ly8gUnVuIHdpdGggLS10aHJlc2hvbGRGb3JKSVRTb29uPTEwIC0tdGhyZXNob2xkRm9ySklUQWZ0
ZXJXYXJtVXA9MTAgLS10aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyV2FybVVwPTEwMCAtLXRocmVz
aG9sZEZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwPTEwMCAtLXRocmVzaG9sZEZvck9wdGltaXpl
QWZ0ZXJMb25nV2FybVVwPTEwMCAtLXRocmVzaG9sZEZvckZUTE9wdGltaXplQWZ0ZXJXYXJtVXA9
MTAwMCAtLXRocmVzaG9sZEZvckZUTE9wdGltaXplU29vbj0xMDAwCmZ1bmN0aW9uIG1haW4oKSB7
CmNvbnN0IHY0ID0gWzUzMzAuMDA2MDg4ODA0Njg2XTsKY29uc3QgdjUgPSBbLTE4MDk4NTkwODUs
LTE4MDk4NTkwODUsLTE4MDk4NTkwODVdOwpjb25zdCB2NiA9IFtub0lubGluZSw1MzMwLjAwNjA4
ODgwNDY4NiwtMTgwOTg1OTA4NSxub0lubGluZSxub0lubGluZSxub0lubGluZSx2NF07CmNvbnN0
IHY3ID0ge307CmNvbnN0IHY4ID0gdjcuX19wcm90b19fOwpmdW5jdGlvbiB2OSh2MTAsdjExLHYx
MikgewogICAgY29uc3QgdjEzID0gMTsKfQpmdW5jdGlvbiB2MTQodjE1LHYxNix2MTcsdjE4KSB7
CiAgICBmdW5jdGlvbiB2MTkodjIwLHYyMSx2MjIpIHsKICAgICAgICBjb25zdCB2MjMgPSBpc0Nv
bmNhdFNwcmVhZGFibGU7CiAgICB9CiAgICBjb25zdCB2MjQgPSB2OSB8IHYxNjsKICAgIHN3aXRj
aCAodjE4KSB7CiAgICBkZWZhdWx0OgogICAgICAgIGNvbnN0IHYyNSA9IDA7CiAgICAgICAgY29u
c3QgdjI2ID0gMjsKICAgICAgICBjb25zdCB2MjcgPSAxOwogICAgICAgIGNvbnN0IHYzMCA9IHtj
b25zdHJ1Y3Rvcjo1MzMwLjAwNjA4ODgwNDY4NixlOkludDE2QXJyYXksbGVuZ3RoOi0xMDAwLjB9
OwogICAgICAgIGNvbnN0IHYzNiA9IFs2NDU2Mi41NzkwNTY1NTk1OTYsNjQ1NjIuNTc5MDU2NTU5
NTk2LDY0NTYyLjU3OTA1NjU1OTU5Nl07CiAgICAgICAgY29uc3QgdjM4ID0gWzEwMDAwMDAwMDAw
MDAuMCwxMDAwMDAwMDAwMDAwLjBdOwogICAgICAgIGNvbnN0IHYzOSA9IFsxLjc5NzY5MzEzNDg2
MjMxNTdlKzMwOCwxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOCwxLjc5NzY5MzEzNDg2MjMxNTdlKzMw
OF07CiAgICAgICAgY29uc3QgdjQwID0gWy0yMTQ3NDgzNjQ5LC0yMTQ3NDgzNjQ5LC0yMTQ3NDgz
NjQ5XTsKICAgICAgICBjb25zdCB2NDEgPSBbU3ltYm9sLCJzeW1ib2wiLC0yMTQ3NDgzNjQ5LHYz
OV07CiAgICAgICAgZnVuY3Rpb24gdjQyKHY0Myx2NDQpIHsKICAgICAgICAgICAgZnVuY3Rpb24g
djQ1KHY0Nix2NDcpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCB2NDggPSAwOwog
ICAgICAgICAgICBsZXQgdjQ5ID0gLTQ0OTYzODA5NTsKICAgICAgICAgICAgY29uc3QgdjU2ID0g
WzEwOTgzMDU4MzUsMTA5ODMwNTgzNSwxMDk4MzA1ODM1XTsKICAgICAgICAgICAgY29uc3QgdjU3
ID0gWzMuMCx2NTYsVWludDhBcnJheSwxMDAsdjM2LDMuMCx2NDAsMTA5ODMwNTgzNSwiZjhidnpi
ekNlTCJdOwogICAgICAgICAgICBmb3IgKGxldCB2NjAgPSAwOyB2NjAgPCA3OyB2NjArKykgewog
ICAgICAgICAgICAgICAgdjQ5ICo9ICJzeW1ib2wiOwogICAgICAgICAgICB9CiAgICAgICAgICAg
IGNvbnN0IHY2MSA9IDY1NTM3OwogICAgICAgICAgICBjb25zdCB2NjIgPSAxMDA7CiAgICAgICAg
fQogICAgICAgIGNvbnN0IHY2NyA9IFstMTAwMDAwMC4wLC0xMDAwMDAwLjBdOwogICAgICAgIGNv
bnN0IHY2OCA9IFszXTsKICAgICAgICBjb25zdCB2NjkgPSBbcGxhY2Vob2xkZXIsIkVQU0lMT04i
LDMsMywzLCJFUFNJTE9OIix2NjgsLTEwMDAwMDAuMCwtMTAwMDAwMC4wLHY2N107CiAgICAgICAg
Y29uc3QgdjcwID0ge2E6LTEwMDAwMDAuMCxjOnY2Nyxjb25zdHJ1Y3RvcjozLGxlbmd0aDozLHRv
U3RyaW5nOnBsYWNlaG9sZGVyfTsKICAgICAgICBjb25zdCB2NzEgPSB7YjoiRVBTSUxPTiIsY29u
c3RydWN0b3I6djcwLHRvU3RyaW5nOnBsYWNlaG9sZGVyLHZhbHVlT2Y6djcwfTsKICAgICAgICBm
dW5jdGlvbiB2NzIodjczLHY3NCx2NzUpIHsKICAgICAgICAgICAgcmV0dXJuIHY3NDsKICAgICAg
ICAgICAgcmV0dXJuICJFUFNJTE9OIjsKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gdjc3KHY3
OCwuLi52NzkpIHsKICAgICAgICAgICAgIjkwMDcxOTkyNTQ3NDA5OTEiLnRvU3RyaW5nID0gdjc4
OwogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiB2ODAodjgxLHY4Mix2ODMpIHsKICAgICAgICAg
ICAgY29uc3Qgdjg1ID0gT2JqZWN0KCk7CiAgICAgICAgICAgIGNvbnN0IHY4NiA9IE9iamVjdDsK
ICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gdjg3KHY4OCx2ODkpIHsKICAgICAgICAgICAgY29u
c3QgdjkyID0gWy05MDA3MTk5MjU0NzQwOTkzLC05MDA3MTk5MjU0NzQwOTkzLC05MDA3MTk5MjU0
NzQwOTkzLFJlZmxlY3RdOwogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiB2OTModjk0LHY5NSx2
OTYsdjk3KSB7CiAgICAgICAgICAgIHY5NSAqPSAtMTAwMDAwMC4wOwogICAgICAgICAgICBjb25z
dCB2OTkgPSBNYXRoLnNpbmgodjg3KTsKICAgICAgICAgICAgY29uc3QgdjEwMCA9IHY5NlstOTAw
NzE5OTI1NDc0MDk5M107CiAgICAgICAgICAgIGNvbnN0IHYxMDEgPSB2OTkgaW4gdjY5OwogICAg
ICAgICAgICBjb25zdCB2MTA0ID0gWzIxNDc0ODM2NDgsMjE0NzQ4MzY0OF07CiAgICAgICAgICAg
IGxldCB2MTA3ID0gQXJyYXkoMSk7CiAgICAgICAgICAgIGNvbnN0IHYxMTMgPSBbInN5bWJvbCJd
OwogICAgICAgICAgICBjb25zdCB2MTE0ID0gW1Byb3h5LHYxMTMsVWludDE2QXJyYXksMzkwNTQ5
NDU1OCx2MTEzLCI2NTUzNiIsdjEwNywzLHYxMTMsdjEwNF07CiAgICAgICAgICAgICI5MDA3MTk5
MjU0NzQwOTkxIi5jID0gUHJveHk7CiAgICAgICAgICAgIGNvbnN0IHYxMTggPSBbMzI4NDc0LjQy
MDg1NTc4MzE2XTsKICAgICAgICAgICAgY29uc3QgdjExOSA9IFsxMDczNzQxODI0LDEwNzM3NDE4
MjQsMTA3Mzc0MTgyNF07CiAgICAgICAgICAgIGNvbnN0IHYxMjAgPSBbdjExOCwxMDczNzQxODI0
LHYxMTgsdjExOSxlZGVuR0MsdjExOF07CiAgICAgICAgICAgIHYxMDcgfD0gdjExOTsKICAgICAg
ICAgICAgbGV0IHYxMjEgPSAwOwogICAgICAgICAgICBjb25zdCB2MTIyID0gNzsKICAgICAgICAg
ICAgdjEyMFstNjI4NjU1MDc0XSA9IHY2NzsKICAgICAgICAgICAgY29uc3QgdjEyMyA9IHYxMjEr
KzsKICAgICAgICB9CiAgICAgICAgY29uc3QgdjEyNCA9IHY4NyAqKiB2ODA7CiAgICAgICAgY29u
c3QgdjEyNiA9IE1hdGguY29zKCJFUFNJTE9OIik7CiAgICAgICAgbGV0IHYxMjcgPSAwOwogICAg
ICAgIGZvciAobGV0IHYxMzAgPSB2MTI3OyB2MTMwIDwgMTAwOyB2MTMwKyspIHsKICAgICAgICAg
ICAgY29uc3QgdjEzMiA9IG5ldyBBcnJheUJ1ZmZlcigxKTsKICAgICAgICAgICAgY29uc3QgdjEz
MyA9IHY5Myh2NjksdjY5LHYxMzIsLTEwMDAwMDAuMCk7CiAgICAgICAgfQogICAgICAgIHdoaWxl
ICh2MTI3IDwgdjEyNykgewogICAgICAgICAgICBjb25zdCB2MTM0ID0gdjY5Ll9fcHJvdG9fXzsK
ICAgICAgICAgICAgY29uc3QgdjEzOSA9IFstNzI4MzMwLjMyNjUxOTc4NjNdOwogICAgICAgICAg
ICBjb25zdCB2MTQwID0gWzE0MjkyMjUxOTIsMTQyOTIyNTE5MiwxNDI5MjI1MTkyLDE0MjkyMjUx
OTIsMTQyOTIyNTE5Ml07CiAgICAgICAgICAgIGNvbnN0IHYxNDEgPSBbLTcyODMzMC4zMjY1MTk3
ODYzLCJhcmd1bWVudHMiXTsKICAgICAgICAgICAgY29uc3QgdjE0MiA9IHtfX3Byb3RvX186U3lu
dGF4RXJyb3IsYTotNzI4MzMwLjMyNjUxOTc4NjMsYjoxNDI5MjI1MTkyLGM6LTcyODMzMC4zMjY1
MTk3ODYzLGU6djE0MSxsZW5ndGg6djEzOX07CiAgICAgICAgICAgIGZ1bmN0aW9uIHYxNDModjE0
NCx2MTQ1LHYxNDYpIHsKICAgICAgICAgICAgICAgIGNvbnN0IHYxNDggPSBbLTIuMjI1MDczODU4
NTA3MjAxNGUtMzA4LC0yLjIyNTA3Mzg1ODUwNzIwMTRlLTMwOF07CiAgICAgICAgICAgICAgICBj
b25zdCB2MTUwID0gLUluZmluaXR5OwogICAgICAgICAgICAgICAgY29uc3QgdjE1MSA9IFt2MTUw
LHYxNTAsdjE1MCx2MTUwXTsKICAgICAgICAgICAgICAgIGNvbnN0IHYxNTIgPSBbLTQwOTYsLTQw
OTYsLTQwOTYsLTQwOTYsLTQwOTZdOwogICAgICAgICAgICAgICAgY29uc3QgdjE1MyA9IHtjb25z
dHJ1Y3Rvcjp2MTUyLGQ6djE1MSxlOi00MDk2LHRvU3RyaW5nOnYxNTJ9OwogICAgICAgICAgICB9
CiAgICAgICAgICAgIGZ1bmN0aW9uIHYxNTQodjE1NSx2MTU2LHYxNTcpIHsKICAgICAgICAgICAg
ICAgIGNvbnN0IHYxNTkgPSBbLTQuMF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rp
b24gdjE2MCh2MTYxLHYxNjIsdjE2Myx2MTY0KSB7CiAgICAgICAgICAgICAgICBjb25zdCB2MTY1
ID0gey4uLi03MjgzMzAuMzI2NTE5Nzg2M307CiAgICAgICAgICAgICAgICBjb25zdCB2MTY2ID0g
T2JqZWN0OwogICAgICAgICAgICAgICAgY29uc3QgdjE3MCA9IFtSZWZsZWN0LC05MDA3MTk5MjU0
NzQwOTkzLCJzeW1ib2wiXTsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHYxNzEodjE3Mix2MTcz
KSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdjE3NCA9ICJzeW1ib2wiKCk7CiAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICBjb25zdCB2MTc2ID0ge2I6djE3MCxlOk9iamVjdCxt
Ok9iamVjdCxwOk9iamVjdH07CiAgICAgICAgICAgICAgICBmdW5jdGlvbiB2MTc3KHYxNzgpIHsK
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHYxNzkodjE4MCx2MTgx
KSB7CiAgICAgICAgICAgICAgICAgICAgdjE3NyA9IHYxODA7CiAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICBjb25zdCB2MTgzID0gUHJvbWlzZSh2MTc5KTsKICAgICAgICAgICAgICAg
IGNvbnN0IHYxODQgPSBNYXRoOwogICAgICAgICAgICAgICAgbGV0IHYxODUgPSAwOwogICAgICAg
ICAgICAgICAgY29uc3QgdjE4NiA9IDY7CiAgICAgICAgICAgICAgICBjb25zdCB2MTg4ID0gU3lt
Ym9sLmlzQ29uY2F0U3ByZWFkYWJsZTsKICAgICAgICAgICAgICAgIGNvbnN0IHYxOTMgPSBbV2Vh
a1NldCwxMDAwMDAwMDAwMDAwLjAsMTAwMDAwMDAwMDAwMC4wLDEwMDAwMDAwMDAwMDAuMCwxMDAw
MDAwMDAwMDAwLjBdOwogICAgICAgICAgICAgICAgY29uc3QgdjE5NCA9IFt2MTQzXTsKICAgICAg
ICAgICAgICAgIGxldCB2MTk1ID0gWyI4YkJqRTBVWFdHIiwtMTM3MTU2NDM2MiwiOGJCakUwVVhX
RyIsLTEzNzE1NjQzNjIsMTAwMDAwMDAwMDAwMC4wXTsKICAgICAgICAgICAgICAgIGNvbnN0IHYx
OTYgPSB7X19wcm90b19fOjEwMDAwMDAwMDAwMDAuMCxhOi0xMzcxNTY0MzYyLGNvbnN0cnVjdG9y
Oi0xMzcxNTY0MzYyLGQ6djE5NCxsZW5ndGg6LTEzNzE1NjQzNjIsdG9TdHJpbmc6djE5NCx2YWx1
ZU9mOldlYWtTZXR9OwogICAgICAgICAgICAgICAgY29uc3QgdjE5NyA9IGAKICAgICAgICAgICAg
ICAgICAgICBpZiAodjE5MykgewogICAgICAgICAgICAgICAgICAgICAgICB2MTk1ID0gdjE5NDsK
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICB2MTk2OwogICAgICAgICAgICAgICAgYDsKICAgICAgICAgICAgICAgIGNv
bnN0IHYxOTkgPSBldmFsKHYxOTcpOwogICAgICAgICAgICAgICAgY29uc3QgdjIwMCA9IHYxODUr
KzsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCB2MjAyID0gWy05OTI1NzMuODA1NTEw
NzksLTk5MjU3My44MDU1MTA3OSwtOTkyNTczLjgwNTUxMDc5LC05OTI1NzMuODA1NTEwNzksLTk5
MjU3My44MDU1MTA3OV07CiAgICAgICAgICAgIGZ1bmN0aW9uIHYyMDModjIwNCx2MjA1LHYyMDYs
djIwNykgewogICAgICAgICAgICAgICAgY29uc3QgdjIwOCA9IDIxNTI1OTA1OTQ7CiAgICAgICAg
ICAgIH0KICAgICAgICAgICAgZm9yIChsZXQgdjIxMiA9IDA7IHYyMTIgPCAxMDA7IHYyMTIrKykg
ewogICAgICAgICAgICAgICAgY29uc3QgdjIxMyA9IHthOnYyMDIsZDp2MjEyLHZhbHVlT2Y6djIw
MyxuOnYxNDN9OwogICAgICAgICAgICAgICAgY29uc3QgdjIxNiA9IHYxNjAodjE0MSx2MjEzLHRy
dWUsMW4pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnN0IHYyMTggPSBPYmplY3QoKTsK
ICAgICAgICAgICAgY29uc3QgdjIxOSA9IHthOnYxNDAsZDotNzI4MzMwLjMyNjUxOTc4NjMsbTp2
MTU0LG46T2JqZWN0fTsKICAgICAgICAgICAgZm9yIChsZXQgdjIyNSA9IDA7IHYyMjUgPCAxMDA7
IHYyMjUrKykgewogICAgICAgICAgICAgICAgY29uc3QgdjIyNiA9IHYxNjAodjIwMix2MjE5LGZh
bHNlLDEyN24pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnN0IHYyMjcgPSB2MTI3Kys7
CiAgICAgICAgfQogICAgICAgIGNvbnN0IHYyMjkgPSBuZXcgQXJyYXlCdWZmZXIoMyk7CiAgICAg
ICAgY29uc3QgdjIzMCA9IHY5Myh2NjgsdjY3LHYyMjksLTEwMDAwMDAuMCk7CiAgICAgICAgY29u
c3QgdjIzMSA9IDA7CiAgICAgICAgY29uc3QgdjIzMiA9IDEwMDsKICAgICAgICBjb25zdCB2MjMz
ID0gMTsKICAgICAgICBjb25zdCB2MjM0ID0gdjIyOS5zbGljZSgzLDMpOwogICAgICAgIGNvbnN0
IHYyMzYgPSBbLTk3ODc0My40MDkxMjQ3MTEsLTk3ODc0My40MDkxMjQ3MTEsLTk3ODc0My40MDkx
MjQ3MTEsLTk3ODc0My40MDkxMjQ3MTFdOwogICAgICAgIGNvbnN0IHYyMzcgPSAtMjk0MTIzMzMx
NDsKICAgICAgICBmdW5jdGlvbiB2MjM4KHYyMzksdjI0MCx2MjQxLHYyNDIpIHsKICAgICAgICAg
ICAgY29uc3QgdjI0MyA9IE9iamVjdDsKICAgICAgICB9CiAgICAgICAgY29uc3QgdjI0NSA9IE9i
amVjdCgpOwogICAgICAgIGNvbnN0IHYyNDYgPSAwOwogICAgICAgIGNvbnN0IHYyNDggPSBPYmpl
Y3QoKTsKICAgICAgICBmdW5jdGlvbiB2MjUzKHYyNTQsdjI1NSx2MjU2LHYyNTcsdjI1OCkgewog
ICAgICAgIH0KICAgICAgICBjb25zdCB2MjYyID0gW1JlZmxlY3QsLTkwMDcxOTkyNTQ3NDA5OTMs
InN5bWJvbCJdOwogICAgICAgIGNvbnN0IHYyNjMgPSAwOwogICAgICAgIGNvbnN0IHYyNjQgPSA0
OwogICAgICAgIGZ1bmN0aW9uIHYyNjUodjI2Nix2MjY3KSB7CiAgICAgICAgfQogICAgICAgIGNv
bnN0IHYyNjggPSBPYmplY3Q7CiAgICAgICAgZnVuY3Rpb24gdjI2OSh2MjcwLHYyNzEsdjI3Mix2
MjczKSB7CiAgICAgICAgICAgIGxldCB2Mjc0ID0gLTkwMDcxOTkyNTQ3NDA5OTM7CiAgICAgICAg
ICAgIGZ1bmN0aW9uIHYyNzUodjI3Nix2Mjc3KSB7CiAgICAgICAgICAgIH0KICAgICAgICAgICAg
Zm9yIChsZXQgdjI4MSA9IDA7IHYyODEgPCAxMDA7IHYyODErKykgewogICAgICAgICAgICAgICAg
Y29uc3QgdjI4MiA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIHYyNzQgPSBPYmplY3Q7CiAg
ICAgICAgICAgICAgICBjb25zdCB2MjgzID0gT2JqZWN0OwogICAgICAgICAgICAgICAgY29uc3Qg
djI4NCA9IDEyODsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjb25zdCB2Mjg1ID0g
Wy4uLiJmdW5jdGlvbiIsdjI1MyxPYmplY3QsLi4udjI2MixSZWZsZWN0LC05MDA3MTk5MjU0NzQw
OTkzLHYyNjldOwogICAgICAgIGNvbnN0IHYyODYgPSBPYmplY3QoKTsKICAgICAgICBjb25zdCB2
Mjg5ID0gWy05MzAyODcuOTM1MzUwMzUzNSwtOTMwMjg3LjkzNTM1MDM1MzVdOwogICAgICAgIGNv
bnN0IHYyOTEgPSB2Mjg5WyJzb3J0Il0oZ2MpOwogICAgICAgIGZ1bmN0aW9uIHYyOTIoKSB7CiAg
ICAgICAgfQogICAgICAgIGZ1bmN0aW9uIHYyOTQodjI5NSx2Mjk2LHYyOTcpIHsKICAgICAgICB9
CiAgICAgICAgZnVuY3Rpb24gdjI5OCh2Mjk5LHYzMDApIHsKICAgICAgICAgICAgY29uc3QgdjMw
MSA9IE9iamVjdDsKICAgICAgICB9CiAgICAgICAgZm9yIChsZXQgdjMwNSA9IDA7IHYzMDUgPCAx
MDA7IHYzMDUrKykgewogICAgICAgICAgICBjb25zdCB2MzA2ID0ge2M6InN5bWJvbCIsbjp2Mjk4
LHA6djQyfTsKICAgICAgICAgICAgY29uc3QgdjMwNyA9IGNsYXNzIFYzMDcgZXh0ZW5kcyB2Mjk4
IHsKICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yKHYzMDksdjMxMCx2MzExKSB7CiAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICBzZXRJbnQzMih2MzEzLHYzMTQsdjMxNSkgewogICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICB9OwogICAgICAgICAgICBjb25zdCB2MzE2ID0gdHlw
ZW9mIFN5bWJvbDsKICAgICAgICAgICAgY29uc3QgdjMyMCA9IFstMjE0NzQ4MzY0OSw1LDM2Mzg5
LDM2Mzg5LDVdOwogICAgICAgICAgICBjb25zdCB2MzIxID0gWzUsdjI5NCw1LFdlYWtNYXAsV2Vh
a01hcCwic3ltYm9sIix2MzIwLFdlYWtNYXAsdjMyMF07CiAgICAgICAgICAgIGNvbnN0IHYzMjMg
PSB2MzE2ID09ICJiaWdpbnQiOwogICAgICAgICAgICBjb25zdCB2MzI0ID0gNDkyNTUzMTUyOwog
ICAgICAgICAgICBmdW5jdGlvbiB2MzI2KHYzMjcpIHsKICAgICAgICAgICAgICAgIGNvbnN0IHYz
MzIgPSBbLTg1MDM2Mi45Mjc1MzQzODQ5LC04NTAzNjIuOTI3NTM0Mzg0OSwtODUwMzYyLjkyNzUz
NDM4NDksLTg1MDM2Mi45Mjc1MzQzODQ5XTsKICAgICAgICAgICAgICAgIGNvbnN0IHYzMzMgPSBb
MzM5NDg0OTUyOCwzMzk0ODQ5NTI4LDMzOTQ4NDk1MjgsMzM5NDg0OTUyOCwzMzk0ODQ5NTI4XTsK
ICAgICAgICAgICAgICAgIGNvbnN0IHYzMzQgPSBbTmFOLC04NTAzNjIuOTI3NTM0Mzg0OSxOYU4s
MzM5NDg0OTUyOCwtODUwMzYyLjkyNzUzNDM4NDksdjMzMiwzMzk0ODQ5NTI4LCJzeW1ib2wiLCJz
eW1ib2wiXTsKICAgICAgICAgICAgICAgIGNvbnN0IHYzMzUgPSB7YTozMzk0ODQ5NTI4LGNvbnN0
cnVjdG9yOnYzMzMsZDozMzk0ODQ5NTI4LGU6LTg1MDM2Mi45Mjc1MzQzODQ5LHZhbHVlT2Y6TmFO
fTsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHYzMzYodjMzNyx2MzM4KSB7CiAgICAgICAgICAg
ICAgICAgICAgY29uc3QgdjMzOSA9IDA7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdjM0MCA9
IDQ7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdjM0MSA9IDE7CiAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICBmdW5jdGlvbiB2MzQyKHYzNDMsdjM0NCx2MzQ1LHYzNDYpIHsKICAg
ICAgICAgICAgICAgICAgICB2MzQ1ICY9IHYzMzY7CiAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICBjb25zdCB2MzUxID0gWzIuMjIwNDQ2MDQ5MjUwMzEzZS0xNiwyLjIyMDQ0NjA0OTI1
MDMxM2UtMTZdOwogICAgICAgICAgICAgICAgY29uc3QgdjM1MiA9IFt2MzUxLDIuMjIwNDQ2MDQ5
MjUwMzEzZS0xNix2MzUxLHYzNTEsMi4yMjA0NDYwNDkyNTAzMTNlLTE2LDIuMjIwNDQ2MDQ5MjUw
MzEzZS0xNl07CiAgICAgICAgICAgICAgICBjb25zdCB2MzUzID0ge2E6ZXZhbCxkOnYzNTEsbGVu
Z3RoOiJLNVRCdVpmeDM3Iix2YWx1ZU9mOnYzNTJ9OwogICAgICAgICAgICAgICAgZm9yIChjb25z
dCB2MzU0IGluIHYzNTMpIHsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNvbnN0
IHYzNTUgPSAtMTQ3MzkzMDAxNzsKICAgICAgICAgICAgICAgIGNvbnN0IHYzNTcgPSBbLTk0MzAw
OC4zNDc4NzIzODE3LC05NDMwMDguMzQ3ODcyMzgxNywtOTQzMDA4LjM0Nzg3MjM4MTcsLTk0MzAw
OC4zNDc4NzIzODE3LC05NDMwMDguMzQ3ODcyMzgxN107CiAgICAgICAgICAgICAgICBjb25zdCB2
MzU4ID0gRXZhbEVycm9yOwogICAgICAgICAgICAgICAgZm9yIChsZXQgdjM2MiA9IDA7IHYzNjIg
PCAxMDA7IHYzNjIrKykgewogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZnVuY3Rp
b24gdjM2Myh2MzY0LHYzNjUsdjM2NikgewogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgY29uc3QgdjM2OCA9IG5ldyBVaW50MzJBcnJheSgxMjgpOwogICAgICAgICAgICAgICAgY29u
c3QgdjM2OSA9IDA7CiAgICAgICAgICAgICAgICBjb25zdCB2MzcwID0gMTAwOwogICAgICAgICAg
ICAgICAgY29uc3QgdjM3MSA9IDE7CiAgICAgICAgICAgICAgICBjb25zdCB2MzcyID0gMDsKICAg
ICAgICAgICAgICAgIGNvbnN0IHYzNzcgPSBbNzA5MjkwLjIwMTE5MTYwMjUsNzA5MjkwLjIwMTE5
MTYwMjUsNzA5MjkwLjIwMTE5MTYwMjVdOwogICAgICAgICAgICAgICAgY29uc3QgdjM3OCA9IFs4
XTsKICAgICAgICAgICAgICAgIGNvbnN0IHYzNzkgPSBbdjM3Nyx2Mzc4LCJmdW5jdGlvbiIsNzA5
MjkwLjIwMTE5MTYwMjUsOCx2Mzc3LDgsdjM3OCw4LCJmdW5jdGlvbiJdOwogICAgICAgICAgICAg
ICAgY29uc3QgdjM4MSA9IFJlZ0V4cFsiYmluZCJdKHYzNzkpOwogICAgICAgICAgICAgICAgY29u
c3QgdjM4MiA9ICJudW1iZXIiOwogICAgICAgICAgICAgICAgZnVuY3Rpb24gdjM4Myh2Mzg0LHYz
ODUsdjM4Nix2Mzg3LHYzODgpIHsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNv
bnN0IHYzODkgPSBSZWdFeHAoMTI4KTsKICAgICAgICAgICAgICAgIGNvbnN0IHYzOTEgPSBbLTcx
MjMwNy4wNjA5OTE0MzE5XTsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICB9
IGNhdGNoKHYzOTIpIHsKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB2Mzk1KHYzOTYsdjM5
Nyx2Mzk4KSB7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGZ1bmN0
aW9uIHYzOTkodjQwMCx2NDAxLHY0MDIsdjQwMyx2NDA0KSB7CiAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgIGNvbnN0IHY0MDUgPSB7Yjp2Mzk5LGM6Im51bWJlciIsbjp2
Mzk5LHA6djM5NX07CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdjQwNiA9IHY0MDUgPDwgMTA7
CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdjQwOCA9IG5ldyBPYmplY3QoKTsKICAgICAgICAg
ICAgICAgICAgICB2NDA4LmNvbnN0cnVjdG9yID0gdjQwNjsKICAgICAgICAgICAgICAgIH0gZmlu
YWxseSB7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjb25zdCB2NDA5ID0gT2Jq
ZWN0OwogICAgICAgICAgICAgICAgY29uc3QgdjQxMCA9IFdlYWtNYXA7CiAgICAgICAgICAgICAg
ICBjb25zdCB2NDExID0gbmV3IHYzODEoKTsKICAgICAgICAgICAgICAgIGNvbnN0IHY0MTIgPSB1
bmRlZmluZWQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24gdjQxMyh2NDE0LHY0
MTUsdjQxNix2NDE3KSB7CiAgICAgICAgICAgICAgICBjb25zdCB2NDIyID0gLUluZmluaXR5Owog
ICAgICAgICAgICAgICAgY29uc3QgdjQyMyA9IFstMzAzNS40MDg2ODU1OTUyNjMsdjQyMix2NDE3
LHY0MTddOwogICAgICAgICAgICAgICAgY29uc3QgdjQyNCA9IFstMTI4LC0xMjgsLTEyOCwtMTI4
LC0xMjhdOwogICAgICAgICAgICAgICAgY29uc3QgdjQyNSA9IFt2NDI0LHYzOCwtMzAzNS40MDg2
ODU1OTUyNjMsIlU4QWw0ZUFTOU0iLC0xMjgsdjQyMyxTeW1ib2wsdjQyNCx2NDIyXTsKICAgICAg
ICAgICAgICAgIGNvbnN0IHY0MjYgPSB7X19wcm90b19fOnYzMjAsYTp2MzIxLGM6djQyMixjb25z
dHJ1Y3Rvcjp2NDI1LGU6djQyNSx2YWx1ZU9mOk9TUkV4aXR9OwogICAgICAgICAgICAgICAgY29u
c3QgdjQyNyA9IE1hdGguY2VpbCh2NDE3KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25z
dCB2NDI5ID0gLTM0MTM5OS45OTA0MDAwMjM3NjsKICAgICAgICAgICAgY29uc3QgdjQzMCA9IFtd
OwogICAgICAgICAgICBjb25zdCB2NDMyID0gdjQxMygxNjM0NDEyMjI1biwwLDE2MzQ0MTIyMjVu
LDIyODg4MS42MzU0OTk5NDcyNCk7CiAgICAgICAgfQogICAgICAgIGZvciAobGV0IHY0MzYgPSAw
OyB2NDM2IDwgMTAwOyB2NDM2KyspIHsKICAgICAgICAgICAgY29uc3QgdjQzOCA9IFsxMjhdOwog
ICAgICAgICAgICBjb25zdCB2NDQwID0gWy01LjAsLTUuMF07CiAgICAgICAgICAgIGZ1bmN0aW9u
IHY0NDEodjQ0Mix2NDQzLHY0NDQsdjQ0NSx2NDQ2KSB7CiAgICAgICAgICAgICAgICBjb25zdCB2
NDQ4ID0gWzEyOCwxMjgsMTI4LDEyOF07CiAgICAgICAgICAgICAgICBjb25zdCB2NDQ5ID0gT2Jq
ZWN0OwogICAgICAgICAgICAgICAgZnVuY3Rpb24gdjQ1MCh2NDUxLHY0NTIsdjQ1Myx2NDU0KSB7
CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHY0NTI7CiAgICAgICAgICAgICAgICAgICAgY29u
c3QgdjQ1NSA9IFN5bWJvbDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAg
ICAgICBjb25zdCB2NDU2ID0ge19fcHJvdG9fXzoic3ltYm9sIixiOnY0NDAsbTp2NDQxfTsKICAg
ICAgICB9CiAgICAgICAgY29uc3QgdjQ1NyA9IE9iamVjdDsKICAgICAgICBicmVhazsKICAgIGNh
c2Ugdjg6CiAgICB9Cn0KY29uc3QgdjQ2MSA9IFtOYU4sMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDhd
Owpjb25zdCB2NDYzID0gbmV3IE9iamVjdCgpOwpjb25zdCB2NDY2ID0gWzEwMDAuMCwxMDAwLjAs
MTAwMC4wLDEwMDAuMF07CmNvbnN0IHY0NjcgPSBbMjU3LDI1NywyNTcsMjU3LDI1N107CmZ1bmN0
aW9uIHY0NjgodjQ2OSx2NDcwLHY0NzEsdjQ3Mix2NDczKSB7CiAgICBjb25zdCB2NDc0ID0gT2Jq
ZWN0OwogICAgY29uc3QgdjQ4MiA9IFsxMDAwLjBdOwogICAgY29uc3QgdjQ4MyA9IFsyMTQ3NDgz
NjQ4LDIxNDc0ODM2NDgsMjE0NzQ4MzY0OF07CiAgICBjb25zdCB2NDg0ID0gW3Y0NjYsMjE0NzQ4
MzY0OCwxMDAwLjAsInVuc2NvcGFibGUiLCJ1bnNjb3BhYmxlIix2NDgyLDIxNDc0ODM2NDhdOwog
ICAgY29uc3QgdjQ4NSA9IHtfX3Byb3RvX186MjE0NzQ4MzY0OCxjOnY0ODQsZDp2NDg0LGU6UmVn
RXhwLGxlbmd0aDp2NDgzfTsKICAgIGZ1bmN0aW9uIHY0ODYodjQ4Nyx2NDg4LHY0ODksdjQ5MCkg
ewogICAgICAgIGNvbnN0IHY0OTIgPSB7Z2V0OnY0ODYsc2V0OnY0Njh9OwogICAgICAgIGNvbnN0
IHY0OTQgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkodjQ4NSwtNTUzMzQxMzE5LHY0OTIpOwogICAg
fQogICAgY29uc3QgdjQ5NiA9IFs1LjAsNS4wLDUuMCw1LjAsNS4wXTsKICAgIGNvbnN0IHY0OTcg
PSBbLTMwNzkxNDUyODUsLTMwNzkxNDUyODUsLTMwNzkxNDUyODUsLTMwNzkxNDUyODUsLTMwNzkx
NDUyODVdOwogICAgY29uc3QgdjQ5OCA9IFt2NDk2LHY0OTcsVHlwZUVycm9yLCJ3YVdDdkFrb1M0
IiwtMzA3OTE0NTI4NSwtMzA3OTE0NTI4NSwtMzA3OTE0NTI4NSx2NDk2XTsKICAgIGNvbnN0IHY0
OTkgPSB7Yzp2NDk4LGU6djQ5Nyx2YWx1ZU9mOnY0OTZ9OwogICAgY29uc3QgdjUwMiA9IFszMjYx
MTQwMjE5LDMyNjExNDAyMTksMzI2MTE0MDIxOSwzMjYxMTQwMjE5XTsKICAgIGNvbnN0IHY1MDMg
PSBbUmVmZXJlbmNlRXJyb3IsdjUwMiwzMjYxMTQwMjE5LFJlZmVyZW5jZUVycm9yLHY1MDJdOwog
ICAgZnVuY3Rpb24gdjUwNCh2NTA1LHY1MDYpIHsKICAgICAgICBjb25zdCB2NTA4ID0gMC4wOwog
ICAgICAgIGNvbnN0IHY1MDkgPSBbNTM2ODcwOTEyLDUzNjg3MDkxMiw1MzY4NzA5MTJdOwogICAg
ICAgIGNvbnN0IHY1MTAgPSAwOwogICAgICAgIGNvbnN0IHY1MTEgPSAxMDA7CiAgICAgICAgY29u
c3QgdjUxMiA9IDE7CiAgICAgICAgY29uc3QgdjUxMyA9IDA7CiAgICB9CiAgICBmdW5jdGlvbiB2
NTE0KHY1MTUsdjUxNix2NTE3LHY1MTgsdjUxOSkgewogICAgfQogICAgY29uc3QgdjUyMCA9IHth
OnY1MTQsYzp2NTA0LG46djUxNCxvOnY1MTR9OwogICAgY29uc3QgdjUyMSA9IE9iamVjdDsKICAg
IGZ1bmN0aW9uIHY1MjIodjUyMyx2NTI0LHY1MjUsdjUyNikgewogICAgICAgIGNvbnN0IHY1Mjkg
PSBbLTE4ODIzMS4wODA5NzYyNzY2NiwtMTg4MjMxLjA4MDk3NjI3NjY2LC0xODgyMzEuMDgwOTc2
Mjc2NjYsLTE4ODIzMS4wODA5NzYyNzY2NiwtMTg4MjMxLjA4MDk3NjI3NjY2XTsKICAgICAgICBj
b25zdCB2NTMwID0gWzEyOCwxMjgsMTI4LDEyOF07CiAgICAgICAgY29uc3QgdjUzMSA9IFsxMjhd
OwogICAgICAgIGZ1bmN0aW9uIHY1MzIodjUzMyx2NTM0LHY1MzUpIHsKICAgICAgICB9CiAgICAg
ICAgZnVuY3Rpb24gdjUzNyh2NTM4LHY1MzksdjU0MCkgewogICAgICAgIH0KICAgICAgICBmdW5j
dGlvbiB2NTQxKHY1NDIpIHsKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gdjU0Myh2NTQ0LHY1
NDUsdjU0Nix2NTQ3KSB7CiAgICAgICAgfQogICAgICAgIGNvbnN0IHY1NTAgPSB7YTp2NTMwLGQ6
djUyOSxuOnY1MzIsbzp2NTQzfTsKICAgICAgICBjb25zdCB2NTUxID0ge2Q6djUyOSxlOjAsbjpP
YmplY3QscDp2NTQxfTsKICAgICAgICBjb25zdCB2NTUyID0ge2E6MSxjOnY1NTEsbTp2NTQxLG46
djUzN307CiAgICAgICAgY29uc3QgdjU1MyA9IHY1NDModjU1MCx2NTMwLHY1NTIsdjUzMSk7CiAg
ICB9CiAgICBjb25zdCB2NTU2ID0gWzI5NTc1OTE3MjEsNjU1MzcsNjU1MzddOwogICAgY29uc3Qg
djU1NyA9IDA7CiAgICBjb25zdCB2NTU4ID0gMTAwOwogICAgY29uc3QgdjU1OSA9IDE7CiAgICBj
b25zdCB2NTYwID0gMDsKICAgIGNvbnN0IHY1NjEgPSAxMDA7CiAgICBjb25zdCB2NTYyID0gMTsK
ICAgIGxldCB2NTYzID0gMDsKICAgIGNvbnN0IHY1NjQgPSA5OwogICAgY29uc3QgdjU2NSA9IHY1
NjMrKzsKICAgIGNvbnN0IHY1NjcgPSBPYmplY3QoKTsKICAgIGNvbnN0IHY1NjggPSB2NTIyKHY1
MDMsdjU2Nyx2NDk3LCJ3YVdDdkFrb1M0Iik7CiAgICBjb25zdCB2NTcwID0ge2E6djQ5OCxiOnRy
dWUsbTp2NTA0LG46djUxNH07CiAgICBjb25zdCB2NTcxID0ge2I6dHJ1ZSxjOnY1MjAsbTp2NTIy
LG46UmVmZXJlbmNlRXJyb3J9OwogICAgY29uc3QgdjU3MiA9IHtlOnY0OTksbTp2NTIyLHA6djUy
Mn07CiAgICBjb25zdCB2NTczID0gMTAwMDAwMDAwMC4wOwogICAgY29uc3QgdjU3NCA9IE9iamVj
dDsKICAgIGNvbnN0IHY1NzUgPSBBcnJheTsKICAgIGNvbnN0IHY1NzYgPSAyMzEwMjMwODYxOwog
ICAgY29uc3QgdjU3NyA9IG5vSW5saW5lOwogICAgY29uc3QgdjU3OCA9IHVuZGVmaW5lZDsKICAg
IGNvbnN0IHY1NzkgPSB1bmRlZmluZWQ7CiAgICBjb25zdCB2NTgwID0gT2JqZWN0OwogICAgY29u
c3QgdjU4MSA9IDAuMDsKICAgIGNvbnN0IHY1ODIgPSB1bmRlZmluZWQ7CiAgICBjb25zdCB2NTgz
ID0gdW5kZWZpbmVkOwogICAgY29uc3QgdjU4NCA9IDk7CiAgICBjb25zdCB2NTg2ID0gMjU1Owog
ICAgZnVuY3Rpb24gdjU4Nyh2NTg4LHY1ODksdjU5MCx2NTkxLHY1OTIpIHsKICAgIH0KICAgIGNv
bnN0IHY1OTMgPSBbLTY0MzcxNi44Mzc2MzI3NjM1LC02NDM3MTYuODM3NjMyNzYzNV07CiAgICBj
b25zdCB2NTk0ID0gW3Y1OTMsLTY0MzcxNi44Mzc2MzI3NjM1XTsKICAgIGZ1bmN0aW9uIHY1OTUo
djU5Nix2NTk3LHY1OTgsdjU5OSkgewogICAgfQogICAgY29uc3QgdjYwMCA9IDE3MDA3OwogICAg
ZnVuY3Rpb24gdjYwMigpIHsKICAgIH0KICAgIGNvbnN0IHY2MDMgPSBTeW1ib2w7CiAgICBjb25z
dCB2NjA3ID0gWzI3ODEwNy41MjEwODc1MDQ0NiwyNzgxMDcuNTIxMDg3NTA0NDZdOwogICAgY29u
c3QgdjYwOCA9IFsyOTU3NTkxNzIxLDMsMywzXTsKICAgIGNvbnN0IHY2MDkgPSBbdjQ5NiwiZ2xv
YmFsIl07CiAgICBjb25zdCB2NjEwID0ge19fcHJvdG9fXzp2NjA3LGE6djYwOSxiOjMsYzp2NjA4
LGU6djU1NixsZW5ndGg6djYwOX07CiAgICBmdW5jdGlvbiB2NjExKHY2MTIsdjYxMyx2NjE0LHY2
MTUpIHsKICAgIH0KICAgIGNvbnN0IHY2MTYgPSB7bzp2NTk1fTsKICAgIGNvbnN0IHY2MTcgPSB7
Yzp2NTk0LGU6djYxNixtOnY1ODcscDpBcnJheX07CiAgICBjb25zdCB2NjE4ID0ge2Q6LTY0Mzcx
Ni44Mzc2MzI3NjM1LGU6djYxNixvOnY2MDIscDp2NjExfTsKICAgIGNvbnN0IHY2MTkgPSAwOwog
ICAgY29uc3QgdjYyMCA9IDA7CiAgICBjb25zdCB2NjIxID0gMTAwOwogICAgY29uc3QgdjYyMiA9
IDE7CiAgICBjb25zdCB2NjI2ID0gWy0yLjBdOwogICAgY29uc3QgdjYyNyA9IFstNDAwMTg2ODQ2
OSwtNDAwMTg2ODQ2OSwtNDAwMTg2ODQ2OV07CiAgICBjb25zdCB2NjI4ID0gWy00MDAxODY4NDY5
LHY2MjcsLTQwMDE4Njg0NjksdjYyNixJbnQzMkFycmF5LHY2MjcsSW50MzJBcnJheSx2NjI2LHY2
MjZdOwogICAgY29uc3QgdjYyOSA9IE9iamVjdDsKICAgIGNvbnN0IHY2MzMgPSBbUmVmbGVjdCwt
OTAwNzE5OTI1NDc0MDk5Mywic3ltYm9sIl07CiAgICBjb25zdCB2NjM0ID0gT2JqZWN0OwogICAg
Y29uc3QgdjYzNSA9IDA7CiAgICBjb25zdCB2NjM2ID0gMTAwOwogICAgY29uc3QgdjYzNyA9IDE7
CiAgICBjb25zdCB2NjQxID0gWzkwMDcxOTkyNTQ3NDA5OTIsOTAwNzE5OTI1NDc0MDk5Miw5MDA3
MTk5MjU0NzQwOTkyLDkwMDcxOTkyNTQ3NDA5OTJdOwogICAgZnVuY3Rpb24gdjY0Mih2NjQzLHY2
NDQpIHsKICAgIH0KICAgIGZ1bmN0aW9uIHY2NDYoKSB7CiAgICB9CiAgICBmdW5jdGlvbiB2NjQ3
KHY2NDgsdjY0OSx2NjUwKSB7CiAgICB9CiAgICBmdW5jdGlvbiB2NjUxKHY2NTIsdjY1Myx2NjU0
LHY2NTUpIHsKICAgIH0KICAgIGZ1bmN0aW9uIHY2NTYodjY1Nyx2NjU4LHY2NTksdjY2MCkgewog
ICAgfQogICAgbGV0IHY2NjEgPSAwOwogICAgY29uc3QgdjY2MiA9IDEwMDsKICAgIGNvbnN0IHY2
NjMgPSAxOwogICAgY29uc3QgdjY2NCA9IDA7CiAgICBjb25zdCB2NjY1ID0gMTAwOwogICAgY29u
c3QgdjY2NiA9IDE7CiAgICBjb25zdCB2NjY4ID0gT2JqZWN0KCk7CiAgICBjb25zdCB2NjY5ID0g
K09iamVjdDsKICAgIGNvbnN0IHY2NzAgPSB7Yjp2NjY5LGQ6Mi4yMjA0NDYwNDkyNTAzMTNlLTE2
LG86T2JqZWN0LHA6T2JqZWN0fTsKICAgIGNvbnN0IHY2NzEgPSB7YTp2NjcwLG06djY0NyxvOnY2
NDZ9OwogICAgY29uc3QgdjY3MyA9IHY2NTYodjY3MSx0cnVlLCJNQVhfVkFMVUUiLDIuMjIwNDQ2
MDQ5MjUwMzEzZS0xNik7CiAgICBjb25zdCB2Njc1ID0ge2I6djY0MixkOnY2NDYsbjp2NjQ3fTsK
ICAgIGNvbnN0IHY2NzYgPSB2NjUxKC00Mjk0OTY3Mjk1bix2Njc1LHY2NDEsIk1BWF9WQUxVRSIp
OwogICAgY29uc3QgdjY3NyA9IDA7CiAgICBjb25zdCB2Njc4ID0gMTAwOwogICAgY29uc3QgdjY4
MCA9IFsxMDAwLjAsMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDgsMjc4MTA3LjUyMTA4NzUwNDQ2XTsK
ICAgIGNvbnN0IHY2ODEgPSB1bmRlZmluZWQ7CiAgICBjb25zdCB2NjgyID0gdW5kZWZpbmVkOwog
ICAgY29uc3QgdjY4MyA9IDI7CiAgICBjb25zdCB2Njg0ID0gdjY2MSsrOwogICAgY29uc3QgdjY4
NSA9IHY2NTEoLTQyOTQ5NjcyOTVuLHY2NzUsdjY0MSwiTUFYX1ZBTFVFIik7CiAgICBjb25zdCB2
Njg2ID0gdjY1Nih2NjcxLHRydWUsIk1BWF9WQUxVRSIsMi4yMjA0NDYwNDkyNTAzMTNlLTE2KTsK
ICAgIGNvbnN0IHY2ODcgPSBPYmplY3Q7CiAgICBjb25zdCB2Njg4ID0gT2JqZWN0OwogICAgY29u
c3QgdjY4OSA9IHY2MjgubGVuZ3RoOwogICAgY29uc3QgdjY5MCA9IDI3NjQ3NzkzNTQ7CiAgICBj
b25zdCB2NjkyID0gNzM0MDY5LjgxMjIyMjMxNjI7CiAgICBmdW5jdGlvbiB2NjkzKHY2OTQsdjY5
NSkgewogICAgfQogICAgZnVuY3Rpb24gdjY5Nih2Njk3KSB7CiAgICB9CiAgICBjb25zdCB2Njk5
ID0gT2JqZWN0KCk7CiAgICBjb25zdCB2NzAwID0gMDsKICAgIGNvbnN0IHY3MDMgPSBPYmplY3Qo
KTsKICAgIGNvbnN0IHY3MDUgPSBPYmplY3QoKTsKICAgIGNvbnN0IHY3MDYgPSB7Yzp2NzA1LGU6
T2JqZWN0LHA6T2JqZWN0fTsKICAgIGNvbnN0IHY3MDcgPSB1bmRlZmluZWQ7CiAgICBjb25zdCB2
NzA4ID0gdW5kZWZpbmVkOwogICAgY29uc3QgdjcwOSA9IHtkOnY2OTYsZTpPYmplY3QsbjpmaWF0
SW50NTIsbzpmaWF0SW50NTJ9OwogICAgY29uc3QgdjcxMCA9IHtiOjEwMCxjOnY3MDksbzpmaWF0
SW50NTJ9OwogICAgY29uc3QgdjcxMSA9IHtjOnY3MDksZTpPYmplY3QscDp2NjkzfTsKICAgIGNv
bnN0IHY3MTIgPSAwOwogICAgY29uc3QgdjcxNiA9IFsxMDAwMDAwMDAwMDAwLjAsMTAwMDAwMDAw
MDAwMC4wLDEwMDAwMDAwMDAwMDAuMCwxMDAwMDAwMDAwMDAwLjAsMTAwMDAwMDAwMDAwMC4wXTsK
ICAgIGNvbnN0IHY3MTcgPSBbUHJvbWlzZSwxMDAwMDAwMDAwMDAwLjAsInN5bWJvbCIsUHJvbWlz
ZSwxMDAwMDAwMDAwMDAwLjAsdjcxNl07CiAgICBjb25zdCB2NzE4ID0gdjcxNy50b0xvY2FsZVN0
cmluZzsKICAgIGZ1bmN0aW9uKiB2NzE5KHY3MjAsdjcyMSx2NzIyLHY3MjMpIHsKICAgIH0KICAg
IGNvbnN0IHY3MjUgPSBbMC4wLDAuMF07Cn0KY29uc3QgdjcyNiA9IE9iamVjdDsKY29uc3Qgdjcy
OCA9IE9iamVjdCgpOwpjb25zdCB2NzI5ID0gMDsKY29uc3QgdjczMCA9IDEwMDsKY29uc3Qgdjcz
MSA9IDE7CmZ1bmN0aW9uIHY3MzIodjczMyx2NzM0KSB7Cn0KY29uc3QgdjczNiA9IG5ldyBQcm9t
aXNlKHY3MzIpOwpjb25zdCB2NzM3ID0gdjQ2OCgxMDAwLjAsdjQ2NyxQcm9taXNlLHY3MzYsdjcy
OCk7CnY0NjMuYyA9IHY0NjE7CmNvbnN0IHY3MzkgPSB7YTpOYU4sZToyMTQ3NDgzNjQ3bixtOnYx
NCxuOnY5fTsKY29uc3Qgdjc0MCA9IHYxNCh2NzM5LHY1LHY1LHY0NjEpOwpjb25zdCB2NzQxID0g
dW5kZWZpbmVkOwpjb25zdCB2NzQzID0gWzAsdjE0XTsKY29uc3Qgdjc0NCA9ICJRZkd3dnMzYUVr
Ii5yZXBsYWNlQWxsOwpjb25zdCB2NzQ1ID0gUmVmbGVjdC5hcHBseSh2NzQ0LHY2LHY3NDMpOwpn
YygpOwp9Cm5vREZHKG1haW4pOwpub0ZUTChtYWluKTsKbWFpbigpOwovLyBTVERFUlI6Ci8vIEFT
U0VSVElPTiBGQUlMRUQ6IGl0ZXIgIT0gbWFwLm1fZnJvbVRodW5rLmVuZCgpCi8vIC9ob21lL2J1
aWxkZXIvd2Via2l0L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmgoNzMpIDog
dHlwZW5hbWUgTWFwVHlwZTo6S2V5VHlwZSBKU0M6OkZUTDo6a2V5Rm9yVGh1bmsoTWFwVHlwZSAm
LCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SklUVGh1bmtQdHJUYWc+KSBbTWFwVHlwZSA9IEpTQzo6
RlRMOjpUaHVua01hcDxKU0M6OkZUTDo6U2xvd1BhdGhDYWxsS2V5Pl0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433707</attachid>
            <date>2021-07-16 14:56:33 -0700</date>
            <delta_ts>2021-07-16 16:40:08 -0700</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>24083</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODAwMDEpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDIxLTA3LTE2ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIEdyYWIgdGhlIGxvY2sgaW4gRlRMOjpUaHVua3M6OmtleUZvclNsb3dQ
YXRoQ2FsbFRodW5rCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjc5ODgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgwNjI3OTAxPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL3RodW5rcy1o
YXNoLW1hcC1zaG91bGQtZ3JhYi1sb2NrLmpzOiBBZGRlZC4KKwogMjAyMS0wNy0xNiAgWXVzdWtl
IFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFJlZ0V4cDo6ZHVt
cFRvU3RyZWFtIG11c3Qgbm90IHJlZiBTdHJpbmdzIHNpbmNlIGl0IGlzIGNhbGxlZCBjb25jdXJy
ZW50bHkKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL3RodW5rcy1oYXNoLW1hcC1zaG91bGQtZ3JhYi1s
b2NrLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3RodW5rcy1oYXNoLW1hcC1zaG91
bGQtZ3JhYi1sb2NrLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvc3RyZXNzL3RodW5rcy1o
YXNoLW1hcC1zaG91bGQtZ3JhYi1sb2NrLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDgx
IEBACitmdW5jdGlvbiBtYWluKCkgeworICAgIGNvbnN0IHY0ID0gWzUzMzAuMDA2MDg4ODA0Njg2
XTsKKyAgICBjb25zdCB2NSA9IFstMTgwOTg1OTA4NSwtMTgwOTg1OTA4NSwtMTgwOTg1OTA4NV07
CisgICAgY29uc3QgdjYgPSBbbm9JbmxpbmUsNTMzMC4wMDYwODg4MDQ2ODYsLTE4MDk4NTkwODUs
bm9JbmxpbmUsbm9JbmxpbmUsbm9JbmxpbmUsdjRdOworICAgIGNvbnN0IHY3ID0ge307CisgICAg
Y29uc3QgdjggPSB2Ny5fX3Byb3RvX187CisgICAgZnVuY3Rpb24gdjkodjEwLHYxMSx2MTIpIHsK
KyAgICAgICAgY29uc3QgdjEzID0gMTsKKyAgICB9CisgICAgZnVuY3Rpb24gdjE0KHYxNSx2MTYs
djE3LHYxOCkgeworICAgICAgICBmdW5jdGlvbiB2MTkodjIwLHYyMSx2MjIpIHsKKyAgICAgICAg
ICAgIGNvbnN0IHYyMyA9IGlzQ29uY2F0U3ByZWFkYWJsZTsKKyAgICAgICAgfQorICAgICAgICBj
b25zdCB2MjQgPSB2OSB8IHYxNjsKKyAgICAgICAgc3dpdGNoICh2MTgpIHsKKyAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgY29uc3QgdjI1ID0gMDsKKyAgICAgICAgICAgICAg
ICBjb25zdCB2MjYgPSAyOworICAgICAgICAgICAgICAgIGNvbnN0IHYyNyA9IDE7CisgICAgICAg
ICAgICAgICAgY29uc3QgdjMwID0ge2NvbnN0cnVjdG9yOjUzMzAuMDA2MDg4ODA0Njg2LGU6SW50
MTZBcnJheSxsZW5ndGg6LTEwMDAuMH07CisgICAgICAgICAgICAgICAgY29uc3QgdjM2ID0gWzY0
NTYyLjU3OTA1NjU1OTU5Niw2NDU2Mi41NzkwNTY1NTk1OTYsNjQ1NjIuNTc5MDU2NTU5NTk2XTsK
KyAgICAgICAgICAgICAgICBjb25zdCB2MzggPSBbMTAwMDAwMDAwMDAwMC4wLDEwMDAwMDAwMDAw
MDAuMF07CisgICAgICAgICAgICAgICAgY29uc3QgdjM5ID0gWzEuNzk3NjkzMTM0ODYyMzE1N2Ur
MzA4LDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4LDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4XTsKKyAg
ICAgICAgICAgICAgICBjb25zdCB2NDAgPSBbLTIxNDc0ODM2NDksLTIxNDc0ODM2NDksLTIxNDc0
ODM2NDldOworICAgICAgICAgICAgICAgIGNvbnN0IHY0MSA9IFtTeW1ib2wsInN5bWJvbCIsLTIx
NDc0ODM2NDksdjM5XTsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiB2NDIodjQzLHY0NCkgewor
ICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB2NDUodjQ2LHY0NykgeworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHY0OCA9IDA7CisgICAgICAgICAg
ICAgICAgICAgIGxldCB2NDkgPSAtNDQ5NjM4MDk1OworICAgICAgICAgICAgICAgICAgICBjb25z
dCB2NTYgPSBbMTA5ODMwNTgzNSwxMDk4MzA1ODM1LDEwOTgzMDU4MzVdOworICAgICAgICAgICAg
ICAgICAgICBjb25zdCB2NTcgPSBbMy4wLHY1NixVaW50OEFycmF5LDEwMCx2MzYsMy4wLHY0MCwx
MDk4MzA1ODM1LCJmOGJ2emJ6Q2VMIl07CisgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHY2
MCA9IDA7IHY2MCA8IDc7IHY2MCsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2NDkgKj0g
InN5bWJvbCI7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgY29u
c3QgdjYxID0gNjU1Mzc7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHY2MiA9IDEwMDsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY29uc3QgdjY3ID0gWy0xMDAwMDAwLjAs
LTEwMDAwMDAuMF07CisgICAgICAgICAgICAgICAgY29uc3QgdjY4ID0gWzNdOworICAgICAgICAg
ICAgICAgIGNvbnN0IHY2OSA9IFtwbGFjZWhvbGRlciwiRVBTSUxPTiIsMywzLDMsIkVQU0lMT04i
LHY2OCwtMTAwMDAwMC4wLC0xMDAwMDAwLjAsdjY3XTsKKyAgICAgICAgICAgICAgICBjb25zdCB2
NzAgPSB7YTotMTAwMDAwMC4wLGM6djY3LGNvbnN0cnVjdG9yOjMsbGVuZ3RoOjMsdG9TdHJpbmc6
cGxhY2Vob2xkZXJ9OworICAgICAgICAgICAgICAgIGNvbnN0IHY3MSA9IHtiOiJFUFNJTE9OIixj
b25zdHJ1Y3Rvcjp2NzAsdG9TdHJpbmc6cGxhY2Vob2xkZXIsdmFsdWVPZjp2NzB9OworICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uIHY3Mih2NzMsdjc0LHY3NSkgeworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdjc0OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gIkVQU0lMT04iOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmdW5jdGlvbiB2Nzcodjc4LC4uLnY3OSkg
eworICAgICAgICAgICAgICAgICAgICAiOTAwNzE5OTI1NDc0MDk5MSIudG9TdHJpbmcgPSB2Nzg7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHY4MCh2ODEsdjgy
LHY4MykgeworICAgICAgICAgICAgICAgICAgICBjb25zdCB2ODUgPSBPYmplY3QoKTsKKyAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgdjg2ID0gT2JqZWN0OworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBmdW5jdGlvbiB2ODcodjg4LHY4OSkgeworICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2OTIgPSBbLTkwMDcxOTkyNTQ3NDA5OTMsLTkwMDcxOTkyNTQ3NDA5OTMsLTkwMDcx
OTkyNTQ3NDA5OTMsUmVmbGVjdF07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGZ1bmN0aW9uIHY5Myh2OTQsdjk1LHY5Nix2OTcpIHsKKyAgICAgICAgICAgICAgICAgICAgdjk1
ICo9IC0xMDAwMDAwLjA7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHY5OSA9IE1hdGguc2lu
aCh2ODcpOworICAgICAgICAgICAgICAgICAgICBjb25zdCB2MTAwID0gdjk2Wy05MDA3MTk5MjU0
NzQwOTkzXTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgdjEwMSA9IHY5OSBpbiB2Njk7Cisg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHYxMDQgPSBbMjE0NzQ4MzY0OCwyMTQ3NDgzNjQ4XTsK
KyAgICAgICAgICAgICAgICAgICAgbGV0IHYxMDcgPSBBcnJheSgxKTsKKyAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdjExMyA9IFsic3ltYm9sIl07CisgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHYxMTQgPSBbUHJveHksdjExMyxVaW50MTZBcnJheSwzOTA1NDk0NTU4LHYxMTMsIjY1NTM2Iix2
MTA3LDMsdjExMyx2MTA0XTsKKyAgICAgICAgICAgICAgICAgICAgIjkwMDcxOTkyNTQ3NDA5OTEi
LmMgPSBQcm94eTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgdjExOCA9IFszMjg0NzQuNDIw
ODU1NzgzMTZdOworICAgICAgICAgICAgICAgICAgICBjb25zdCB2MTE5ID0gWzEwNzM3NDE4MjQs
MTA3Mzc0MTgyNCwxMDczNzQxODI0XTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgdjEyMCA9
IFt2MTE4LDEwNzM3NDE4MjQsdjExOCx2MTE5LGVkZW5HQyx2MTE4XTsKKyAgICAgICAgICAgICAg
ICAgICAgdjEwNyB8PSB2MTE5OworICAgICAgICAgICAgICAgICAgICBsZXQgdjEyMSA9IDA7Cisg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHYxMjIgPSA3OworICAgICAgICAgICAgICAgICAgICB2
MTIwWy02Mjg2NTUwNzRdID0gdjY3OworICAgICAgICAgICAgICAgICAgICBjb25zdCB2MTIzID0g
djEyMSsrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjb25zdCB2MTI0ID0g
djg3ICoqIHY4MDsKKyAgICAgICAgICAgICAgICBjb25zdCB2MTI2ID0gTWF0aC5jb3MoIkVQU0lM
T04iKTsKKyAgICAgICAgICAgICAgICBsZXQgdjEyNyA9IDA7CisgICAgICAgICAgICAgICAgZm9y
IChsZXQgdjEzMCA9IHYxMjc7IHYxMzAgPCAxMDA7IHYxMzArKykgeworICAgICAgICAgICAgICAg
ICAgICBjb25zdCB2MTMyID0gbmV3IEFycmF5QnVmZmVyKDEpOworICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2MTMzID0gdjkzKHY2OSx2NjksdjEzMiwtMTAwMDAwMC4wKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgd2hpbGUgKHYxMjcgPCB2MTI3KSB7CisgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHYxMzQgPSB2NjkuX19wcm90b19fOworICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2MTM5ID0gWy03MjgzMzAuMzI2NTE5Nzg2M107CisgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHYxNDAgPSBbMTQyOTIyNTE5MiwxNDI5MjI1MTkyLDE0MjkyMjUxOTIsMTQyOTIyNTE5
MiwxNDI5MjI1MTkyXTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgdjE0MSA9IFstNzI4MzMw
LjMyNjUxOTc4NjMsImFyZ3VtZW50cyJdOworICAgICAgICAgICAgICAgICAgICBjb25zdCB2MTQy
ID0ge19fcHJvdG9fXzpTeW50YXhFcnJvcixhOi03MjgzMzAuMzI2NTE5Nzg2MyxiOjE0MjkyMjUx
OTIsYzotNzI4MzMwLjMyNjUxOTc4NjMsZTp2MTQxLGxlbmd0aDp2MTM5fTsKKyAgICAgICAgICAg
ICAgICAgICAgZnVuY3Rpb24gdjE0Myh2MTQ0LHYxNDUsdjE0NikgeworICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgdjE0OCA9IFstMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDgsLTIuMjI1MDcz
ODU4NTA3MjAxNGUtMzA4XTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHYxNTAgPSAt
SW5maW5pdHk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2MTUxID0gW3YxNTAsdjE1
MCx2MTUwLHYxNTBdOworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdjE1MiA9IFstNDA5
NiwtNDA5NiwtNDA5NiwtNDA5NiwtNDA5Nl07CisgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB2MTUzID0ge2NvbnN0cnVjdG9yOnYxNTIsZDp2MTUxLGU6LTQwOTYsdG9TdHJpbmc6djE1Mn07
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdjE1
NCh2MTU1LHYxNTYsdjE1NykgeworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdjE1OSA9
IFstNC4wXTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBmdW5j
dGlvbiB2MTYwKHYxNjEsdjE2Mix2MTYzLHYxNjQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHYxNjUgPSB7Li4uLTcyODMzMC4zMjY1MTk3ODYzfTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHYxNjYgPSBPYmplY3Q7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB2MTcwID0gW1JlZmxlY3QsLTkwMDcxOTkyNTQ3NDA5OTMsInN5bWJvbCJdOworICAgICAgICAg
ICAgICAgICAgICAgICAgZnVuY3Rpb24gdjE3MSh2MTcyLHYxNzMpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB2MTc0ID0gInN5bWJvbCIoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHYxNzYgPSB7Yjp2MTcwLGU6
T2JqZWN0LG06T2JqZWN0LHA6T2JqZWN0fTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0
aW9uIHYxNzcodjE3OCkgeworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAgICAgZnVuY3Rpb24gdjE3OSh2MTgwLHYxODEpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2MTc3ID0gdjE4MDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHYxODMgPSBQcm9taXNlKHYxNzkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgdjE4NCA9IE1hdGg7CisgICAgICAgICAgICAgICAgICAgICAg
ICBsZXQgdjE4NSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2MTg2ID0gNjsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHYxODggPSBTeW1ib2wuaXNDb25jYXRTcHJl
YWRhYmxlOworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdjE5MyA9IFtXZWFrU2V0LDEw
MDAwMDAwMDAwMDAuMCwxMDAwMDAwMDAwMDAwLjAsMTAwMDAwMDAwMDAwMC4wLDEwMDAwMDAwMDAw
MDAuMF07CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2MTk0ID0gW3YxNDNdOworICAg
ICAgICAgICAgICAgICAgICAgICAgbGV0IHYxOTUgPSBbIjhiQmpFMFVYV0ciLC0xMzcxNTY0MzYy
LCI4YkJqRTBVWFdHIiwtMTM3MTU2NDM2MiwxMDAwMDAwMDAwMDAwLjBdOworICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgdjE5NiA9IHtfX3Byb3RvX186MTAwMDAwMDAwMDAwMC4wLGE6LTEz
NzE1NjQzNjIsY29uc3RydWN0b3I6LTEzNzE1NjQzNjIsZDp2MTk0LGxlbmd0aDotMTM3MTU2NDM2
Mix0b1N0cmluZzp2MTk0LHZhbHVlT2Y6V2Vha1NldH07CisgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2MTk3ID0gYAorICAgICAgICAgICAgICAgICAgICBpZiAodjE5MykgeworICAgICAg
ICAgICAgICAgICAgICAgICAgdjE5NSA9IHYxOTQ7CisgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgdjE5NjsKKyAg
ICAgICAgICAgICAgICBgOworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdjE5OSA9IGV2
YWwodjE5Nyk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2MjAwID0gdjE4NSsrOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHYyMDIgPSBb
LTk5MjU3My44MDU1MTA3OSwtOTkyNTczLjgwNTUxMDc5LC05OTI1NzMuODA1NTEwNzksLTk5MjU3
My44MDU1MTA3OSwtOTkyNTczLjgwNTUxMDc5XTsKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rp
b24gdjIwMyh2MjA0LHYyMDUsdjIwNix2MjA3KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB2MjA4ID0gMjE1MjU5MDU5NDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICBmb3IgKGxldCB2MjEyID0gMDsgdjIxMiA8IDEwMDsgdjIxMisrKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB2MjEzID0ge2E6djIwMixkOnYyMTIsdmFsdWVPZjp2
MjAzLG46djE0M307CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2MjE2ID0gdjE2MCh2
MTQxLHYyMTMsdHJ1ZSwxbik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdjIxOCA9IE9iamVjdCgpOworICAgICAgICAgICAgICAgICAgICBjb25zdCB2
MjE5ID0ge2E6djE0MCxkOi03MjgzMzAuMzI2NTE5Nzg2MyxtOnYxNTQsbjpPYmplY3R9OworICAg
ICAgICAgICAgICAgICAgICBmb3IgKGxldCB2MjI1ID0gMDsgdjIyNSA8IDEwMDsgdjIyNSsrKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2MjI2ID0gdjE2MCh2MjAyLHYyMTksZmFs
c2UsMTI3bik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgY29u
c3QgdjIyNyA9IHYxMjcrKzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY29u
c3QgdjIyOSA9IG5ldyBBcnJheUJ1ZmZlcigzKTsKKyAgICAgICAgICAgICAgICBjb25zdCB2MjMw
ID0gdjkzKHY2OCx2NjcsdjIyOSwtMTAwMDAwMC4wKTsKKyAgICAgICAgICAgICAgICBjb25zdCB2
MjMxID0gMDsKKyAgICAgICAgICAgICAgICBjb25zdCB2MjMyID0gMTAwOworICAgICAgICAgICAg
ICAgIGNvbnN0IHYyMzMgPSAxOworICAgICAgICAgICAgICAgIGNvbnN0IHYyMzQgPSB2MjI5LnNs
aWNlKDMsMyk7CisgICAgICAgICAgICAgICAgY29uc3QgdjIzNiA9IFstOTc4NzQzLjQwOTEyNDcx
MSwtOTc4NzQzLjQwOTEyNDcxMSwtOTc4NzQzLjQwOTEyNDcxMSwtOTc4NzQzLjQwOTEyNDcxMV07
CisgICAgICAgICAgICAgICAgY29uc3QgdjIzNyA9IC0yOTQxMjMzMzE0OworICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uIHYyMzgodjIzOSx2MjQwLHYyNDEsdjI0MikgeworICAgICAgICAgICAgICAg
ICAgICBjb25zdCB2MjQzID0gT2JqZWN0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBjb25zdCB2MjQ1ID0gT2JqZWN0KCk7CisgICAgICAgICAgICAgICAgY29uc3QgdjI0NiA9
IDA7CisgICAgICAgICAgICAgICAgY29uc3QgdjI0OCA9IE9iamVjdCgpOworICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uIHYyNTModjI1NCx2MjU1LHYyNTYsdjI1Nyx2MjU4KSB7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGNvbnN0IHYyNjIgPSBbUmVmbGVjdCwtOTAwNzE5OTI1
NDc0MDk5Mywic3ltYm9sIl07CisgICAgICAgICAgICAgICAgY29uc3QgdjI2MyA9IDA7CisgICAg
ICAgICAgICAgICAgY29uc3QgdjI2NCA9IDQ7CisgICAgICAgICAgICAgICAgZnVuY3Rpb24gdjI2
NSh2MjY2LHYyNjcpIHsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY29uc3Qg
djI2OCA9IE9iamVjdDsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiB2MjY5KHYyNzAsdjI3MSx2
MjcyLHYyNzMpIHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHYyNzQgPSAtOTAwNzE5OTI1NDc0
MDk5MzsKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdjI3NSh2Mjc2LHYyNzcpIHsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCB2MjgxID0g
MDsgdjI4MSA8IDEwMDsgdjI4MSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2
MjgyID0gdW5kZWZpbmVkOworICAgICAgICAgICAgICAgICAgICAgICAgdjI3NCA9IE9iamVjdDsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHYyODMgPSBPYmplY3Q7CisgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB2Mjg0ID0gMTI4OworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNvbnN0IHYyODUgPSBbLi4uImZ1bmN0
aW9uIix2MjUzLE9iamVjdCwuLi52MjYyLFJlZmxlY3QsLTkwMDcxOTkyNTQ3NDA5OTMsdjI2OV07
CisgICAgICAgICAgICAgICAgY29uc3QgdjI4NiA9IE9iamVjdCgpOworICAgICAgICAgICAgICAg
IGNvbnN0IHYyODkgPSBbLTkzMDI4Ny45MzUzNTAzNTM1LC05MzAyODcuOTM1MzUwMzUzNV07Cisg
ICAgICAgICAgICAgICAgY29uc3QgdjI5MSA9IHYyODlbInNvcnQiXShnYyk7CisgICAgICAgICAg
ICAgICAgZnVuY3Rpb24gdjI5MigpIHsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgZnVuY3Rpb24gdjI5NCh2Mjk1LHYyOTYsdjI5NykgeworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBmdW5jdGlvbiB2Mjk4KHYyOTksdjMwMCkgeworICAgICAgICAgICAgICAg
ICAgICBjb25zdCB2MzAxID0gT2JqZWN0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBmb3IgKGxldCB2MzA1ID0gMDsgdjMwNSA8IDEwMDsgdjMwNSsrKSB7CisgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHYzMDYgPSB7Yzoic3ltYm9sIixuOnYyOTgscDp2NDJ9OworICAgICAg
ICAgICAgICAgICAgICBjb25zdCB2MzA3ID0gY2xhc3MgVjMwNyBleHRlbmRzIHYyOTggeworICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3IodjMwOSx2MzEwLHYzMTEpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNldEludDMyKHYz
MTMsdjMxNCx2MzE1KSB7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHYzMTYgPSB0eXBlb2YgU3ltYm9s
OworICAgICAgICAgICAgICAgICAgICBjb25zdCB2MzIwID0gWy0yMTQ3NDgzNjQ5LDUsMzYzODks
MzYzODksNV07CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHYzMjEgPSBbNSx2Mjk0LDUsV2Vh
a01hcCxXZWFrTWFwLCJzeW1ib2wiLHYzMjAsV2Vha01hcCx2MzIwXTsKKyAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdjMyMyA9IHYzMTYgPT0gImJpZ2ludCI7CisgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHYzMjQgPSA0OTI1NTMxNTI7CisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHYz
MjYodjMyNykgeworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdjMzMiA9IFstODUwMzYy
LjkyNzUzNDM4NDksLTg1MDM2Mi45Mjc1MzQzODQ5LC04NTAzNjIuOTI3NTM0Mzg0OSwtODUwMzYy
LjkyNzUzNDM4NDldOworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdjMzMyA9IFszMzk0
ODQ5NTI4LDMzOTQ4NDk1MjgsMzM5NDg0OTUyOCwzMzk0ODQ5NTI4LDMzOTQ4NDk1MjhdOworICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdjMzNCA9IFtOYU4sLTg1MDM2Mi45Mjc1MzQzODQ5
LE5hTiwzMzk0ODQ5NTI4LC04NTAzNjIuOTI3NTM0Mzg0OSx2MzMyLDMzOTQ4NDk1MjgsInN5bWJv
bCIsInN5bWJvbCJdOworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdjMzNSA9IHthOjMz
OTQ4NDk1MjgsY29uc3RydWN0b3I6djMzMyxkOjMzOTQ4NDk1MjgsZTotODUwMzYyLjkyNzUzNDM4
NDksdmFsdWVPZjpOYU59OworICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdjMzNih2
MzM3LHYzMzgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2MzM5ID0gMDsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2MzQwID0gNDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB2MzQxID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHYzNDIodjM0Myx2MzQ0LHYzNDUs
djM0NikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYzNDUgJj0gdjMzNjsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHYzNTEg
PSBbMi4yMjA0NDYwNDkyNTAzMTNlLTE2LDIuMjIwNDQ2MDQ5MjUwMzEzZS0xNl07CisgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB2MzUyID0gW3YzNTEsMi4yMjA0NDYwNDkyNTAzMTNlLTE2
LHYzNTEsdjM1MSwyLjIyMDQ0NjA0OTI1MDMxM2UtMTYsMi4yMjA0NDYwNDkyNTAzMTNlLTE2XTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHYzNTMgPSB7YTpldmFsLGQ6djM1MSxsZW5n
dGg6Iks1VEJ1WmZ4MzciLHZhbHVlT2Y6djM1Mn07CisgICAgICAgICAgICAgICAgICAgICAgICBm
b3IgKGNvbnN0IHYzNTQgaW4gdjM1MykgeworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdjM1NSA9IC0xNDczOTMwMDE3OworICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgdjM1NyA9IFstOTQzMDA4LjM0Nzg3MjM4MTcsLTk0MzAwOC4z
NDc4NzIzODE3LC05NDMwMDguMzQ3ODcyMzgxNywtOTQzMDA4LjM0Nzg3MjM4MTcsLTk0MzAwOC4z
NDc4NzIzODE3XTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHYzNTggPSBFdmFsRXJy
b3I7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCB2MzYyID0gMDsgdjM2MiA8IDEw
MDsgdjM2MisrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgICAgICBmdW5jdGlvbiB2MzYzKHYzNjQsdjM2NSx2MzY2KSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2MzY4ID0gbmV3IFVpbnQz
MkFycmF5KDEyOCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2MzY5ID0gMDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHYzNzAgPSAxMDA7CisgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB2MzcxID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHYz
NzIgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdjM3NyA9IFs3MDkyOTAuMjAx
MTkxNjAyNSw3MDkyOTAuMjAxMTkxNjAyNSw3MDkyOTAuMjAxMTkxNjAyNV07CisgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB2Mzc4ID0gWzhdOworICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgdjM3OSA9IFt2Mzc3LHYzNzgsImZ1bmN0aW9uIiw3MDkyOTAuMjAxMTkxNjAyNSw4LHYz
NzcsOCx2Mzc4LDgsImZ1bmN0aW9uIl07CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2
MzgxID0gUmVnRXhwWyJiaW5kIl0odjM3OSk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB2MzgyID0gIm51bWJlciI7CisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB2Mzgz
KHYzODQsdjM4NSx2Mzg2LHYzODcsdjM4OCkgeworICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdjM4OSA9IFJlZ0V4cCgxMjgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdjM5MSA9IFstNzEyMzA3LjA2MDk5MTQzMTldOworICAg
ICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0
Y2godjM5MikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHYzOTUodjM5
Nix2Mzk3LHYzOTgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdjM5OSh2NDAwLHY0MDEsdjQwMix2NDAzLHY0MDQp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdjQwNSA9IHtiOnYzOTksYzoibnVtYmVyIixuOnYzOTkscDp2Mzk1fTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2NDA2ID0gdjQwNSA8PCAxMDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2NDA4ID0gbmV3IE9iamVjdCgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHY0MDguY29uc3RydWN0b3IgPSB2NDA2OworICAgICAgICAg
ICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHY0MDkgPSBPYmplY3Q7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB2NDEwID0gV2Vha01hcDsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHY0MTEgPSBuZXcgdjM4MSgpOworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
djQxMiA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICBmdW5jdGlvbiB2NDEzKHY0MTQsdjQxNSx2NDE2LHY0MTcpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHY0MjIgPSAtSW5maW5pdHk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2NDIzID0gWy0zMDM1LjQwODY4NTU5NTI2Myx2NDIyLHY0MTcsdjQxN107CisgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB2NDI0ID0gWy0xMjgsLTEyOCwtMTI4LC0xMjgsLTEy
OF07CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2NDI1ID0gW3Y0MjQsdjM4LC0zMDM1
LjQwODY4NTU5NTI2MywiVThBbDRlQVM5TSIsLTEyOCx2NDIzLFN5bWJvbCx2NDI0LHY0MjJdOwor
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdjQyNiA9IHtfX3Byb3RvX186djMyMCxhOnYz
MjEsYzp2NDIyLGNvbnN0cnVjdG9yOnY0MjUsZTp2NDI1LHZhbHVlT2Y6T1NSRXhpdH07CisgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB2NDI3ID0gTWF0aC5jZWlsKHY0MTcpOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHY0MjkgPSAtMzQxMzk5
Ljk5MDQwMDAyMzc2OworICAgICAgICAgICAgICAgICAgICBjb25zdCB2NDMwID0gW107CisgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHY0MzIgPSB2NDEzKDE2MzQ0MTIyMjVuLDAsMTYzNDQxMjIy
NW4sMjI4ODgxLjYzNTQ5OTk0NzI0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgZm9yIChsZXQgdjQzNiA9IDA7IHY0MzYgPCAxMDA7IHY0MzYrKykgeworICAgICAgICAgICAg
ICAgICAgICBjb25zdCB2NDM4ID0gWzEyOF07CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHY0
NDAgPSBbLTUuMCwtNS4wXTsKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdjQ0MSh2NDQy
LHY0NDMsdjQ0NCx2NDQ1LHY0NDYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHY0
NDggPSBbMTI4LDEyOCwxMjgsMTI4XTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHY0
NDkgPSBPYmplY3Q7CisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB2NDUwKHY0NTEs
djQ1Mix2NDUzLHY0NTQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdjQ1
MjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2NDU1ID0gU3ltYm9sOworICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHY0NTYgPSB7X19wcm90b19fOiJzeW1ib2wiLGI6djQ0MCxtOnY0NDF9
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjb25zdCB2NDU3ID0gT2JqZWN0
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSB2ODoKKyAgICAgICAg
fQorICAgIH0KKyAgICBjb25zdCB2NDYxID0gW05hTiwyLjIyNTA3Mzg1ODUwNzIwMTRlLTMwOF07
CisgICAgY29uc3QgdjQ2MyA9IG5ldyBPYmplY3QoKTsKKyAgICBjb25zdCB2NDY2ID0gWzEwMDAu
MCwxMDAwLjAsMTAwMC4wLDEwMDAuMF07CisgICAgY29uc3QgdjQ2NyA9IFsyNTcsMjU3LDI1Nywy
NTcsMjU3XTsKKyAgICBmdW5jdGlvbiB2NDY4KHY0NjksdjQ3MCx2NDcxLHY0NzIsdjQ3Mykgewor
ICAgICAgICBjb25zdCB2NDc0ID0gT2JqZWN0OworICAgICAgICBjb25zdCB2NDgyID0gWzEwMDAu
MF07CisgICAgICAgIGNvbnN0IHY0ODMgPSBbMjE0NzQ4MzY0OCwyMTQ3NDgzNjQ4LDIxNDc0ODM2
NDhdOworICAgICAgICBjb25zdCB2NDg0ID0gW3Y0NjYsMjE0NzQ4MzY0OCwxMDAwLjAsInVuc2Nv
cGFibGUiLCJ1bnNjb3BhYmxlIix2NDgyLDIxNDc0ODM2NDhdOworICAgICAgICBjb25zdCB2NDg1
ID0ge19fcHJvdG9fXzoyMTQ3NDgzNjQ4LGM6djQ4NCxkOnY0ODQsZTpSZWdFeHAsbGVuZ3RoOnY0
ODN9OworICAgICAgICBmdW5jdGlvbiB2NDg2KHY0ODcsdjQ4OCx2NDg5LHY0OTApIHsKKyAgICAg
ICAgICAgIGNvbnN0IHY0OTIgPSB7Z2V0OnY0ODYsc2V0OnY0Njh9OworICAgICAgICAgICAgY29u
c3QgdjQ5NCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2NDg1LC01NTMzNDEzMTksdjQ5Mik7Cisg
ICAgICAgIH0KKyAgICAgICAgY29uc3QgdjQ5NiA9IFs1LjAsNS4wLDUuMCw1LjAsNS4wXTsKKyAg
ICAgICAgY29uc3QgdjQ5NyA9IFstMzA3OTE0NTI4NSwtMzA3OTE0NTI4NSwtMzA3OTE0NTI4NSwt
MzA3OTE0NTI4NSwtMzA3OTE0NTI4NV07CisgICAgICAgIGNvbnN0IHY0OTggPSBbdjQ5Nix2NDk3
LFR5cGVFcnJvciwid2FXQ3ZBa29TNCIsLTMwNzkxNDUyODUsLTMwNzkxNDUyODUsLTMwNzkxNDUy
ODUsdjQ5Nl07CisgICAgICAgIGNvbnN0IHY0OTkgPSB7Yzp2NDk4LGU6djQ5Nyx2YWx1ZU9mOnY0
OTZ9OworICAgICAgICBjb25zdCB2NTAyID0gWzMyNjExNDAyMTksMzI2MTE0MDIxOSwzMjYxMTQw
MjE5LDMyNjExNDAyMTldOworICAgICAgICBjb25zdCB2NTAzID0gW1JlZmVyZW5jZUVycm9yLHY1
MDIsMzI2MTE0MDIxOSxSZWZlcmVuY2VFcnJvcix2NTAyXTsKKyAgICAgICAgZnVuY3Rpb24gdjUw
NCh2NTA1LHY1MDYpIHsKKyAgICAgICAgICAgIGNvbnN0IHY1MDggPSAwLjA7CisgICAgICAgICAg
ICBjb25zdCB2NTA5ID0gWzUzNjg3MDkxMiw1MzY4NzA5MTIsNTM2ODcwOTEyXTsKKyAgICAgICAg
ICAgIGNvbnN0IHY1MTAgPSAwOworICAgICAgICAgICAgY29uc3QgdjUxMSA9IDEwMDsKKyAgICAg
ICAgICAgIGNvbnN0IHY1MTIgPSAxOworICAgICAgICAgICAgY29uc3QgdjUxMyA9IDA7CisgICAg
ICAgIH0KKyAgICAgICAgZnVuY3Rpb24gdjUxNCh2NTE1LHY1MTYsdjUxNyx2NTE4LHY1MTkpIHsK
KyAgICAgICAgfQorICAgICAgICBjb25zdCB2NTIwID0ge2E6djUxNCxjOnY1MDQsbjp2NTE0LG86
djUxNH07CisgICAgICAgIGNvbnN0IHY1MjEgPSBPYmplY3Q7CisgICAgICAgIGZ1bmN0aW9uIHY1
MjIodjUyMyx2NTI0LHY1MjUsdjUyNikgeworICAgICAgICAgICAgY29uc3QgdjUyOSA9IFstMTg4
MjMxLjA4MDk3NjI3NjY2LC0xODgyMzEuMDgwOTc2Mjc2NjYsLTE4ODIzMS4wODA5NzYyNzY2Niwt
MTg4MjMxLjA4MDk3NjI3NjY2LC0xODgyMzEuMDgwOTc2Mjc2NjZdOworICAgICAgICAgICAgY29u
c3QgdjUzMCA9IFsxMjgsMTI4LDEyOCwxMjhdOworICAgICAgICAgICAgY29uc3QgdjUzMSA9IFsx
MjhdOworICAgICAgICAgICAgZnVuY3Rpb24gdjUzMih2NTMzLHY1MzQsdjUzNSkgeworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZnVuY3Rpb24gdjUzNyh2NTM4LHY1MzksdjU0MCkgeworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZnVuY3Rpb24gdjU0MSh2NTQyKSB7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBmdW5jdGlvbiB2NTQzKHY1NDQsdjU0NSx2NTQ2LHY1NDcpIHsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbnN0IHY1NTAgPSB7YTp2NTMwLGQ6djUyOSxuOnY1
MzIsbzp2NTQzfTsKKyAgICAgICAgICAgIGNvbnN0IHY1NTEgPSB7ZDp2NTI5LGU6MCxuOk9iamVj
dCxwOnY1NDF9OworICAgICAgICAgICAgY29uc3QgdjU1MiA9IHthOjEsYzp2NTUxLG06djU0MSxu
OnY1Mzd9OworICAgICAgICAgICAgY29uc3QgdjU1MyA9IHY1NDModjU1MCx2NTMwLHY1NTIsdjUz
MSk7CisgICAgICAgIH0KKyAgICAgICAgY29uc3QgdjU1NiA9IFsyOTU3NTkxNzIxLDY1NTM3LDY1
NTM3XTsKKyAgICAgICAgY29uc3QgdjU1NyA9IDA7CisgICAgICAgIGNvbnN0IHY1NTggPSAxMDA7
CisgICAgICAgIGNvbnN0IHY1NTkgPSAxOworICAgICAgICBjb25zdCB2NTYwID0gMDsKKyAgICAg
ICAgY29uc3QgdjU2MSA9IDEwMDsKKyAgICAgICAgY29uc3QgdjU2MiA9IDE7CisgICAgICAgIGxl
dCB2NTYzID0gMDsKKyAgICAgICAgY29uc3QgdjU2NCA9IDk7CisgICAgICAgIGNvbnN0IHY1NjUg
PSB2NTYzKys7CisgICAgICAgIGNvbnN0IHY1NjcgPSBPYmplY3QoKTsKKyAgICAgICAgY29uc3Qg
djU2OCA9IHY1MjIodjUwMyx2NTY3LHY0OTcsIndhV0N2QWtvUzQiKTsKKyAgICAgICAgY29uc3Qg
djU3MCA9IHthOnY0OTgsYjp0cnVlLG06djUwNCxuOnY1MTR9OworICAgICAgICBjb25zdCB2NTcx
ID0ge2I6dHJ1ZSxjOnY1MjAsbTp2NTIyLG46UmVmZXJlbmNlRXJyb3J9OworICAgICAgICBjb25z
dCB2NTcyID0ge2U6djQ5OSxtOnY1MjIscDp2NTIyfTsKKyAgICAgICAgY29uc3QgdjU3MyA9IDEw
MDAwMDAwMDAuMDsKKyAgICAgICAgY29uc3QgdjU3NCA9IE9iamVjdDsKKyAgICAgICAgY29uc3Qg
djU3NSA9IEFycmF5OworICAgICAgICBjb25zdCB2NTc2ID0gMjMxMDIzMDg2MTsKKyAgICAgICAg
Y29uc3QgdjU3NyA9IG5vSW5saW5lOworICAgICAgICBjb25zdCB2NTc4ID0gdW5kZWZpbmVkOwor
ICAgICAgICBjb25zdCB2NTc5ID0gdW5kZWZpbmVkOworICAgICAgICBjb25zdCB2NTgwID0gT2Jq
ZWN0OworICAgICAgICBjb25zdCB2NTgxID0gMC4wOworICAgICAgICBjb25zdCB2NTgyID0gdW5k
ZWZpbmVkOworICAgICAgICBjb25zdCB2NTgzID0gdW5kZWZpbmVkOworICAgICAgICBjb25zdCB2
NTg0ID0gOTsKKyAgICAgICAgY29uc3QgdjU4NiA9IDI1NTsKKyAgICAgICAgZnVuY3Rpb24gdjU4
Nyh2NTg4LHY1ODksdjU5MCx2NTkxLHY1OTIpIHsKKyAgICAgICAgfQorICAgICAgICBjb25zdCB2
NTkzID0gWy02NDM3MTYuODM3NjMyNzYzNSwtNjQzNzE2LjgzNzYzMjc2MzVdOworICAgICAgICBj
b25zdCB2NTk0ID0gW3Y1OTMsLTY0MzcxNi44Mzc2MzI3NjM1XTsKKyAgICAgICAgZnVuY3Rpb24g
djU5NSh2NTk2LHY1OTcsdjU5OCx2NTk5KSB7CisgICAgICAgIH0KKyAgICAgICAgY29uc3QgdjYw
MCA9IDE3MDA3OworICAgICAgICBmdW5jdGlvbiB2NjAyKCkgeworICAgICAgICB9CisgICAgICAg
IGNvbnN0IHY2MDMgPSBTeW1ib2w7CisgICAgICAgIGNvbnN0IHY2MDcgPSBbMjc4MTA3LjUyMTA4
NzUwNDQ2LDI3ODEwNy41MjEwODc1MDQ0Nl07CisgICAgICAgIGNvbnN0IHY2MDggPSBbMjk1NzU5
MTcyMSwzLDMsM107CisgICAgICAgIGNvbnN0IHY2MDkgPSBbdjQ5NiwiZ2xvYmFsIl07CisgICAg
ICAgIGNvbnN0IHY2MTAgPSB7X19wcm90b19fOnY2MDcsYTp2NjA5LGI6MyxjOnY2MDgsZTp2NTU2
LGxlbmd0aDp2NjA5fTsKKyAgICAgICAgZnVuY3Rpb24gdjYxMSh2NjEyLHY2MTMsdjYxNCx2NjE1
KSB7CisgICAgICAgIH0KKyAgICAgICAgY29uc3QgdjYxNiA9IHtvOnY1OTV9OworICAgICAgICBj
b25zdCB2NjE3ID0ge2M6djU5NCxlOnY2MTYsbTp2NTg3LHA6QXJyYXl9OworICAgICAgICBjb25z
dCB2NjE4ID0ge2Q6LTY0MzcxNi44Mzc2MzI3NjM1LGU6djYxNixvOnY2MDIscDp2NjExfTsKKyAg
ICAgICAgY29uc3QgdjYxOSA9IDA7CisgICAgICAgIGNvbnN0IHY2MjAgPSAwOworICAgICAgICBj
b25zdCB2NjIxID0gMTAwOworICAgICAgICBjb25zdCB2NjIyID0gMTsKKyAgICAgICAgY29uc3Qg
djYyNiA9IFstMi4wXTsKKyAgICAgICAgY29uc3QgdjYyNyA9IFstNDAwMTg2ODQ2OSwtNDAwMTg2
ODQ2OSwtNDAwMTg2ODQ2OV07CisgICAgICAgIGNvbnN0IHY2MjggPSBbLTQwMDE4Njg0NjksdjYy
NywtNDAwMTg2ODQ2OSx2NjI2LEludDMyQXJyYXksdjYyNyxJbnQzMkFycmF5LHY2MjYsdjYyNl07
CisgICAgICAgIGNvbnN0IHY2MjkgPSBPYmplY3Q7CisgICAgICAgIGNvbnN0IHY2MzMgPSBbUmVm
bGVjdCwtOTAwNzE5OTI1NDc0MDk5Mywic3ltYm9sIl07CisgICAgICAgIGNvbnN0IHY2MzQgPSBP
YmplY3Q7CisgICAgICAgIGNvbnN0IHY2MzUgPSAwOworICAgICAgICBjb25zdCB2NjM2ID0gMTAw
OworICAgICAgICBjb25zdCB2NjM3ID0gMTsKKyAgICAgICAgY29uc3QgdjY0MSA9IFs5MDA3MTk5
MjU0NzQwOTkyLDkwMDcxOTkyNTQ3NDA5OTIsOTAwNzE5OTI1NDc0MDk5Miw5MDA3MTk5MjU0NzQw
OTkyXTsKKyAgICAgICAgZnVuY3Rpb24gdjY0Mih2NjQzLHY2NDQpIHsKKyAgICAgICAgfQorICAg
ICAgICBmdW5jdGlvbiB2NjQ2KCkgeworICAgICAgICB9CisgICAgICAgIGZ1bmN0aW9uIHY2NDco
djY0OCx2NjQ5LHY2NTApIHsKKyAgICAgICAgfQorICAgICAgICBmdW5jdGlvbiB2NjUxKHY2NTIs
djY1Myx2NjU0LHY2NTUpIHsKKyAgICAgICAgfQorICAgICAgICBmdW5jdGlvbiB2NjU2KHY2NTcs
djY1OCx2NjU5LHY2NjApIHsKKyAgICAgICAgfQorICAgICAgICBsZXQgdjY2MSA9IDA7CisgICAg
ICAgIGNvbnN0IHY2NjIgPSAxMDA7CisgICAgICAgIGNvbnN0IHY2NjMgPSAxOworICAgICAgICBj
b25zdCB2NjY0ID0gMDsKKyAgICAgICAgY29uc3QgdjY2NSA9IDEwMDsKKyAgICAgICAgY29uc3Qg
djY2NiA9IDE7CisgICAgICAgIGNvbnN0IHY2NjggPSBPYmplY3QoKTsKKyAgICAgICAgY29uc3Qg
djY2OSA9ICtPYmplY3Q7CisgICAgICAgIGNvbnN0IHY2NzAgPSB7Yjp2NjY5LGQ6Mi4yMjA0NDYw
NDkyNTAzMTNlLTE2LG86T2JqZWN0LHA6T2JqZWN0fTsKKyAgICAgICAgY29uc3QgdjY3MSA9IHth
OnY2NzAsbTp2NjQ3LG86djY0Nn07CisgICAgICAgIGNvbnN0IHY2NzMgPSB2NjU2KHY2NzEsdHJ1
ZSwiTUFYX1ZBTFVFIiwyLjIyMDQ0NjA0OTI1MDMxM2UtMTYpOworICAgICAgICBjb25zdCB2Njc1
ID0ge2I6djY0MixkOnY2NDYsbjp2NjQ3fTsKKyAgICAgICAgY29uc3QgdjY3NiA9IHY2NTEoLTQy
OTQ5NjcyOTVuLHY2NzUsdjY0MSwiTUFYX1ZBTFVFIik7CisgICAgICAgIGNvbnN0IHY2NzcgPSAw
OworICAgICAgICBjb25zdCB2Njc4ID0gMTAwOworICAgICAgICBjb25zdCB2NjgwID0gWzEwMDAu
MCwyLjIyNTA3Mzg1ODUwNzIwMTRlLTMwOCwyNzgxMDcuNTIxMDg3NTA0NDZdOworICAgICAgICBj
b25zdCB2NjgxID0gdW5kZWZpbmVkOworICAgICAgICBjb25zdCB2NjgyID0gdW5kZWZpbmVkOwor
ICAgICAgICBjb25zdCB2NjgzID0gMjsKKyAgICAgICAgY29uc3QgdjY4NCA9IHY2NjErKzsKKyAg
ICAgICAgY29uc3QgdjY4NSA9IHY2NTEoLTQyOTQ5NjcyOTVuLHY2NzUsdjY0MSwiTUFYX1ZBTFVF
Iik7CisgICAgICAgIGNvbnN0IHY2ODYgPSB2NjU2KHY2NzEsdHJ1ZSwiTUFYX1ZBTFVFIiwyLjIy
MDQ0NjA0OTI1MDMxM2UtMTYpOworICAgICAgICBjb25zdCB2Njg3ID0gT2JqZWN0OworICAgICAg
ICBjb25zdCB2Njg4ID0gT2JqZWN0OworICAgICAgICBjb25zdCB2Njg5ID0gdjYyOC5sZW5ndGg7
CisgICAgICAgIGNvbnN0IHY2OTAgPSAyNzY0Nzc5MzU0OworICAgICAgICBjb25zdCB2NjkyID0g
NzM0MDY5LjgxMjIyMjMxNjI7CisgICAgICAgIGZ1bmN0aW9uIHY2OTModjY5NCx2Njk1KSB7Cisg
ICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gdjY5Nih2Njk3KSB7CisgICAgICAgIH0KKyAgICAg
ICAgY29uc3QgdjY5OSA9IE9iamVjdCgpOworICAgICAgICBjb25zdCB2NzAwID0gMDsKKyAgICAg
ICAgY29uc3QgdjcwMyA9IE9iamVjdCgpOworICAgICAgICBjb25zdCB2NzA1ID0gT2JqZWN0KCk7
CisgICAgICAgIGNvbnN0IHY3MDYgPSB7Yzp2NzA1LGU6T2JqZWN0LHA6T2JqZWN0fTsKKyAgICAg
ICAgY29uc3QgdjcwNyA9IHVuZGVmaW5lZDsKKyAgICAgICAgY29uc3QgdjcwOCA9IHVuZGVmaW5l
ZDsKKyAgICAgICAgY29uc3QgdjcwOSA9IHtkOnY2OTYsZTpPYmplY3QsbjpmaWF0SW50NTIsbzpm
aWF0SW50NTJ9OworICAgICAgICBjb25zdCB2NzEwID0ge2I6MTAwLGM6djcwOSxvOmZpYXRJbnQ1
Mn07CisgICAgICAgIGNvbnN0IHY3MTEgPSB7Yzp2NzA5LGU6T2JqZWN0LHA6djY5M307CisgICAg
ICAgIGNvbnN0IHY3MTIgPSAwOworICAgICAgICBjb25zdCB2NzE2ID0gWzEwMDAwMDAwMDAwMDAu
MCwxMDAwMDAwMDAwMDAwLjAsMTAwMDAwMDAwMDAwMC4wLDEwMDAwMDAwMDAwMDAuMCwxMDAwMDAw
MDAwMDAwLjBdOworICAgICAgICBjb25zdCB2NzE3ID0gW1Byb21pc2UsMTAwMDAwMDAwMDAwMC4w
LCJzeW1ib2wiLFByb21pc2UsMTAwMDAwMDAwMDAwMC4wLHY3MTZdOworICAgICAgICBjb25zdCB2
NzE4ID0gdjcxNy50b0xvY2FsZVN0cmluZzsKKyAgICAgICAgZnVuY3Rpb24qIHY3MTkodjcyMCx2
NzIxLHY3MjIsdjcyMykgeworICAgICAgICB9CisgICAgICAgIGNvbnN0IHY3MjUgPSBbMC4wLDAu
MF07CisgICAgfQorICAgIGNvbnN0IHY3MjYgPSBPYmplY3Q7CisgICAgY29uc3QgdjcyOCA9IE9i
amVjdCgpOworICAgIGNvbnN0IHY3MjkgPSAwOworICAgIGNvbnN0IHY3MzAgPSAxMDA7CisgICAg
Y29uc3QgdjczMSA9IDE7CisgICAgZnVuY3Rpb24gdjczMih2NzMzLHY3MzQpIHsKKyAgICB9Cisg
ICAgY29uc3QgdjczNiA9IG5ldyBQcm9taXNlKHY3MzIpOworICAgIGNvbnN0IHY3MzcgPSB2NDY4
KDEwMDAuMCx2NDY3LFByb21pc2UsdjczNix2NzI4KTsKKyAgICB2NDYzLmMgPSB2NDYxOworICAg
IGNvbnN0IHY3MzkgPSB7YTpOYU4sZToyMTQ3NDgzNjQ3bixtOnYxNCxuOnY5fTsKKyAgICBjb25z
dCB2NzQwID0gdjE0KHY3MzksdjUsdjUsdjQ2MSk7CisgICAgY29uc3Qgdjc0MSA9IHVuZGVmaW5l
ZDsKKyAgICBjb25zdCB2NzQzID0gWzAsdjE0XTsKKyAgICBjb25zdCB2NzQ0ID0gIlFmR3d2czNh
RWsiLnJlcGxhY2VBbGw7CisgICAgY29uc3Qgdjc0NSA9IFJlZmxlY3QuYXBwbHkodjc0NCx2Nix2
NzQzKTsKKyAgICBnYygpOworfQorbm9ERkcobWFpbik7Citub0ZUTChtYWluKTsKK3RyeSB7Citt
YWluKCk7Cit9IGNhdGNoIHsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNzk5OTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDctMTYgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBh
cHBsZS5jb20+CisKKyAgICAgICAgR3JhYiB0aGUgbG9jayBpbiBGVEw6OlRodW5rczo6a2V5Rm9y
U2xvd1BhdGhDYWxsVGh1bmsKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyNzk4OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODA2Mjc5MDE+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQm90aCBGVEw6OlRo
dW5rczo6a2V5Rm9yU2xvd1BhdGhDYWxsVGh1bmsgYW5kIEZUTDo6VGh1bmtzOjpnZXRTbG93UGF0
aENhbGxUaHVuaworICAgICAgICBib3RoIHRvdWNoIHRoZSB0aHVua3MgaGFzaCBtYXAuIEluIHIy
NzgwMzAsIHdoZW4gSSBhZGRlZCB0aGUgbG9jaywgSSBncmFiYmVkIGl0CisgICAgICAgIGluIGdl
dFNsb3dQYXRoQ2FsbFRodW5rLCBidXQgZm9yZ290IHRvIGFsc28gZ3JhYiBpdCBpbiBrZXlGb3JT
bG93UGF0aENhbGxUaHVuay4KKworICAgICAgICAqIGZ0bC9GVExUaHVua3MuaDoKKyAgICAgICAg
KEpTQzo6RlRMOjpUaHVua3M6OmtleUZvclNsb3dQYXRoQ2FsbFRodW5rKToKKwogMjAyMS0wNy0x
NSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBBbGlh
cyBKU0MgZ3JhcGggZHVtcGluZyBvcHRpb25zCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFRodW5rcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMVGh1bmtzLmgJKHJldmlzaW9uIDI3OTk5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMVGh1bmtzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg3LDYgKzg3LDcgQEAgcHVibGljOgog
CiAgICAgU2xvd1BhdGhDYWxsS2V5IGtleUZvclNsb3dQYXRoQ2FsbFRodW5rKE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjxKSVRUaHVua1B0clRhZz4gcHRyKQogICAgIHsKKyAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fbG9jayB9OwogICAgICAgICByZXR1cm4ga2V5Rm9yVGh1bmsobV9zbG93UGF0aENh
bGxUaHVua3MsIHB0cik7CiAgICAgfQogICAgIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>